angular-cli 如何添加 sass 和/或引导程序?

Posted

技术标签:

【中文标题】angular-cli 如何添加 sass 和/或引导程序?【英文标题】:angular-cli how to add sass and or bootstrap? 【发布时间】:2016-09-23 05:53:19 【问题描述】:

我正在尝试 angular-cli 并尝试在项目中获得 sass 和 bootstrap。我在wiki 中读到过,您可以简单地这样做:

ng install sass

使用当前最新版本(beta.5)执行此操作会给我一个错误:

Install failed. Could not find addon with name: sass

如何以 angular-cli 处理索引页面和 systemJS 的方式安装 bootstrap 和/或 sass?

【问题讨论】:

【参考方案1】:

如果您使用 angular-cli 创建项目,它会附带一个 scss 预处理器。如果您有样式文件,您只需将 ext 更改为 scss,ng serve 就会为您编译它们。

当你使用 cli 创建项目时,你可以通过

告诉它你想使用 scss
ng new sassy-project --style=sass

如果你有一个现有的项目 Angular 2 到 5

ng set defaults.styleExt scss

如果你的项目是 Angular 6 和 7

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

这些告诉 cli,当您生成具有 scss 样式而不是 css 的新组件时。它不会添加编译器或启用编译器,因为那里已经有一个。

任何现有组件都需要重命名样式文件扩展名。

其他文档https://angular.io/cli

希望对你有帮助

【讨论】:

上面链接的自述文件描述了安装 Bootstrap,我发现它很有帮助。在自述文件中谈到安装 Bootstrap 时,它引用了“app[0].scripts”和“app[0].styles”。我不清楚这意味着什么,但更新“脚本”和“sytles”部分中的 angular-cli.json 文件似乎有效。这个答案说的几乎一样:how-to-add-bootstrap-to-an-angular-cli-project。寻找 Nelly Sattari 的答案。感谢您指点我阅读自述文件。 ng new sassy-project --style=scss,如果你更喜欢scss而不是sass 你知道生成的css保存在哪里吗? get/set have been deprecated in favor of the config command.【参考方案2】:

感谢 Woot 的回答,这个答案更适合 .NET Core 2.0/2.1 开发人员通过以下方式使用 angular 种子项目:

#get lastest SPA templates and make sure angular CLI is global
dotnet new --install Microsoft.DotNet.Web.Spa.ProjectTemplates::*
npm install -g @angular/cli

#create a new project, default for target framework doesn't seem to be working when .NET Core 2.1 SDK is Installed
dotnet new angular -f netcoreapp2.0 -o test-web-app

此种子项目仍使用 bootstrap 3 版本,因此需要下载 bootstrap-sass(或升级到 bootstrap 4,其中包括基础节点模块中的 scss 支持):

npm install bootstrap-sass --save-dev

在 .angular-cli.json 文件中更改样式配置:

"styles": [
   "styles.css",
   "../node_modules/bootstrap/dist/css/bootstrap.min.css"
]

到:

"styles": [
   "styles.scss",
   "../node_modules/bootstrap-sass/assets/stylesheets/_bootstrap.scss"
]

正如 Woot 所指出的,在自动创建文件时升级 angular cli 配置以创建 scss 文件而不是 css 文件也应该由以下人员执行:

ng set defaults.styleExt scss

并且需要将 styles.css 文件重命名为 styles.scss

Angular CLI 和 Angular 版本在撰写本文时也略微过时(1.7.0 和 5.2.0),因此一旦升级,此答案可能会发生变化。 但就目前而言,这是可行的,不需要做任何其他事情来允许:

dotnet run

支持将 scss 自动编译为 css 并通过 ng serve 提供后台文件。

【讨论】:

【参考方案3】:

注意:由于 Angular CLI 的变化,此答案已过时,请参阅以下来自 Woot 的最新答案。

您需要通过npm i node-sass --save-dev 安装node-sass,然后将angular-cli.json 中的styleExt 更改为sassscss(或者您可以通过ng set defaults.styleExt scss 进行设置

至于bootstrap,将其放在public目录下(我使用了一个名为style的子目录)并在index.html中引用它

更新: 另外,如果您想拥有变量文件,可以像这样将目录添加到angular-cli-build.js...

return new Angular2App(defaults, 
  vendorNpmFiles: [
    ...
  ],
  sassCompiler: 
    includePaths: [
      'src/app/style' <-- directory for SASS reference files
    ]
  
);

【讨论】:

我的印象是 ng install 处理了这一切。谢谢你的澄清。 没问题,还更新了如何添加参考文件。 ng 安装不再受支持(2017 年 2 月) @gotofritz 很久没有支持了【参考方案4】:

angular-cli.json的这些行从

"apps": [
    
        "styles": [
                "styles.css"
              ]
    
]

"apps": [
    
        "styles": [
                "styles.sass"
              ]
    
]

设置 styleExt 后

ng set defaults.styleExt scss

然后将src/style.css 更改为src/style.sass 并将['app.component.css'] 更改为['app.component.sass']。它将按预期工作。

【讨论】:

【参考方案5】:

创建后

ng create "project"

转到项目目录并尝试

npm install sass

它会更新你的 package.json

【讨论】:

仅使用npm install sass 只会将包安装到 node_modules 目录中,但不会更新 package.json 文件。要将其保存到 package.json,您需要使用-D-save-dev 标志将其保存为开发依赖项,甚至使用-S-save 将其保存为运行时依赖项。否则,将不会为任何新克隆安装该软件包,并且有被npm purge 清除的风险。 是的,应该是“npm install sass”而不是“ng install sass”。

以上是关于angular-cli 如何添加 sass 和/或引导程序?的主要内容,如果未能解决你的问题,请参考以下文章

使用 angular-cli 进行 CSS 编译

使用 angular-cli、sass 和 materialize-css 找不到字体

angular-cli中的SCSS加载错误

在我的 angular-cli 项目中从 node-sass 切换到 dart sass

node-sass 埋坑记录

如何在 SASS 中使用 Angular 4