如何使用grunt替换副本上的模板变量?

时间:2014-04-25 13:54:02

标签: javascript node.js gruntjs lodash

我正在使用load-grunt-configgrunt-contrib-copy,并且我试图通过“过程”来获取复制任务来替换某些模板标签。选项。

我知道可以替换模板标签(来自grunt-contrib-copy文档),但是我无法让它工作。我尝试做的是替换&#34; style.css&#34;中的字符串<%= init.project.name %>。使用相同名称的模板变量(由用户使用grunt-prompt输入)。

在副本上,我希望grunt用style.css文件中的模板变量替换它在内存中的值。但是当我使用下面的代码时,它不会这样做。有谁知道我做错了什么?

Grunt复制任务

// -------------------------------------
// Grunt copy
// -------------------------------------

module.exports = {

  // ----- Copy files for initialization (selected with grunt prompt) ----- //

  init: {
    files: [{
      cwd: 'init/php/templates',
      src: '<%= init.php.templates %>',
      dest: 'src/php/templates',
      expand: true
    }, {
      cwd: 'init/php/includes',
      src: '<%= init.php.includes %>',
      dest: 'src/php/includes',
      expand: true
    }, {
      cwd: 'init/js',
      src: '<%= init.scripts %>',
      dest: 'src/js',
      expand: true
    }, {
      cwd: 'init/css',
      src: 'style.css',
      dest: 'src/css',
      expand: true,
      options: {
        process: function (content, srcpath) {
          return grunt.template.process(content);
        }
      }
    }]
  }
};

Css文件(wordpress)

/*
Theme Name: <%= init.project.name %>
Theme URI: 
Description: Description
Version: 1.0
Author: Name
Author URI: uri
Tags: Tags
*/

我已尝试this回答,但processContent已由process取代,此答案似乎不再有效(即使更改processContentprocess)。

1 个答案:

答案 0 :(得分:5)

您将选项放在错误的位置,将其移出并且应该可以正常工作。

module.exports = function (grunt) {
  return {
      init: {
        files: [{
          cwd: 'init/php/templates',
          src: '<%= init.php.templates %>',
          dest: 'src/php/templates',
          expand: true
        }, {
          cwd: 'init/php/includes',
          src: '<%= init.php.includes %>',
          dest: 'src/php/includes',
          expand: true
        }, {
          cwd: 'init/js',
          src: '<%= init.scripts %>',
          dest: 'src/js',
          expand: true
        }, {
          cwd: 'init/css',
          src: 'style.css',
          dest: 'src/css',
          expand: true
        }],
        options: {
          process: function (content, srcpath) {
            return grunt.template.process(content);
          }
        }
      }
  }
};

已更新以适合load-grunt-config