用gulp开发的过程中,也会遇到想vue这样的需要通过环境变量来控制项目的情况,通过npm的run命令,我们可以将环境变量传递给项目中的js、html等。具体方法如下:
一:安装 cross-env
npm install cross-env -d
二:package.json中配置scripts:
"scripts": {
"build": "cross-env NODE_ENV=production gulp build",
"serve": "cross-env NODE_ENV=test gulp",
"test": "cross-env NODE_ENV=test gulp build",
"trail": "cross-env NODE_ENV=trail gulp build"
},
build是在gulpfile.js里面定义的方法,其中在less阶段执行的第三步中的函数set_env(process.env.NODE_ENV)
// ...
// 编译less文件
gulp.task('less', function () {
set_env(process.env.NODE_ENV)
// ...
})
// ...
gulp.task('build', gulp.series('less', 'cssmove', 'imagemin', 'html','js'))
三:gulpfile.js中生成环境变量文件env.js
var fs = require('fs');
var env = 'test';
function set_env(type){
env = type || env;
// 生成env.js文件,用于开发页面时,判断环境
fs.writeFile("./src/js/env.js", 'function ENV (){ return "' + env + '"};', function(err){
err && console.log(err);
});
}
set_env(process.env.NODE_ENV)
这样就可以在js或html文件中引入并使用环境变量了。