从 Angular SCSS 生成 CSS?
Generating CSS from Angular SCSS?
当我们使用 SCSS 作为 Angular 的预处理器时,有没有办法看到对应于 SCSS 的 CSS?
这里有一个答案:
它提到使用 --extract-css
选项,但是当我尝试时它看起来已被弃用:
sandbox/project $ ng build --extract-css
Unknown option: '--extract-css'
想法?
Angular 构建文件中的样式
在您的构建文件中,组件的样式实际上将在 main.js
文件中编译。您可以在浏览器 developertools 的网络选项卡中找到它。
您还会看到一个名为 styles.css
的文件,但它只包含您的全局样式。这是因为每个组件的样式 Angulars view-encapsulation。如果您将 view-encapsulation 策略更改为 here 中解释的 angular 的行为可能会改变:
- 模拟(默认)
- ShadowDOM
- None
虽然我不建议这样做。
但是,如果您愿意,可以使用命令行工具将 sass 文件编译成 css,您可以按照 official sass website.
中的说明进行安装
您也可以只使用在线 sass 转换器,例如 thisone。
如果您只对全局样式感兴趣,请参考浏览器中的 。
例子
app.component.scss
p {
background-color: orange;
}
styles.scss
@import 'default';
p {
color: red;
&:hover {
color: blue;
}
}
default.scss
h1 {
color: teal;
}
生成结果
styles.css:
h1 {
color: teal;
}
p {
color: red;
}
p:hover {
color: blue;
}
main.js:
AppComponent.ɵfac = function AppComponent_Factory(t) { return new (t || AppComponent)(); };
AppComponent.ɵcmp = /*@__PURE__*/ _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineComponent"]({ type: AppComponent, selectors: [["app-root"]], decls: 1, vars: 0, template: function AppComponent_Template(rf, ctx) { if (rf & 1) {
_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelement"](0, "lib-my-lib");
} }, directives: [my_lib__WEBPACK_IMPORTED_MODULE_1__.MyLibComponent], styles: ["p[_ngcontent-%COMP%] {\n background-color: orange;\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC5jb21wb25lbnQuc2NzcyIsIi4uXFwuLlxcLi5cXC4uXFxBbmd1bGFyJTIwUHJvamVjdHNcXGxpYi1leGFtcGxlXFxzcmNcXGFwcFxcYXBwLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0Usd0JBQUE7QUNDRiIsImZpbGUiOiJhcHAuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJwIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiBvcmFuZ2U7XHJcbn1cclxuIiwicCB7XG4gIGJhY2tncm91bmQtY29sb3I6IG9yYW5nZTtcbn0iXX0= */"] });
*注意最后一行的橙色background-color。
这只是对已接受答案的补充。我在一篇中型文章中写了它,因为它不是很明显,因为在 Chrome 开发人员工具中选择元素时首先打开 styles.scss
,但 styles.css
位于它旁边的选项卡中.
当我们使用 SCSS 作为 Angular 的预处理器时,有没有办法看到对应于 SCSS 的 CSS?
这里有一个答案:
它提到使用 --extract-css
选项,但是当我尝试时它看起来已被弃用:
sandbox/project $ ng build --extract-css
Unknown option: '--extract-css'
想法?
Angular 构建文件中的样式
在您的构建文件中,组件的样式实际上将在 main.js
文件中编译。您可以在浏览器 developertools 的网络选项卡中找到它。
您还会看到一个名为 styles.css
的文件,但它只包含您的全局样式。这是因为每个组件的样式 Angulars view-encapsulation。如果您将 view-encapsulation 策略更改为 here 中解释的 angular 的行为可能会改变:
- 模拟(默认)
- ShadowDOM
- None
虽然我不建议这样做。
但是,如果您愿意,可以使用命令行工具将 sass 文件编译成 css,您可以按照 official sass website.
中的说明进行安装您也可以只使用在线 sass 转换器,例如 thisone。
如果您只对全局样式感兴趣,请参考浏览器中的
例子
app.component.scss
p {
background-color: orange;
}
styles.scss
@import 'default';
p {
color: red;
&:hover {
color: blue;
}
}
default.scss
h1 {
color: teal;
}
生成结果
styles.css:
h1 {
color: teal;
}
p {
color: red;
}
p:hover {
color: blue;
}
main.js:
AppComponent.ɵfac = function AppComponent_Factory(t) { return new (t || AppComponent)(); };
AppComponent.ɵcmp = /*@__PURE__*/ _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineComponent"]({ type: AppComponent, selectors: [["app-root"]], decls: 1, vars: 0, template: function AppComponent_Template(rf, ctx) { if (rf & 1) {
_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelement"](0, "lib-my-lib");
} }, directives: [my_lib__WEBPACK_IMPORTED_MODULE_1__.MyLibComponent], styles: ["p[_ngcontent-%COMP%] {\n background-color: orange;\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC5jb21wb25lbnQuc2NzcyIsIi4uXFwuLlxcLi5cXC4uXFxBbmd1bGFyJTIwUHJvamVjdHNcXGxpYi1leGFtcGxlXFxzcmNcXGFwcFxcYXBwLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0Usd0JBQUE7QUNDRiIsImZpbGUiOiJhcHAuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJwIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiBvcmFuZ2U7XHJcbn1cclxuIiwicCB7XG4gIGJhY2tncm91bmQtY29sb3I6IG9yYW5nZTtcbn0iXX0= */"] });
*注意最后一行的橙色background-color。
这只是对已接受答案的补充。我在一篇中型文章中写了它,因为它不是很明显,因为在 Chrome 开发人员工具中选择元素时首先打开 styles.scss
,但 styles.css
位于它旁边的选项卡中.