我在我的gruntfile中的module.exports
顶部设置了模板:
// Self calling so we get a value.
// Expects only a single schema in the schema folder.
grunt.config.set('schemaPath', function() {
console.log(grunt.file.expand('schema/*.json')[0]);
return grunt.file.expand('schema/*.json')[0];
}());
console.log(grunt.config.get('schemaPath'));
稍后,在配置命令时,我想使用模板字符串,如下所示:
stripJsonComments: {
currentSchema: {
files: {
'build/<%= schemaPath %>': '<%= schemaPath %>'
}
}
}
但是我收到了一个错误:An error occurred while processing a template (Cannot read property 'src' of undefined).
在调查之后,模板字符串似乎没有展开而是被删除了。
答案 0 :(得分:2)
您无法使用模板作为属性名称,因此无法获得处理。所以'build/<%= schemaPath %>': '<%= schemaPath %>'
无法工作。
我建议您查看task configuration的另一个变体,您可以在其中明确定义src
和dest
属性,然后使用值模板。
如果您需要要查找多个src-dest文件映射,您可以使用files array format。它看起来像这样:
module.exports = function(grunt) {
grunt.initConfig({
concat: {
main: {
files: [
{src: ['<%= file1 %>', '<%= file2 %>'], dest: '<%= destPath %>'},
]
},
}
});
grunt.config.set('file1', 'foo.js');
grunt.config.set('file2', 'bar.js');
grunt.config.set('destPath', 'dest/baz.js');
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.registerTask('default', ['concat']);
};