我有一个由Grunt构建的HTML5 + JS代码。我目前正在设置开发和生产环境。
有没有办法将参数从Grunt传递给JS代码?这样我就可以传递开发/生产服务器的IP,这取决于我构建的那个。
顺便说一句,我注意到Grunt选项允许定义Grunt参数(http://gruntjs.com/api/grunt.option),但是如何在JS代码中使用它们?
如果为JS项目设置两个环境有更好的做法,请告诉我。
谢谢!
答案 0 :(得分:0)
有几个插件可以帮助你。
让我们以includereplace为例
npm install grunt-include-replace --save-dev
您可以在Gruntfile中定义要替换的变量
然后链接到您要运行任务的文件。
如果您想通过CLI添加值,可以按照建议使用grunt.option
API。
Gruntfile.js
module.exports = function(grunt) {
var ip = grunt.option('ip') || '127.0.0.1';
grunt.initConfig({
includereplace: {
dev: {
options: {
globals: {
ip: ip
},
},
src: 'file.js',
dest: 'dest/'
},
prod: {
options: {
globals: {
ip: ip
},
},
src: 'file.js',
dest: 'dest/'
}
}
});
grunt.loadNpmTasks('grunt-include-replace');
grunt.registerTask('dev', ['includereplace:dev']);
grunt.registerTask('prod', ['includereplace:prod']);
};
file.js
var ip = '@@ip';
我分离了dev和prod配置,因此您可以为每个环境添加不同的变量。
运行grunt prod --ip=XXX.XXX.XXX.XXX
会在dest
文件夹中生成一个带有新值的新文件。
如果您不喜欢@@
占位符约定,则可以通过Custom Options API轻松更改它。