我有一个Gruntfile.js
,其中我有一个重复多次的字符串。因此,我决定继续使用变量,因此我介绍了var file_path
。
module.exports = function(grunt) {
'use strict';
var today = new Date();
var year = today.getFullYear();
var file_path = 'here/there/';
grunt.initConfig({
jshint: {
all: [
'<%= file_path %>/assets/js/app.js',
'<%= file_path %>/admin/assets/js/admin.js',
]
},
});
require('load-grunt-tasks')(grunt);
grunt.registerTask('default', ['jshint']);
};
但是它不起作用。引发以下错误:
Running "jshint:all" (jshint) task
Warning: An error occurred while processing a template (file_path is not defined). Use --force to continue.
当我将<%= file_path %>
更改为<%= this.file_path %>
时,该过程开始运行,但是路径无法解析。
Running "jshint:all" (jshint) task
>> 0 files linted. Please check your ignored files.
对于其他已注册的任务,请确认No source files were found.
。
顺便说一句,我将year
纳入了另一项工作正常的任务中。附有屏幕截图:
因此,我在jshint
任务中尝试了相同的语法,如下所示:
all: [
file_path + 'assets/js/app.js',
file_path + 'admin/assets/js/admin.js',
]
产生的结果是完全不删除任何文件。
但是我尝试了以下console.log,grunt.initConfig()
的外部:
grunt.log.write(file_path + 'assets/js/app.js');
它正在显示文件的正确串联路径:here/there/assets/js/app.js
。
如何在Gruntfile中合并变量?
答案 0 :(得分:1)
如果您想像这样使用Template strings:
all: [
'<%= file_path %>/assets/js/app.js',
'<%= file_path %>/admin/assets/js/admin.js',
]
然后将您的 Gruntfile.js 配置为此:
module.exports = function(grunt) {
'use strict';
var today = new Date();
var year = today.getFullYear();
grunt.initConfig({
file_path: 'here/there',
// ^-- Note: there is no trailing forward slash.
jshint: {
all: [
'<%= file_path %>/assets/js/app.js',
'<%= file_path %>/admin/assets/js/admin.js',
]
}
});
require('load-grunt-tasks')(grunt);
grunt.registerTask('default', ['jshint']);
};