四种编译输出格式
约 688 字大约 2 分钟
2025-04-09
Sass 支持多种 CSS 输出格式,通过编译选项控制生成的 CSS 代码风格,适用于不同场景(如开发调试、生产环境)。以下是所有输出格式的详细说明及示例:
一、输出格式类型
Sass 提供 4 种标准输出格式:
格式名称 | 特点 | 适用场景 |
---|---|---|
nested | 默认格式,嵌套缩进(反映 Sass 结构) | 开发环境(可读性较高) |
expanded | 完全展开,类似手写 CSS | 开发环境(结构清晰) |
compact | 每个选择器的规则占一行 | 折中方案(适度简洁) |
compressed | 压缩格式,无空格和换行 | 生产环境(最小化体积) |
二、格式对比示例
1、原始 Sass 代码
.container {
padding: 20px;
.item {
color: red;
&:hover {
color: blue;
}
}
}
2、nested
格式(默认)
特点:嵌套结构通过缩进体现,右花括号不换行。
.container {
padding: 20px; }
.container .item {
color: red; }
.container .item:hover {
color: blue; }
3、expanded
格式
特点:完全展开,类似手写 CSS 的格式。
.container {
padding: 20px;
}
.container .item {
color: red;
}
.container .item:hover {
color: blue;
}
4、compact
格式
特点:每个选择器及其规则占一行。
.container { padding: 20px; }
.container .item { color: red; }
.container .item:hover { color: blue; }
5、compressed
格式
特点:无缩进、无换行,体积最小化。
.container{padding:20px}.container .item{color:red}.container .item:hover{color:blue}
三、如何设置输出格式
1、命令行工具
通过 --style
参数指定格式:
sass input.scss output.css --style=compressed
2、Node.js(Dart Sass)
使用 sass.render
或 sass.compile
时配置 style
选项:
const sass = require("sass");
const result = sass.compile("input.scss", {
style: sass.OutputStyle.expanded,
});
3、Webpack(sass-loader)
在 webpack.config.js
中配置:
module.exports = {
module: {
rules: [
{
test: /\.scss$/,
use: [
"css-loader",
{
loader: "sass-loader",
options: {
sassOptions: {
outputStyle: "compressed",
},
},
},
],
},
],
},
};
4、Gulp
在 gulpfile.js
中配置:
const gulp = require("gulp");
const sass = require("gulp-sass")(require("sass"));
gulp.task("sass", () => {
return gulp
.src("src/*.scss")
.pipe(sass({ outputStyle: "expanded" }).on("error", sass.logError))
.pipe(gulp.dest("dist"));
});
四、最佳实践建议
1、开发环境
- 使用
expanded
或nested
格式,便于调试和阅读。 - 启用 Source Maps(通过
--source-map
参数)。
2、生产环境
- 使用
compressed
格式,减少文件体积。 - 移除注释(Sass 默认在压缩格式中删除注释)。
3、团队协作
- 统一约定使用
expanded
格式,保持代码风格一致。 - 结合 Prettier 或 Stylelint 自动格式化。
五、注意事项
- 混合格式内容:避免在同一项目中混用多种格式,否则版本控制时会产生大量无关差异。
- 注释保留:若需在生产环境保留特定注释,使用
/*! ... */
强制保留。 - 性能影响:
compressed
格式的编译速度通常最快,因为跳过了格式化步骤。
通过合理选择输出格式,可以显著提升开发效率和线上性能。建议在项目早期明确格式规范!
更新日志
2025/8/24 08:17
查看所有更新日志
e7112
-1于