मुझे एक समस्या है gulp.watch
.
TLDR: कैसे कहो gulp.watch
नए चक्र चलाने से पहले आवश्यक कार्यों को पूरा होने तक इंतजार करने के लिए नहीं?
कारण: मेरे तीन कार्य हैं: clean
, build
, तथा watch
। कार्य clean
निर्देशिका, कार्य को हटाता है build
एक ही डायरेक्टरी में फाइल तैयार करता है (clean
के लिए निर्भरता है build
)। कार्य watch
रन gulp.watch
निर्देशिका पर और फिर यह चलता है build
(वह चलाता है clean
)।
लेकिन कभी - कभी watch
कार्य नया चलता है build
पिछले से पहले build
समाप्त हो गया है और एक त्रुटि होती है: build
निर्देशिका और करने के लिए लिखना जारी है clean
निर्देशिका को हटाने की कोशिश करता है (बेशक, ENOTEMPTY
त्रुटि होती है)।
यह समस्या तब होती है जब मैं चलता हूं gulp watch
आदेश।
मेरे Gulpfile.js
:
var gulp = require("gulp");
var ts = require("gulp-typescript");
var tslint = require("gulp-tslint");
var rename = require("gulp-rename");
var del = require("del");
var tsProject = ts.createProject("tsconfig.json");
var tsSources = ["app/**/*.ts", "app/**/*.tsx"];
gulp.task("clean", function() {
return del(["built"]);
});
gulp.task("build", ["clean"], function() {
return gulp.src(tsSources)
.pipe(ts(tsProject)).js
.pipe(rename({extname: ".js"}))
.pipe(gulp.dest("built"));
});
gulp.task("tslint", ["clean"], function() {
return gulp.src(tsSources)
.pipe(tslint())
.pipe(tslint.report("msbuild", {
emitError: false,
summarizeFailureOutput: false
}));
});
gulp.task("watch", ["build", "tslint"], function() {
return gulp.watch(tsProject.config.filesGlob, ["build", "tslint"]);
});
gulp.task("default", ["build", "tslint"]);
उत्तर:
उत्तर № 1 के लिए 1निम्नलिखित कोड के उपयोग की सफाई के लिए: -
gulp.task("clean", function() {
del.sync([
path.join(__dirname, builtPath, "**/*.js"),
], {
force: true
});
});