css - Gulp 观看所有 .scss 文件并将其编译为 css 作为 sibling ?

标签 css sass gulp

我有一个站点,其中有一些模块需要它们的 css 文件彼此分开存在,但我想使用 scss 编写样式并利用 gulp 进行自动前缀。是否可以监视给定目录树下任何 scss 文件的更改,然后将更新文件的 css 编写为同级文件?该结构基本上是这样的(尽管它可以将目录嵌套到更深的深度):

Gulpfile.js
module1
- styles1.scss
- styles1.css
- dir
-- styles2.scss
-- styles2.css
module2
- dir
-- subdir
--- styles3.scss
--- styles3.css

我在其他地方设置了以下 Gulpfile 来处理我的一般 scss 编译,但我不确定如何修改它来处理上述情况。

// Requirements 
var postcss = require('gulp-postcss');
var gulp = require('gulp');
var sass = require('gulp-sass');
var sassGlob = require('gulp-sass-glob');
var sourcemaps = require('gulp-sourcemaps');
var autoprefixer = require('gulp-autoprefixer');
var sassOptions = {
  errLogToConsole: true,
  outputStyle: 'expanded'
};

gulp.task('scss', function () {
  return gulp
    .src('scss/style.scss')
    .pipe(sourcemaps.init())
    .pipe(sassGlob())
    .pipe(sass(sassOptions).on('error', sass.logError))
    .pipe(postcss([require('postcss-flexibility')]))
    .pipe(autoprefixer())
    .pipe(sourcemaps.write(''))
    .pipe(gulp.dest('css'))
    .resume();
});

// Create 'watch' task
gulp.task('watch', function () {
  return gulp
    // Watch the input folder for change,
    // and run `sass` task when something happens
    .watch('scss/**/*.scss', gulp.series('scss'))
    // When there is a change,
    // log a message in the console
    .on('change', function (event) {
      console.log('File ' + event + ' was updated' + ', running tasks...');
    })
  ;
});

最佳答案

在您的 scss 任务中,将 gulp.src glob 更改为 '**/*.scss',并将 gulp.dest glob 到 '.'.

在您的 watch 任务中,也将 glob 更改为 '**/*.scss'

关于css - Gulp 观看所有 .scss 文件并将其编译为 css 作为 sibling ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58019077/

相关文章:

css - Compass SCSS/SASS 的导入 compass/重置顺序

gulp.watch - 返回或不返回

javascript - Gulp 中的 BrowserSync 正在重新加载浏览器,但实时流 css 不会更新浏览器

gulp-postcss : conditional options (optimizations)

javascript - 循环选择列表菜单以创建搜索过滤器

javascript - 以 CSS 中定义的单位获取元素的宽度

javascript - 渐进增强和 "flash of unhidden content"?

javascript - 使用鼠标滚轮放大图像上的特定点

css - 如何将 sass 和 scss 与 webpack 混合使用?

sass - 如何在 SCSS 中使用另一个变量中的变量