Есть ли способ последовательно выполнить процесс watcher.on
и другие задачи наблюдения?
Я использую метод on
экземпляра chokidar gulp.watch
, чтобы получить только имяотредактированного файла.
function sass_compile(path) {
return src("./style/**/*.scss")
.on("end", () => {
console.log("completed" + path + "!");
})
.pipe(sass())
.pipe(dest("css"))
}
function reload(done) {
browserSync.reload();
done();
}
exports.default = function () {
browserSync.init();
watch("./style/**/*.scss").on("change", (path) => {
sass_compile(path);
console.log("completed?");
});
watch(["./style/**/*.scss", "./js/**/*.js", "./tests/**/**/*.spec.js"], reload);
};
Если вы редактируете файл scss в этом состоянии, журнал отображается в терминале следующим образом. Это указывает на то, что перезагрузка может начаться до завершения компиляции SCSS.
[Browsersync] Serving files from: ./
completed?
[03:18:58] Starting 'reload'...
[03:18:58] Finished 'reload' after 1.3 ms
completedsass\_variables.scss!
[Browsersync] Reloading Browsers...
Поскольку это условие небезопасно, я надеюсь, что приведенный выше вывод журнала будет улучшен следующим образом:
[Browsersync] Serving files from: ./
completed?
completedsass\_variables.scss!
[03:18:58] Starting 'reload'...
[03:18:58] Finished 'reload' after 1.3 ms
[Browsersync] Reloading Browsers...
Эта проблема сбивает меня с толку, потому что одна задача использует экземпляр chokidar. Как этого достичь?
Мой package.json выглядит так:
{
"name": "",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"browser-sync": "^2.26.7",
"gulp": "^4.0.2",
"gulp-sass": "^4.0.2",
}
}