我有一个由Grunt构建的HTML5 + JS代码。我目前正在建立一个开发环境和一个生产环境。我可以将参数从Grunt传递给Javascript吗?
有没有办法将参数从Grunt传递给JS代码?这样我就可以传递开发/生产服务器的IP,具体取决于我正在构建哪一个。
顺便说一下,我注意到Grunt选项允许定义Grunt参数(http://gruntjs.com/api/grunt.option),但是如何在JS代码中使用它们?
如果有更好的方法来为JS项目设置两个环境,请让我知道。
谢谢!
我有一个由Grunt构建的HTML5 + JS代码。我目前正在建立一个开发环境和一个生产环境。我可以将参数从Grunt传递给Javascript吗?
有没有办法将参数从Grunt传递给JS代码?这样我就可以传递开发/生产服务器的IP,具体取决于我正在构建哪一个。
顺便说一下,我注意到Grunt选项允许定义Grunt参数(http://gruntjs.com/api/grunt.option),但是如何在JS代码中使用它们?
如果有更好的方法来为JS项目设置两个环境,请让我知道。
谢谢!
有几个插件可以帮助你。例如
以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';
我分开的开发和生产线配置,这样你就可以添加不同的变量,每个环境。
正在运行grunt prod --ip=XXX.XXX.XXX.XXX
会在dest
文件夹中产生一个新文件,并带有新值。
如果您不喜欢@@
占位符约定,您可以通过Custom Options API轻松更改它。
这将是一个好主意,看看这个问题:http://stackoverflow.com/questions/12401998/have-grunt-generate-index-html-for-different-setups – kartikluke