在 Angular 6+ (styleExt) 中使用 scss 作为默认样式表

Posted

技术标签:

【中文标题】在 Angular 6+ (styleExt) 中使用 scss 作为默认样式表【英文标题】:Using scss as default style sheet in Angular 6+ (styleExt) 【发布时间】:2018-11-10 04:09:36 【问题描述】:

显然,声明默认样式表扩展的方式从 Angular 6 开始发生了变化。 angular.json 中的 styleExt 属性不再被识别。

对于新项目,可以使用 CLI 上的 --style=scss 选项在 new 命令上进行设置。

但是,对于我从 Angular

这个问题与 Angular 5 到 6 版本的重大更改密切相关。

【问题讨论】:

Angular-cli from css to scss的可能重复 @T04435 我看不出这是怎么复制的。我明确指出,这个问题是关于 Angular 中的特定版本更改,这根本不是另一个问题的一部分。仅仅因为部分修改后的答案也适用于此处并不能使问题相同。 【参考方案1】:

angular.json 中设置的位置发生了变化。现在有两种方法可以设置此选项。

通过 Angular CLI:

ng config schematics.@schematics/angular:component.styleext scss

直接在angular.json:

"schematics": 
    "@schematics/angular:component": 
      "styleext": "scss"
    

Angular 9 更新:

请注意,从 Angular 9 开始,styleext 被重命名为 style。所以我们最终得到:

ng config schematics.@schematics/angular:component.style scss

"schematics": 
    "@schematics/angular:component": 
      "style": "scss"
    

【讨论】:

当我尝试这个时,我仍然将全局 styles.css 作为 css 文件,所以我无法利用 scss 解释。如果我尝试重命名为 styles.scss(并更新了 angular.json 中的引用,则构建失败了。 @MichaelCoxon 模板设置仅定义将为新组件生成哪种样式表类型。它对现有的没有任何影响。尤其不是全球styles.css。不确定您是否可以在其中使用 SCSS。 要使用全局 styles.scss,您需要更改 angular.json 中其他地方的引用。查看 projects.project-name.architect.build.stylesprojects.project-name.test.styles 。将值更改为指向styles.scss 而不是styles.css 对于已经创建的项目,不要忘记更改实际文件。 如何使用单独的 global.scss 而不是 style.css "defaultProject": "pareo", "schematics": "@schematics/angular:component": "prefix": “app”,“styleext”:“scss”,“styles”:[“src/app/provider-portal/provider-portal.scss”],“@schematics/angular:directive”:“prefix”:“应用” 根据这张已关闭的票证 github.com/ngrx/platform/issues/2248 新版本的 Angular CLI styleExt 已替换为 style - 我在两个使用 Angular anf Angular CLI 版本 8 的库中对其进行了测试。 【参考方案2】:

要为现有项目从 css 转到 scss,请按以下步骤操作:

angular.json 文件中

    build 部分和test 部分中,替换:

    "styles": ["src/styles.css"],"styles": ["src/styles.scss"],

    替换:

    "schematics": ,"schematics": "@schematics/angular:component": "style": "scss" ,

使用ng config schematics.@schematics/angular:component.styleext scss 命令有效,但不会将配置放入 同一个地方。

在您的项目中将您的 .css 文件重命名为 .scss

【讨论】:

以上是关于在 Angular 6+ (styleExt) 中使用 scss 作为默认样式表的主要内容,如果未能解决你的问题,请参考以下文章

如何在 `angular.json` 中配置内联样式和 html 模板?

在生成新的角度组件时无法获取 .scss 而不是 .css

如何在 Angular 6 中使用 angular-timelinejs3?

错误:在 Angular CLI >6.0 中,Karma 插件现在由“@angular-devkit/build-angular”导出

在 Angular 6 中编译 HTML

下面的代码在 Angular 8 中运行。但我需要在 Angular 6 中执行它。我该如何实现呢?