更新:
我发布了 npm 包gulp-interactive。
只需安装它:
npm install --save-dev gulp-interactive
并在gulpfile.js中使用它:
require('gulp-interactive')();
然后在shell中:
$ gulp prompt
原始答案:
我实现了特殊的 gulp 任务prompt。
先安装inquirer:
npm install --save-dev inquirer
这是一个有用的包,可以让我们要求开发者输入任务名称。
接下来执行任务:
gulp.task('prompt', function (cb) {
var promptedTask;
function startPrompt() {
promptedTask = undefined;
gulp.start('prompt');
}
function onTaskEnd(event) {
setTimeout(function () {
if (event && promptedTask && event.task === promptedTask) {
gulp.removeListener('task_stop', onTaskEnd);
gulp.removeListener('task_err', onTaskEnd);
gulp.removeListener('task_not_found', onTaskEnd);
startPrompt();
}
});
}
gulp.on('task_stop', onTaskEnd);
gulp.on('task_err', onTaskEnd);
// replace gulp default listener for 'task_not_found' because it calls process.exit(1)
gulp.removeAllListeners('task_not_found');
gulp.on('task_not_found', function (err) {
console.log('Task \'' + err.task + '\' is not in your gulpfile');
onTaskEnd(err);
});
var inquirer = require('inquirer');
inquirer.prompt([{ type: 'input', name: 'task', 'message': 'Enter gulp task name:' }])
.then(function (answers) {
promptedTask = answers.task || 'prompt';
cb();
gulp.start(promptedTask);
});
});
现在您可以通过执行gulp prompt 来启动提示。
使用此优化将我的 Docker for Mac 容器内的 Web 应用程序的构建时间从 50 秒减少到 15 秒(我相信这是因为文件系统操作缓慢)。当直接在我的 Mac 上运行构建时,构建时间从 13 秒减少到 6 秒。