【问题标题】:Gulp sass to css: combine selectors with same property/valuesGulp sass 到 css:组合具有相同属性/值的选择器
【发布时间】:2017-09-04 12:07:35
【问题描述】:

我正在尝试找到可以组合具有相同属性/值的 css 规则的任何 Gulp 模块。以下示例演示了我的问题。

h2 {
  font-size: 14px;
}
p {
   font-size: 14px;
}

输出应该是

h2, p {
  font-size: 14px;
}

如果有办法在将 scss 编译为 css 时解决这个问题,那就太好了。提前致谢

【问题讨论】:

    标签: gulp gulp-sass npm-scripts gulp-clean-css


    【解决方案1】:

    您可以使用gulp-clean-css。例如,这将根据您要求的输出将index.scss 编译为build/index.css

    const gulp = require('gulp');
    const sass = require('gulp-sass');
    const cleanCss = require('gulp-clean-css');
    
    gulp.task('default', function () {
        return gulp.src('index.scss')
            .pipe(sass())
            .pipe(cleanCss({ level: 2 }))
            .pipe(gulp.dest('build'));
    });
    

    gulp-clean-css 使用clean-css,像这样合并选择器被认为是“2 级优化”,这就是为什么我将级别设置为上面的选项。您可以查看those options了解更多详情。


    更新

    针对下面的评论,您可以使用更激进的合并:

    gulp.task('default', function () {
        return gulp.src('index.scss')
            .pipe(sass())
            .pipe(cleanCss({ level: { 2: { restructureRules: true } } }))
            .pipe(gulp.dest('build'));
    });
    

    之前 (index.scss):

    @for $i from 1 through 3 {
        .grid-#{$i} {
            width: 30px;
            background-color: blue;
            font-size: 30px;
            height: $i * 10px;
        }
    }
    

    之后 (index.css):

    .grid-1,.grid-2,.grid-3{width:30px;background-color:#00f;font-size:30px}
    .grid-1{height:10px}
    .grid-2{height:20px}
    .grid-3{height:30px}
    

    【讨论】:

    • 谢谢@MadScone,它对我来说正常工作。但我正在使用 Sass 循环将计算出的网格宽度打印到不同的列中,并且这种方法不会合并具有相同宽度的那些列。我也尝试使用“2 级”优化来缩小 .css 文件,但令人惊讶的是这也不起作用。有什么想法吗?
    • 您可以使用clean-css 选项来获得您想要的。请参阅我上面的编辑。顺便说一句,我不确定你为什么要这样做。像这样重构 CSS 可能会有些危险,因为在重新排列事物的定义顺序时,您可能会意外地改变事物。
    • 非常感谢先生。你拯救了我的一天。我试图从昨天开始弄清楚。 level: { 2: { restructureRules: true, mergeSemantically: true } } 非常适合我。
    猜你喜欢
    • 2016-06-28
    • 1970-01-01
    • 2014-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-15
    • 2019-06-06
    • 1970-01-01
    相关资源
    最近更新 更多