【问题标题】:gulp compile multiple css from multiple sass folders with single command?gulp 使用单个命令从多个 sass 文件夹编译多个 css?
【发布时间】:2019-03-04 08:05:07
【问题描述】:

我有以下文件结构:

themes
  folder1
    -scss
      -style.scss
  folder2
    -scss
      -style.scss
  foldern
    -scss
      -style.scss

  package.json
  gulpfile.js

需要这种格式的输出:

themes
  folder1
    -scss
      -style.scss
    css
      -style.css
  folder2
    -scss
      -style.scss
    css
      -style.css
  foldern
    -scss
      -style.scss
    css
      -style.css

  package.json
  gulpfile.js

gulpfile.js:

(function () {
  'use strict';

var gulp = require('gulp'),
    eslint = require('gulp-eslint'),
  sass = require('gulp-sass'),
  sourcemaps = require('gulp-sourcemaps')

  gulp.task('sass', function () {
    return gulp
      .src('./**/scss/**/*.scss')
      .pipe(sourcemaps.init())
      .pipe(sass({
        outputStyle: 'uncompressed'
      }).on('error', sass.logError))
      .pipe(sourcemaps.write('./'))
      .pipe(gulp.dest('./**/css'));
  });

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

})();

当我使用上面的 gulpfile 编译时,它会在主题目录中创建 **/css/folder1/stle.css **/css/folder2/style.css 文件夹。我怎样才能以这种格式编译? gulp 中是否有任何特定的插件。 提前致谢。

【问题讨论】:

    标签: build sass gulp


    【解决方案1】:

    试试这个:

    var gulp = require('gulp'),
      sass = require('gulp-sass'),
      // etc.
    
      // two more plugins
      rename = require('gulp-rename')
      path = require('path');
    
    
      gulp.task('sass', function () {
        return gulp
          .src('./**/scss/**/*.scss')
          .pipe(sourcemaps.init())
          .pipe(sass({
            outputStyle: 'uncompressed'
          }).on('error', sass.logError))
          .pipe(sourcemaps.write('./'))
    
           // rename the current file's parent directory
    
          .pipe(rename(function (file) {
    
            // file.dirname = current folder, your "scss"
            // then get the parent of the current folder, e.g., "folder1", "folder2", etc.
            let parentFolder = path.dirname(file.dirname)
    
            // set each file's folder to "folder1/css", "folder2/css", etc.
            file.dirname = path.join(parentFolder, 'css');
          }))
    
          .pipe(gulp.dest('.'));
      });
    

    【讨论】:

    • 这也是在 scss 文件夹中创建 CSS 文件夹。
    • 它不是为我做的。您是否有之前测试的杂散文件?尝试从您在问题中提出的干净文件夹和文件结构开始。
    • 我的结构是:scss->base->base.scss, scss->global->global.scss
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-06
    • 2015-12-17
    • 2016-06-27
    • 2013-11-10
    • 1970-01-01
    相关资源
    最近更新 更多