ChatGPT解决这个技术问题 Extra ChatGPT

如何在 Angular CLI 6: angular.json 中添加 Sass 编译?

我刚刚使用新的 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 scssnpm config set defaults.styleExt scss,前者抛出错误,后者显然对文件没有影响,但没有错误。

我将使用标志 --style=scss 创建一个新项目,然后查看如何在生成的项目中设置 angular.json,然后将 angular.json 复制到您的应用程序中
@JuvenileSnow 你知道这是个好主意,哈哈。像这样的小事让我怀疑我是否适合开始一个应用程序。
--style=scss @SmokeyDawson TY 救了我!

T
Tim Diekmann

Smokey Dawson commented

"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.json 中的 src/styles.css 引用更改为 src/styles.scss
是的,这可以解决问题。 @Dico,您是否有指向该“原理图”“样式文本”主题的文档的链接?
@Herr_Hansen,它是“styleext”(样式扩展),而不是“styletext”。 github.com/angular/angular-cli/wiki/angular-workspace github.com/angular/angular-cli/blob/v6.0.0-rc.8/packages/…
我也有 SSR,这个效果会在构建时自动产生还是我必须为 sass 编译配置 webpack 构建配置?
M
Mohamed Allal

在 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 文件中的指定字段(因为它已经设置好了)。


但是你要怎么做才能看到生成的 css 文件呢?我们需要单独的工具吗?
也看看这篇文章blog.angularindepth.com/…
J
Joshua Pierce

目前在 9.0.6 版本上,这有点不同。根据上面的 DicoSmokey 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 =>谢谢你,这就是我真正想要的