如何创建使用 gulp 的 node.js 命令行实用程序
How do I create a node.js command line utility that uses gulp
我一直在开发一个命令行工具,它本质上是 gulp 的自定义设置加上一个自定义 gulp 插件。出于各种原因,我希望能够从另一个 Node 应用程序或命令行启动此过程。有什么好的方法吗?
Gulpfiles 只是节点应用程序。您可以像任何模块一样在您的节点应用程序中要求它们:
var gulpfile = require('./gulpfile.js');
然后您可以调用 gulp 文件中定义的 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');
});
我一直在开发一个命令行工具,它本质上是 gulp 的自定义设置加上一个自定义 gulp 插件。出于各种原因,我希望能够从另一个 Node 应用程序或命令行启动此过程。有什么好的方法吗?
Gulpfiles 只是节点应用程序。您可以像任何模块一样在您的节点应用程序中要求它们:
var gulpfile = require('./gulpfile.js');
然后您可以调用 gulp 文件中定义的 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');
});