javascript - 如何在没有像 gulp-hub 这样的包的情况下将 gulpfile 任务拆分为 gulp 4 上的不同文件?
问题描述
我正在尝试将我的 gulpfile 任务拆分为不同的文件。我之前做过,只需添加即可将其添加到主 gulpfilerequire('./path/taskName')
但这在 gulp 4 中不起作用
这是我的styles.js
文件:
var gulp = require('gulp'),
postcss = require('gulp-postcss'),
autoprefixer = require('autoprefixer'),
cssvars = require('postcss-simple-vars'),
nestingCss = require('postcss-nested'),
cssImport = require('postcss-import');
function styles(){
console.log('Changes happened in CSS file');
return gulp.src('./public/styles/style.css')
.pipe(postcss([cssImport, cssvars, nestingCss, autoprefixer]))
.pipe(gulp.dest('./public/temp/styles'));
}
exports.styles = styles;
这是我的watch.js
文件
var gulp = require('gulp'),
browserSync = require('browser-sync').create();
function html(done){
console.log('Changes happened in html');
browserSync.reload();
done();
}
function cssInject(){
return gulp.src('./public/temp/styles/style.css')
.pipe(browserSync.stream());
}
function watch(done){
browserSync.init({
server: {
baseDir: "public"
}
});
gulp.watch('./public/**/*.html', html);
gulp.watch('./public/styles/**/*.css', gulp.series(styles,cssInject));
done();
}
exports.html = html;
exports.watch = watch;
我将此添加到主 gulpfile
require('./gulp/tasks/styles.js');
require('./gulp/tasks/watch.js');
但这不起作用。它显示错误
$ gulp watch
[20:27:30] Using gulpfile ~\Desktop\gulp-website\gulpfile.js
[20:27:30] Task never defined: watch
[20:27:30] To list available tasks, try running: gulp --tasks
解决方案
您仍然可以这样做,但采用不同的方式:
使用 require-dir 包(或者您需要导出所有任务的 index.js 文件:watch、html、styles):
// gulpfile.js var tasksNotInAGulpfile = require('require-dir)('./gulp/tasks'); exports.watch = tasksNotInAGulpfile['watch'].watch exports.styles = tasksNotInAGulpfile['styles].styles ...
最简单的解决方案:
// Main gulpfile (gulpfile.js) var stylesTasks = require('./gulp/tasks/styles.js'); var watchTasks = require('./gulp/tasks/watch.js'); exports.styles = stylesTasks.styles; exports.watch = watchTasks.watch; exports.html = watchTasks.html;
要让 gulp 看到您的任务,它们必须使用module.exports或export像前面的示例一样导出。
让我知道这是否有帮助。
推荐阅读
- arrays - 如何通过将字符串与 Dart 中的数字连接来动态调用数组
- r - 如何按时间顺序排列 x 轴(在图表中)?
- sql - 创建具有多个条件的临时表
- javascript - React:当我的函数返回特定值时如何禁用按钮
- javascript - Rails 上的 Web 响应式页面
- excel - 24小时Excel时差
- c++ - 使用键盘和鼠标以连续/流动的方式移动相机?
- python - 如何在 Pandas 中对具有相同名称的不同行中的值进行分组?
- java - java - 如何从Java中的JComboBox中获取所选项目并将其与字符串进行比较?
- android - 如何仅为我的圆圈图标设置不同的大小?(安卓)