Gulp 观看所有文件但只渲染一个 (sass)

Gulp watch all files but render only one (sass)

我想让 gulp 监视我的工作文件夹中的所有更改,但只生成一个文件。因为我使用 scss 导入所有需要的文件,所以不需要编译所有 .css 个文件,只编译主要的一个。

现在,我的 gulpfile.js 包含:

var gulp    = require('gulp');
var util    = require('gulp-util');
var sass    = require('gulp-sass');

gulp.task('sass', function () {
  return gulp.src('./sass/style.scss')
  .pipe(sass().on('error', sass.logError))
  .pipe(gulp.dest('./dist/css'));
});

gulp.task('watch', function() {
  gulp.watch('./sass/**/*.scss', ['sass']);
});

我必须进入 ./sass/style.scss 并将其保存到触发 gulp 手表。

我希望 gulp 观看所有文件(类似于 ./**/*.scss)但只呈现一个 - ./sass/style.scss。如何实现?

解决这个问题很简单,只需将 gulpfile.jswatch 部分编辑为:

gulp.task('watch', function() {
  gulp.watch('./**/*.scss', ['sass']);
});

其中表示:观察所有 .scss 并随时变化 运行 'sass' taks.

'sass' 只编译 ./sass/style.scss'

无需更改 gulpfile.js 中的任何内容。还有另一种更简单的方法,您只需要在所有使用 @import 语句导入的 SCSS 文件中添加下划线(如 _*.scss),这将禁止编译器创建单独的 CSS 个文件。

示例: mymodular.scss => _mymodular.scss

Guidelines from SCSS documentation

Partials You can create partial Sass files that contain little snippets of CSS that you can include in other Sass files. This is a great way to modularize your CSS and help keep things easier to maintain. A partial is a Sass file named with a leading underscore. You might name it something like _partial.scss. The underscore lets Sass know that the file is only a partial file and that it should not be generated into a CSS file. Sass partials are used with the @use rule.