gpt4 book ai didi

javascript - 运行任务前的 Gulp 提示

转载 作者:太空宇宙 更新时间:2023-11-04 16:26:56 26 4
gpt4 key购买 nike

我想在运行底部的主要 build 任务之前提示用户。我正在将 gulp-prompt 视为一种解决方案,但无法弄清楚如何在任何任务运行之前实现它。我希望用户能够在运行任何内容之前取消整个 build 任务。那可能吗?任何建议将不胜感激。

不确定如何实现.pipe(prompt.confirm())

gulp.src('test.js')
.pipe(prompt.confirm())
.pipe(gulp.dest('dest'));

这是整个 gulp 文件

'use strict';

var gulp = require('gulp');
var config = require('../config');
var concat = require('gulp-concat');
var unzip = require('gulp-unzip');
var minimatch = require('minimatch');
var prompt = require('gulp-prompt');
var notify = require('gulp-notify');
var gutil = require('gulp-util');

/**
* Build Initial Project File Structure
* Docs: https://github.com/gulpjs/gulp/blob/master/docs/API.md#async-task-support
* Order of Build:
* 1. 'buildSass': Builds the ./sass directory in root
* 2. 'buildFonts': Extracts the fonts from .zip and places them in ./fonts directory
* 3. 'buildFontsCss': Extracts the fonts .css from .zip, concats all.css and places them in ./sass/typography/_fonts.scss directory
* 4. 'buildJS': Builds the ./js directory in root
* 5. 'moveCustomJSFiles': Places all js files (from wp _underscore theme) in proper directories
* 6. run 'gulp build' in terminal to run all 5 tasks in the proper order and create the initial setup for your project
*/

gulp.task('buildSass', function() {
var stream = gulp.src(config.build.sass.src)
.pipe(gulp.dest(config.build.sass.dest))
return stream
.on('end', function(){ gutil.log(gutil.colors.bgGreen('buildSass Compiled Successfully!')); });
});

gulp.task('buildFonts', ['buildSass'], function() {
var stream = gulp.src(config.build.fonts.src)
.pipe(unzip({
filter: function(entry) {
return minimatch(entry.path, config.build.fonts.include)
}
}))
.pipe(gulp.dest(config.build.fonts.dest))
return stream
.on('end', function(){ gutil.log(gutil.colors.bgGreen('buildFonts Compiled Successfully!')); });
});

gulp.task('buildFontsCss', ['buildFonts'], function() {
var stream = gulp.src(config.build.fonts.css.src)
.pipe(unzip({
filter: function(entry) {
return minimatch(entry.path, config.build.fonts.css.include)
}
}))
.pipe(concat(config.file.name.fontsSass))
.pipe(gulp.dest(config.build.fonts.css.dest))
return stream
.on('end', function(){ gutil.log(gutil.colors.bgGreen('buildFontsCss Compiled Successfully!')); });
});

gulp.task('buildJS', ['buildFontsCss'], function() {
var stream = gulp.src(config.build.js.src)
.pipe(gulp.dest(config.build.js.dest))
return stream
.on('end', function(){ gutil.log(gutil.colors.bgGreen('buildJS Compiled Successfully!')); });
});

gulp.task('moveCustomJSFiles', ['buildJS'], function() {
var stream = gulp.src(config.build.copyJS.src)
.pipe(gulp.dest(config.build.copyJS.dest))
return stream
.on('end', function(){ gutil.log(gutil.colors.bgGreen('moveCustomJSFiles Compiled Successfully!')); })
.pipe(notify({ message: 'Project Build was successful! ✅', onLast: true }));
});

gulp.task('build', ['buildSass', 'buildFonts', 'buildFontsCss', 'buildJS', 'moveCustomJSFiles']);

// TODO:
// put confirm before run

最佳答案

看看readline-sync 。我确信其他人会不同意,但在我看来,提示是同步使用时效果更好的东西之一。

编辑:

以下是根据 gulp v4 的代码执行此操作的方法:

const readlineSync = require('readline-sync');

gulp.task('build', gulp.series(
function(done) {
if (readlineSync.keyInYN('Do you want to build?')) {
return done();
}
console.log('Ok, not building.');
process.exit(1);
},
gulp.parallel(
'buildSass',
'buildFonts',
'buildFontsCss',
'buildJS',
'moveCustomJSFiles'
)
));

使用 gulp 版本 <4,您可以使用 run-sequence模块而不是 gulp.series:

const readlineSync = require('readline-sync');
const runSequence = require('run-sequence');
gulp.task('build-prompt', function(done) {
if (readlineSync.keyInYN('Do you want to build?')) {
return done();
}
console.log('Ok, not building.');
process.exit(1);
});

gulp.task('build', function(callback) {
runSequence(
'build-prompt',
[
'buildSass',
'buildFonts',
'buildFontsCss',
'buildJS',
'moveCustomJSFiles'
],
callback
);
});

关于javascript - 运行任务前的 Gulp 提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40141287/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com