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 回答