我刚刚使用新的 Angular CLI 6.0 创建了一个新的 Angular 项目,但我需要将 Sass 编译添加到我的项目中。我知道您可以在创建项目时设置一个标志,但我的项目已经创建并且工作已经完成。
使用新 Angular CLI 生成的新配置文件现在称为 angular.json
而不是 angular-cli.json
。该文件的方案也有所不同,具有新的属性。
在旧的 angular-cli.json
中有一个部分,您可以像这样设置 stylExt
,
"defaults": {
"styleExt": "scss"
}
但我不确定将其放在哪里,因为在 "test"
和 "lint"
属性之后,会给出以下 lint 错误:
Matches multiple schemas when only one must validate.
和建筑产生:
Schema validation failed with the following errors: Data path "['defaults']" should NOT have additional properties(styleExt).
查看 CLI's docs,我没有看到任何可以指示放置 "styleExt"
的位置的内容。
我已经看到其他建议的答案:ng set defaults.styleExt scss
抛出get/set have been deprecated in favor of the config command.
。
我尝试了 ng config set defaults.styleExt scss
和 npm config set defaults.styleExt scss
,前者抛出错误,后者显然对文件没有影响,但没有错误。
--style=scss
创建一个新项目,然后查看如何在生成的项目中设置 angular.json
,然后将 angular.json
复制到您的应用程序中
"projects": {
"angular-app": {
"root": "",
"sourceRoot": "src",
"projectType": "application",
"prefix": "app",
"schematics": {
"@schematics/angular:component": {
"styleext": "scss"
}
},
"architect": {...}
}
}
以上是结果。因此,在您的应用程序中,在键 schematics
下,添加键 @schematics/angular:component
,并将键 styleext
设置为 scss
。
这应该应用于项目根目录中的 angular.json
文件。
在 Angular 6 中,这更容易。编译是自动处理的!那怎么办?要在组件级别使用 scss,您需要使用扩展名 scss 命名文件(同样适用于 less、styl)。在您的 component.ts 中,您也将相应的样式更改为 scss。
https://i.stack.imgur.com/mIpGP.png
并且要在全局范围内使用 Scss (src/styles.css),那么您需要将 styles.css 更改为 styles.scss(同样适用于 less,styl ...等)。然后你继续 angular.json 并将旧的 styles.css 更改为新的 styles.scss 值。如下图所示:
https://i.stack.imgur.com/619xD.png
这里是想要探索自己的人的第一部分的文档链接:https://angular.io/guide/component-styles#non-css-style-files
现在如何设置 ng-cli 以便在生成新组件时扩展默认为 scss ? 使用 ng config
命令如下:
ng config schematics.@schematics/angular:component.styleext scss
这将更新 angular.json:
"schematics": {
"@schematics/angular:component": {
"styleext": "scss"
}
}
相当于旧的 angular-cli.json
defaults: {
"styleext": "scss"
}
这适用于已经启动但未设置为默认为 scss 的项目。如果您要创建新项目,则使用选项 --style
指定如下:
ng new my-project --style=scss
而且您不必使用前面的命令,它是一个配置命令,允许我们更新 angular.json 文件中的指定字段(因为它已经设置好了)。
目前在 9.0.6 版本上,这有点不同。根据上面的 Dico 和 Smokey Dawson,您将在 angular.json 中使用以下内容:
"projects": {
"angular-app": {
"root": "",
"sourceRoot": "src",
"projectType": "application",
"prefix": "app",
"schematics": {
"@schematics/angular:component": {
"styleext": "scss"
}
},
"architect": {...}
}
}
但在以后的版本中,styleext 属性已更改为仅 style。来自 Angular Github here。
But in later versions the styleext property has changed to just style
=>谢谢你,这就是我真正想要的
angular.json
中的src/styles.css
引用更改为src/styles.scss