Grunt任务将文件内容注入另一个文件中的占位符

时间:2014-07-29 11:27:44

标签: javascript gruntjs

我有一个名为toInject.js的JavaScript文件。我希望通过grunt任务将此文件的内容注入另一个JavaScript文件,代替注释占位符/* === toInject.js placeholder === */。如果需要什么配置,可以执行哪些繁琐的任务?

grunt任务之前的两个文件都已运行:

toInject.js

alert('hello world');

myScript.js

function doSomething() {
    /* === toInject.js placeholder === */
}

grunt任务运行后对myScript.js的更改:

myScript.js

function doSomething() {
    alert('hello world');
}

1 个答案:

答案 0 :(得分:2)

您可以动态设置任务配置:

module.exports = function (grunt) {
  grunt.loadNpmTasks('grunt-replace');
  grunt.initConfig({
    replace: {
      dist: {
        options: {
          patterns: [{
              match: 'foo',
              replacement: 'bar'   
          }]
        },
        files: [
          {expand: true, flatten: true, src: ['src/index.html'], dest: 'build/'}
        ]
      }
   }
});

// register custom task
grunt.registerTask('replaceByFileContents', 'Description', function() {
  // get files 
  grunt.file.expand({cwd: 'src', '**/*.js'}).map(function(file) {
    // set config: replace 'index.js' by index.js content
    grunt.config.set('replace.dist.option.patterns', {
      match: file,
      replacement: grunt.file.read(file)
    });
    // run task
    grunt.task.run(replace:dist)
  })
});