Gulpを実行して環境変数を設定するたびに、余分な引数NODE_ENV='production' gulp
を入力したくありません。
私はむしろ環境変数を設定しますタスクを介してgulpから。
これを達成する良い方法は何でしょうか?
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'
);
});
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'])
package.json
でスクリプトとして定義することもできます
{
"name": "myapp",
"scripts": {
"gulp": "NODE_ENV='development' gulp",
"gulp-build": "NODE_ENV='production' gulp"
},
...
}
そして、npm run gulp-build
で実行します。これにはいくつかの利点があります
次のように環境をセットアップできます。
// 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));
});
デフォルトで設定して、json
ファイルから変数を読み取ることもできます。
gulp.task('set-env', function () {
var envId = gutil.env.env;
if (!envId) {
envId = "dev";
}
genv({
file: "env." + envId + ".json"
});
});
これはデフォルトでは常にdev
envであり、次のように別のenvを設定して呼び出すことができます。
gulp --env prod
gulp-env の詳細