在 Gruntfile.js 中使用变量
Using variables in Gruntfile.js
我有一个 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,outside of grunt.initConfig()
:
grunt.log.write(file_path + 'assets/js/app.js');
它显示文件的正确串联路径:here/there/assets/js/app.js
。
如何将变量合并到 Gruntfile 中?
如果您想像这样使用 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']);
};
我有一个 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,outside of grunt.initConfig()
:
grunt.log.write(file_path + 'assets/js/app.js');
它显示文件的正确串联路径:here/there/assets/js/app.js
。
如何将变量合并到 Gruntfile 中?
如果您想像这样使用 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']);
};