Grunt-string-replace无效

时间:2016-07-31 23:10:16

标签: gruntjs grunt-string-replace

我有一个app文件夹,我希望在http://localhost:8000http://fomoapp-melbourne.rhcloud.com两个文件中替换companies-list.component.ts events-list.component.ts。我正在尝试使用grunt-replace-string插件,它似乎成功运行绿色Done结果,没有错误,但没有替换发生。

以下是Gruntfile.js的样子:

module.exports = function(grunt){

[
    'grunt-string-replace',
].forEach(function(task){
    grunt.loadNpmTasks(task);
});

// configure plugins
grunt.initConfig({
    'string-replace': {
      dist: {
        files: {
          './app/': ['companies-list.component.ts','events-list.component.ts'],
        },
        options: {
          replacements: [{
            pattern: 'http://localhost:8000',
            replacement: 'http://fomoapp-melbourne.rhcloud.com',
          }]
        }
      }
    },
});

// register tasks
    grunt.registerTask('default', ['string-replace']);
};

1 个答案:

答案 0 :(得分:2)

Grunt Files object用于指定源文件到目标文件的映射。此映射的目的是告诉Grunt在源代码中获取文件的内容,对内容执行某些操作,然后将响应写入目标文件夹中的新文件。

我希望Grunt能够在您的配置中重写app /目录中的两个文件。这不会起作用。我敢打赌,如果你使用详细选项grunt --verbose运行grunt,你的输出将包含以下内容:

Files: [no src] -> ./app/

这是因为Grunt无法找到源文件,因为您需要指定它们的相对路径。

由您决定如何构建应用程序,但您可能希望在app /下有一个src /文件夹和一个dist /文件夹。如果您选择build your files objects dynamically,您的配置可能如下所示:

files: [{
    expand: true,
    cwd: './app/src/',
    dest: './app/dest/',
    src: ['companies-list.component.ts', 'events-list.component.ts']
}]

此外,documentation for grunt-string-replace州:

  

如果模式是字符串,则只会替换第一个匹配项,如String.prototype.replac e所述。

这意味着如果您希望替换多个字符串实例,则必须提供Regular Expression literal。例如:

replacements: [{
    pattern: /http:\/\/localhost:8000/g,
    replacement: 'http://fomoapp-melbourne.rhcloud.com'
}]