在创建我自己的自定义yeoman生成器时,如何在Gruntfile中使用提示中的变量?

时间:2014-08-22 08:41:57

标签: javascript templating yeoman-generator

建造自耕农发电机时。给定,我的index.js包含:

...
prompting: function () {
    var done = this.async();

    // have Yeoman greet the user
    this.log(this.yeoman);

    var questions = [
        {
            name: 'value',
            message: 'Give me some value?'
        },
    ];

    this.prompt(questions, function (answers) {
        this.value = answers.value;
        done();
    }.bind(this));
},
...

writing: function () {
    this.copy("_Gruntfile.js", "Gruntfile.js");
}
...

我回答提示'给我一些价值?'是“测试”。如何使用_Gruntfile中的提示值生成:

 uglify: {
       dist: {
         files: {
           '<%= yeoman.dist %>/test.min.js': ['<%= yeoman.dist %>/test.js']
         }
       }
    },

我试过了:

uglify: {
       dist: {
         files: {
           '<%= yeoman.dist %>/<%% value%>.min.js': ['<%= yeoman.dist %>/<%value%>.js']
         }
       }
    },

uglify: {
       dist: {
         files: {
           '<%= yeoman.dist %>/<%= value%>.min.js': ['<%= yeoman.dist %>/<%= value%>.js']
         }
       }
    },

让生成器用“test”替换<%% value%><%= value%>但是在运行时没有任何反应。第二个选项在我的_bower.json中使用时有效。例如"name": "<%= value%>"变为"name": "test"

1 个答案:

答案 0 :(得分:1)

this.copy()只是复制文件,您应该使用this.template()来解析它:

this.template("_Gruntfile.js", "Gruntfile.js");