Gulp 4 只看了gulp.series 只运行 一次
Gulp 4 watch gulp.series only run one time
我从 Gulp 3 更改为 Gulp 4,但我无法让它工作。
当我 运行 gulp
并保存 js 或 scss 文件时,它会成功创建一个新文件。如果我再次保存,则不会发生任何事情。我的猜测是我不明白 gulp.series
是如何工作的。只有 运行 个。
var gulp = require('gulp');
var concat = require('gulp-concat');
var sass = require('gulp-sass');
var rename = require('gulp-rename');
var gutil = require('gulp-util');
var minifyJS = require('gulp-minify');
gulp.task('css', function() {
gulp.src([
'assets/css/src/tinyFileTree.scss'
])
.pipe(sass().on('error', sass.logError))
.pipe(gulp.dest('assets/css/dist'))
.pipe(rename('tinyFileTree.min.scss'))
.pipe(sass({outputStyle: 'compressed'}).on('error', sass.logError))
.pipe(gulp.dest('assets/css/dist'))
});
// JS
gulp.task('js', function() {
gulp.src([
'assets/js/src/tinyFileTree.js'
])
.pipe(minifyJS({
ext:{
min:'.min.js'
},
}))
.on('error', function (err) { gutil.log(gutil.colors.red('[Error]'), err.toString()); })
.pipe(gulp.dest('assets/js/dist'))
});
// Default
gulp.task('default', function() {
gulp.watch('assets/css/src/tinyFileTree.scss', gulp.series('css'));
gulp.watch('assets/js/src/tinyFileTree.js', gulp.series('js'));
});
我做了一个完整的重写,可以在这里找到:https://github.com/jenstornell/gulpfile-style-script。
你也可以在这里看到。希望对大家有帮助。
let gulp = require("gulp");
let sass = require("gulp-sass");
let autoprefixer = require("gulp-autoprefixer");
let concat = require("gulp-concat");
let uglify = require('gulp-uglify-es').default;
let csso = require('gulp-csso');
let rename = require('gulp-rename');
var css = {
src: 'assets/css/src/**/*.scss',
dest: 'assets/css/dist',
filename: 'style.scss'
};
var js = {
src: 'assets/js/src/**/*.js',
dest: 'assets/js/dist',
filename: 'script.js'
};
function style() {
return (
gulp
.src(css.src)
.pipe(concat(css.filename))
.pipe(sass())
.on("error", sass.logError)
.pipe(autoprefixer())
.pipe(gulp.dest(css.dest))
.pipe(csso())
.pipe(rename({extname: '.min.css'}))
.pipe(gulp.dest(css.dest))
);
}
function script() {
return (
gulp
.src(js.src)
.pipe(concat(js.filename))
.pipe(gulp.dest(js.dest))
.pipe(uglify())
.pipe(rename({extname: '.min.js'}))
.pipe(gulp.dest(js.dest))
);
}
function watch(){
gulp.watch(css.src, style);
gulp.watch(js.src, script);
}
exports.css = style;
exports.js = script;
exports.default = watch;
如果您不想 return gulp 实例。您可以按照 gulp 观看文档中使用的 signature 进行操作。该函数需要一个带有一个参数的回调函数,您需要在任务结束时执行该参数。我花了几个小时才弄清楚这个问题,但就在这里。
注意 cb();
gulp.task('css', function(cb) {
gulp.src([
'assets/css/src/tinyFileTree.scss'
])
.pipe(sass().on('error', sass.logError))
.pipe(gulp.dest('assets/css/dist'))
.pipe(rename('tinyFileTree.min.scss'))
.pipe(sass({outputStyle: 'compressed'}).on('error', sass.logError))
.pipe(gulp.dest('assets/css/dist'));
cb();
});
我从 Gulp 3 更改为 Gulp 4,但我无法让它工作。
当我 运行 gulp
并保存 js 或 scss 文件时,它会成功创建一个新文件。如果我再次保存,则不会发生任何事情。我的猜测是我不明白 gulp.series
是如何工作的。只有 运行 个。
var gulp = require('gulp');
var concat = require('gulp-concat');
var sass = require('gulp-sass');
var rename = require('gulp-rename');
var gutil = require('gulp-util');
var minifyJS = require('gulp-minify');
gulp.task('css', function() {
gulp.src([
'assets/css/src/tinyFileTree.scss'
])
.pipe(sass().on('error', sass.logError))
.pipe(gulp.dest('assets/css/dist'))
.pipe(rename('tinyFileTree.min.scss'))
.pipe(sass({outputStyle: 'compressed'}).on('error', sass.logError))
.pipe(gulp.dest('assets/css/dist'))
});
// JS
gulp.task('js', function() {
gulp.src([
'assets/js/src/tinyFileTree.js'
])
.pipe(minifyJS({
ext:{
min:'.min.js'
},
}))
.on('error', function (err) { gutil.log(gutil.colors.red('[Error]'), err.toString()); })
.pipe(gulp.dest('assets/js/dist'))
});
// Default
gulp.task('default', function() {
gulp.watch('assets/css/src/tinyFileTree.scss', gulp.series('css'));
gulp.watch('assets/js/src/tinyFileTree.js', gulp.series('js'));
});
我做了一个完整的重写,可以在这里找到:https://github.com/jenstornell/gulpfile-style-script。
你也可以在这里看到。希望对大家有帮助。
let gulp = require("gulp");
let sass = require("gulp-sass");
let autoprefixer = require("gulp-autoprefixer");
let concat = require("gulp-concat");
let uglify = require('gulp-uglify-es').default;
let csso = require('gulp-csso');
let rename = require('gulp-rename');
var css = {
src: 'assets/css/src/**/*.scss',
dest: 'assets/css/dist',
filename: 'style.scss'
};
var js = {
src: 'assets/js/src/**/*.js',
dest: 'assets/js/dist',
filename: 'script.js'
};
function style() {
return (
gulp
.src(css.src)
.pipe(concat(css.filename))
.pipe(sass())
.on("error", sass.logError)
.pipe(autoprefixer())
.pipe(gulp.dest(css.dest))
.pipe(csso())
.pipe(rename({extname: '.min.css'}))
.pipe(gulp.dest(css.dest))
);
}
function script() {
return (
gulp
.src(js.src)
.pipe(concat(js.filename))
.pipe(gulp.dest(js.dest))
.pipe(uglify())
.pipe(rename({extname: '.min.js'}))
.pipe(gulp.dest(js.dest))
);
}
function watch(){
gulp.watch(css.src, style);
gulp.watch(js.src, script);
}
exports.css = style;
exports.js = script;
exports.default = watch;
如果您不想 return gulp 实例。您可以按照 gulp 观看文档中使用的 signature 进行操作。该函数需要一个带有一个参数的回调函数,您需要在任务结束时执行该参数。我花了几个小时才弄清楚这个问题,但就在这里。
注意 cb();
gulp.task('css', function(cb) {
gulp.src([
'assets/css/src/tinyFileTree.scss'
])
.pipe(sass().on('error', sass.logError))
.pipe(gulp.dest('assets/css/dist'))
.pipe(rename('tinyFileTree.min.scss'))
.pipe(sass({outputStyle: 'compressed'}).on('error', sass.logError))
.pipe(gulp.dest('assets/css/dist'));
cb();
});