繁体   English   中英

根据 NODE_ENV 设置吞咽任务

[英]Set gulp tasks depending on NODE_ENV

有没有办法根据设置的NODE_ENV指定NODE_ENV任务?

例如在我的package.json文件中,我有类似的内容:

"scripts": {
    "start": "gulp"
 }

我有多个gulp任务

gulp.task('development', function () {
   // run dev related tasks like watch 
});

gulp.task('production', function () {
   // run prod related tasks
});

如果我设置NODE_ENV=production npm start ,我可以指定只运行gulp production吗? 或者有没有更好的方法来做到这一点?

在默认的 gulp 任务中使用单个三元组,您可以使用以下内容:

gulp.task('default',
  [process.env.NODE_ENV === 'production' ? 'production' : 'development']
);

然后,您将能够在package.json保留单个gulp命令,并像您说的那样使用它:

NODE_ENV=production npm start

您的NODE_ENV变量的任何其他值都将启动development任务。


你可以使用一个对象,允许多个任务,避免当然做一个高级的用法if树木地狱:

var tasks = {
  development: 'development',
  production: ['git', 'build', 'publish'],
  preprod: ['build:preprod', 'publish:preprod'],
  ...
}

gulp.task('default', tasks[process.env.NODE_ENV] || 'fallback')

请记住,当提供一系列任务时,它们将并行运行。

让您的第一个 gulp 任务根据process.env.NODE_ENV值运行其他 gulp 任务。

gulp.task('launcher', function(){
  switch (process.env.NODE_ENV){
    case 'development':
      // Run dev tasks from here
      break;
    case 'production':
      // Run prod tasks
      break;
  }
});

另一种简单的方法可能是

gulp.task('set-dev-env', function () {
    return process.env.NODE_ENV = 'development';
});

gulp.task('set-prod-env', function () {
    return process.env.NODE_ENV = 'production';
});

gulp.task('development', ['set-dev-env'], function () {
    // your code
});

gulp.task('production', ['set-prod-env'], function () {
    // your code
});

运行gulp productiongulp development

您也可以使用gulp-mode插件。

用法:

    var gulp = require('gulp');
    var mode = require('gulp-mode')();
    var uglify = require('gulp-uglify');

    gulp.task('default', function() {
      gulp.src('src/*.js')
          .pipe(mode.production(uglify()))
          .pipe(gulp.dest('dist'));
    });

或者

    var isProduction = mode.production();
    if (isProduction) {
        console.log("Production mode");
    }

开始构建为:

gulp build --production

对于“npm run-script”用例:

package.json :-
    "scripts": {
        "devbld": "gulp build --development",
        "prodbld": "gulp build --production",
      }

    $ npm run devbld
    $ npm run prodbld
if (process.env.NODE_ENV === "production")
  // whatever

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM