使用 Gulp 缩小并自动更新 CSS 文件

Using Gulp to Minify and Auto Update a CSS File

我有一个 Gulp 任务,它在一个文件夹中缩小我的 CSS,然后将其通过管道传输到另一个文件夹。

const gulp = require("gulp");
const cleanCSS = require("gulp-clean-css");

gulp.task("minify-css", () => {
  return (
    gulp
      .src("./css/**/*.css")
      .pipe(cleanCSS())
      .pipe(gulp.dest("minified"))
  );
});

命令gulp minify-css 完美运行。我不想在终端中不断输入该命令。

我希望下面的代码监视我的 CSS 文件,当它发生变化时,我希望将 minify-css 任务更改为 运行 并更新我的缩小文件,但它不起作用:

gulp.task("default", function(evt) {
  gulp.watch("./css/**/*.css", function(evt) {
    gulp.task("minify-css");
  });
});

关于为什么这不起作用的任何想法?提前致谢!

问题出在您在 gulp.watch 回调函数中调用 gulp.task('minify-css') 的区域。该代码实际上并没有调用 minify-css 任务,而是生成了一个 anonymous 任务,正如您在日志中指出的那样。相反 gulp.watch 应该调用一个在内部执行 minify-css 作业的函数。

另一个问题可能是 gulp-4 中发生的语法更改。它们并不多,但可能会造成混淆。

我已经设法解决了这个问题并且它有效。下面是 gulpfile.js 的更新代码:

const gulp = require("gulp");
const cleanCSS = require("gulp-clean-css");

function minifyCSS() {
  return (
    gulp
      .src("./css/*.css")
      .pipe(cleanCSS())
      .pipe(gulp.dest("minified"))
  );
}

gulp.task("minify-css", minifyCSS);

gulp.task("watch", () => {
  gulp.watch("./css/*.css", minifyCSS);
});

gulp.task('default', gulp.series('minify-css', 'watch'));

希望这对您有所帮助。