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

我一直在研究一个命令行工具,这个工具本质上是一个自定义的gulpconfiguration和一个自定义的gulp插件。 出于各种原因,我希望能够从另一个Node应用程序或命令行启动此进程。 有没有一个好的方法来做到这一点?

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

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

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

 gulp.start('someTask'); 

请注意, .start()将在gulp 4.0中被弃用

把它们放在一起,看起来像这样:

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

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

 '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'); });