web-dev-qa-db-ja.com

環境変数をgulpタスクとして設定するにはどうすればよいですか?

Gulpを実行して環境変数を設定するたびに、余分な引数NODE_ENV='production' gulpを入力したくありません。

私はむしろ環境変数を設定しますタスクを介してgulpから

これを達成する良い方法は何でしょうか?

58
chacham15
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'
    );
});
126
Elise Chant

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'])
16
talkol

package.jsonでスクリプトとして定義することもできます

{
  "name": "myapp",
  "scripts": {
    "gulp": "NODE_ENV='development' gulp",
    "gulp-build": "NODE_ENV='production' gulp"
  },
  ...
}

そして、npm run gulp-buildで実行します。これにはいくつかの利点があります

  • 引数を毎回入力するのではなく、簡単に定義できます
  • グローバルなgulpインストールは必要ありません(webpackなどの他のツールと同じ)
  • Gulpfileを変更せずに、異なる環境変数と(または)引数を使用して複数のバリアントを定義できます(上記のように、それぞれ開発および本番用のgulpおよびgulp-build)
12
rzr

次のように環境をセットアップできます。

// 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));
});
2
Xabby

デフォルトで設定して、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 の詳細

2
gonzalon