如何在 gulp 4 上将 gulpfile 任务分割成不同的文件,而无需任何像 gulp-hub 这样的包?

2024-03-15

我正在尝试将 gulpfile 任务拆分为不同的文件。我之前做过并将其添加到主 gulpfile 中,只需添加require('./path/taskName')但这在 gulp 4 中不起作用

这是我的styles.js file:

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 file

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

您仍然可以这样做,但以不同的方式:

  1. 使用 require-dir 包(或者您需要 index.js 文件,在其中导出所有任务:watch、html、样式):

    // gulpfile.js
    var tasksNotInAGulpfile = require('require-dir)('./gulp/tasks');
    exports.watch = tasksNotInAGulpfile['watch'].watch
    exports.styles = tasksNotInAGulpfile['styles].styles
    ...
    
  2. 最适合您的解决方案:

    // 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 看到你的任务,必须使用它们导出模块.导出 or exports就像前面的例子一样。

让我知道这是否有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 gulp 4 上将 gulpfile 任务分割成不同的文件,而无需任何像 gulp-hub 这样的包? 的相关文章

随机推荐