如何将环境变量设置为 gulp 任务?
How can I set an environment variable as gulp task?
我不想每次 运行 gulp 设置环境变量时都输入额外的参数 NODE_ENV='production' gulp
。
我宁愿通过任务在gulp中设置环境变量。
实现此目标的好方法是什么?
尝试gulp-env
关于如何在 运行 nodemon 任务之前设置一些环境变量的快速示例:
// gulpfile.js
var gulp = require('gulp');
var nodemon = require('nodemon');
var env = require('gulp-env');
gulp.task('nodemon', function() {
// nodemon server (just an example task)
});
gulp.task('set-env', function () {
env({
vars: {
MONGO_URI: "mongodb://localhost:27017/testdb-for-british-eyes-only",
PORT: 9001
}
})
});
gulp.task('default', ['set-env', 'nodemon'])
gulp.task('set-dev-node-env', function() {
return process.env.NODE_ENV = 'development';
});
gulp.task('set-prod-node-env', function() {
return process.env.NODE_ENV = 'production';
});
像这样使用它:
gulp.task('build_for_prod', ['set-prod-node-env'], function() {
// maybe here manipulate config object
config.paths.src.scripts = config.paths.deploy.scripts;
runSequence(
'build',
's3'
);
});
你也可以默认设置一个,然后从json
文件中读取变量:
gulp.task('set-env', function () {
var envId = gutil.env.env;
if (!envId) {
envId = "dev";
}
genv({
file: "env." + envId + ".json"
});
});
默认情况下,这始终是 dev
环境,您可以调用它来设置另一个环境,如下所示:
gulp --env prod
更多 gulp-env
您也可以在 package.json
中将其定义为脚本
{
"name": "myapp",
"scripts": {
"gulp": "NODE_ENV='development' gulp",
"gulp-build": "NODE_ENV='production' gulp"
},
...
}
和运行它与npm run gulp-build
。这有一些好处
- 您可以轻松定义参数,而不必每次都输入它们
- 不需要全局 gulp 安装(其他工具也一样,比如 webpack)
- 您可以使用不同的环境变量和(或)参数定义多个变体,而无需更改 gulp 文件(正如您在上面看到的 - gulp 和 gulp-build for development和生产)
您可以按如下方式设置环境:
// Environment Setup
var env = process.env.NODE_ENV || 'development';
然后就可以使用环境对代码进行如下处理:
gulp.task('js',function(){
gulp.src(jsPath)
.pipe(browserify({debug: env === 'development'}))
.pipe(gulpif(env === 'production' , uglify()))
.pipe(gulp.dest(jsDest));
});
我不想每次 运行 gulp 设置环境变量时都输入额外的参数 NODE_ENV='production' gulp
。
我宁愿通过任务在gulp中设置环境变量。
实现此目标的好方法是什么?
尝试gulp-env
关于如何在 运行 nodemon 任务之前设置一些环境变量的快速示例:
// gulpfile.js
var gulp = require('gulp');
var nodemon = require('nodemon');
var env = require('gulp-env');
gulp.task('nodemon', function() {
// nodemon server (just an example task)
});
gulp.task('set-env', function () {
env({
vars: {
MONGO_URI: "mongodb://localhost:27017/testdb-for-british-eyes-only",
PORT: 9001
}
})
});
gulp.task('default', ['set-env', 'nodemon'])
gulp.task('set-dev-node-env', function() {
return process.env.NODE_ENV = 'development';
});
gulp.task('set-prod-node-env', function() {
return process.env.NODE_ENV = 'production';
});
像这样使用它:
gulp.task('build_for_prod', ['set-prod-node-env'], function() {
// maybe here manipulate config object
config.paths.src.scripts = config.paths.deploy.scripts;
runSequence(
'build',
's3'
);
});
你也可以默认设置一个,然后从json
文件中读取变量:
gulp.task('set-env', function () {
var envId = gutil.env.env;
if (!envId) {
envId = "dev";
}
genv({
file: "env." + envId + ".json"
});
});
默认情况下,这始终是 dev
环境,您可以调用它来设置另一个环境,如下所示:
gulp --env prod
更多 gulp-env
您也可以在 package.json
{
"name": "myapp",
"scripts": {
"gulp": "NODE_ENV='development' gulp",
"gulp-build": "NODE_ENV='production' gulp"
},
...
}
和运行它与npm run gulp-build
。这有一些好处
- 您可以轻松定义参数,而不必每次都输入它们
- 不需要全局 gulp 安装(其他工具也一样,比如 webpack)
- 您可以使用不同的环境变量和(或)参数定义多个变体,而无需更改 gulp 文件(正如您在上面看到的 - gulp 和 gulp-build for development和生产)
您可以按如下方式设置环境:
// Environment Setup
var env = process.env.NODE_ENV || 'development';
然后就可以使用环境对代码进行如下处理:
gulp.task('js',function(){
gulp.src(jsPath)
.pipe(browserify({debug: env === 'development'}))
.pipe(gulpif(env === 'production' , uglify()))
.pipe(gulp.dest(jsDest));
});