[英]Gruntfile.js with “require” function and passing parameters
我有一个Grunt文件( Gruntfile.js
),用于构建angularjs组件。 我使用外部javascript文件( build.config.js
)定义所需的文件和输出目录。
module.exports = {
build_dir: 'build',
app_files: {
src: ['src/**/*.js','!src/**/*.spec.js'],
//...
},
vendor_files: {
js: [ /* vendor files like jquery, bootstrap, etc... */ ]
}
}
和我的Gruntfile.js这样称呼它
module.exports = function(grunt) {
/* some code */
var userConfig = require('./build.config.js');
var taskConfig = {
pkg: grunt.file.readJSON("package.json"),
/* more code */
},
/* yet more code */
}
在我的package.json中,出于i18n的目的,我指定了一个locale
变量,可以将它像在'<%= pkg.locale %>'
内, taskConfig
在taskConfig
部分中使用。 现在,在build.config.js
中指定了一些javascript文件,我需要根据指定的语言环境来加载这些文件,但是我不知道如何获取此变量,因为在build.config.js
中没有grunt
对象可以读取package.json
文件。 因此,我无法在build.config.js
:
vendor_files: {
js: [ 'vendor/foo/bar.<%= pkg.locale %>.js' ]
没有将build.config.js
中的所有内容都放回Gruntfile.js
有什么办法可以实现?
是。 Grunt模板仅指向Grunt配置本身。
因此对于配置:
grunt.initConfig({
pkg: {
locale: 'en'
}
});
模板<%= pkg.locale %>
将等于字符串'en'
。
pkg: grunt.file.readJSON("package.json")
只是将您的package.json
文件作为javascript对象读取,并分配给配置中的pkg
属性。
您可以自由地构建该配置对象,但是可以声明性地读取/解析JSON文件,或者require
其他脚本来导出javascript对象(如./build.config.js
看上去那样)。
还考虑grunt.config('pkg.locale', 'en');
用于在初始化配置后覆盖单个配置值: http : //gruntjs.com/api/grunt.config
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.