如何创建使用gulp的node.js命令行实用程序

时间:2015-04-24 02:58:09

标签: node.js command-line-interface gulp

我一直在使用命令行工具,该工具本质上是gulp的自定义设置加上自定义gulp插件。出于各种原因,我希望能够从另一个Node应用程序或命令行中启动此过程。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:4)

Gulpfiles只是节点应用程序。您可以在节点应用程序中像任何模块一样要求它们:

var gulpfile = require('./gulpfile.js');

然后你可以调用gulpfile中定义的gulp任务:

gulp.start('someTask');

请注意,.start()将为deprecated in gulp 4.0

将它们放在一起,看起来像是:

var gulp = require('gulp');
require('./gulpfile');

gulp.start('someTask');

或者,您可以使用Node Child Process .spawn()方法来调用gulp,但这可能有点棘手。这是一个示例脚本:

'use strict';

var spawn = require('child_process').spawn;
var cwd = process.env.PWD || process.cwd();

var gulpProc = spawn('gulp', ['taskName'], {
  stdio: 'inherit',
  cwd: cwd
});

gulpProc.on('close', function (code) {
  process.exit(code);
});

// catch exceptions so node doesn't exit prematurely, leaving a runaway process
process.on('uncaughtException', function (err) {
   console.error(err.stack);
   gulpProc.kill('SIGHUP');
});