3

ディレクトリとそのサブディレクトリにあるすべてのファイルで、grunt-string-replace を使用して文字列を置き換えたい

たとえば、これらすべてのファイルで:

dist/templates_and_modules/templates/template1/template1.php
dist/templates_and_modules/templates/template2/template2.php
dist/templates_and_modules/modules/module1.php
dist/templates_and_modules/modules/module1.php

交換したい

/*remove->*/

と:

/*

/*<-remove*/

*/

明示的に定義されたファイルを使用すると、次のように機能します。

strrep: {
    dist: {
        files: {
            '<%= yeoman.dist %>/templates_and_modules/templates/template1/template1.php':
            '<%= yeoman.dist %>/templates_and_modules/templates/template1/template1.php'
         },
         options: {
             replacements: [
                 {
                     pattern: '/*remove->*/',
                     replacement: '/*'
                 },

                 {
                     pattern: '/*<-remove*/',
                     replacement: '*/'
                 }
                ]
            }
        }
    }

しかし、ディレクトリ内のすべてのファイルで動作させることはできません。

4

2 に答える 2

7

試行錯誤の結果、これが機能することがわかりました。

files: {
    './': 'dist/**/*.*'
}

しかし、私は理解していません、なぜですか。

于 2013-07-10T14:05:29.703 に答える
5

グロビングパターンを使用して、処理するファイルとフォルダーを定義できるはずです。

タスクの構成のファイルセクションも参照してください。

このようなもの:

  src: [ '<%= yeoman.app %>/templates_and_modules/**/*.php' ]
  dest: '<%= yeoman.dist %>/templates_and_modules/'

ただし、そのプラグインは、ファイルを新しい宛先にコピーするように設計されているようであり、実行しようとしているようにその場で変更するのではありません。それらを新しい場所にコピーする完全な例を次に示します。

module.exports = function(grunt) {
  grunt.initConfig({
    'string-replace': {
      dist: {
        src: './app/mylibs/**/*.js',
        dest: './dist/mylibs/',
        options: {
          replacements: [{
            pattern: 'old',
            replacement: 'new'
          }]
        }
      }
    }
  });

  grunt.loadNpmTasks('grunt-string-replace');
  grunt.registerTask('default', ['string-replace']);
};
于 2013-07-05T20:19:30.533 に答える