【问题标题】:How stop gulp after doing the task?完成任务后如何停止吞咽?
【发布时间】:2019-03-26 23:54:13
【问题描述】:

我需要帮助,我使用 gulp4 并且有一个任务 build scss:

export const Style = () => src(path.style.src)
    .pipe(sourcemaps.init())
    .pipe(postcss([
        require('postcss-nested'),
        require('autoprefixer')
     ], {syntax: require('postcss-scss')}))
     .pipe(concat('style.min.css'))
     .pipe(sourcemaps.write('../maps'))
     .pipe(dest(path.style.dist))
     .pipe(browserSync.reload({stream: true}));

并观看此任务的文件:

export const WatchFiles = () =>
    watch(path.style.watch, Style);

当我执行默认任务(开发任务)时,这非常有效。

let RunServer = parallel(
    WatchFiles,
    Serve
);

let Build = series(
    Style,
    RunServer
);

另外,以防万一,我会添加一个服务器任务,也许会有所帮助

export function Serve(done) {
    browserSync.init({
        server: {
            baseDir: path.build,
            index: 'index.html'
        },
        ghostMode: true,
        notify: false,
        host: '0.0.0.0',
        port: 9000
    });

    done();
};

但如果我只是执行“样式”任务,它不会停止观看我的文件,也不会完成任务。 如何在没有任务“WatchFiles”的情况下执行任务时停止构建器?

terminal

link gitlab project

【问题讨论】:

  • 我自己解决了问题,我给watch函数加了一个回调

标签: sass gulp browser-sync postcss gulp-4


【解决方案1】:

我认为您的样式函数中的回调(完成)可以解决停止问题。

export const Style = (done) => {
  src(path.style.src)
    .pipe(sourcemaps.init())
    .pipe(postcss([
      require('postcss-nested'),
      require('autoprefixer')
    ], { syntax: require('postcss-scss') }))
    .pipe(concat('style.min.css'))
    .pipe(sourcemaps.write('../maps'))
    .pipe(dest(path.style.dist))
    .pipe(browserSync.reload({ stream: true }));

    done();
}

【讨论】:

  • 很遗憾,这对我没有帮助。
  • 您运行gulp Style 后任务开始但未完成?
  • 是的,她只是呆在终端里,好像继续监视她一样。
  • 我自己解决了这个问题,我为watch函数添加了一个回调。感谢您的提示
猜你喜欢
  • 2020-08-12
  • 1970-01-01
  • 2017-01-26
  • 1970-01-01
  • 1970-01-01
  • 2021-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多