當涉及到應用全局樣式時,Webpack的最新版本angular-cli
似乎出現錯誤。請參閱此Github issue。
更新:2016年8月31日 升級到最新版本(1.0.0-beta.11-webpack.8
)似乎已經解決了這一問題與angular-cli
全局樣式。要設置全局樣式,請按照說明here。
ng new scss-project --style=scss
angular-cli
將產生一個全球性的樣式表styles.scss
,並將其納入:默認是使用全局CSS文件,如果你想使用一個全球性的SCSS樣式表,您可以創建應用程序時指定--style=scss
標誌angular-cli.json
文件。這指示angular-cli
在styles.scss
中聲明的樣式應該是全局的,並且應用於整個應用程序(而不限於特定組件)。這相當於在您的index.html
中通過鏈接語句包含樣式表。
現有項目,您可以使用設置默認的樣式:
ng set defaults.styleExt scss
在你angular-cli.json
,額外的全局樣式表或腳本可以被添加到如下所示的樣式和腳本數組:
"apps": [
{
"root": "src",
"outDir": "dist",
"assets": "assets",
"index": "index.html",
"main": "main.ts",
"test": "test.ts",
"tsconfig": "tsconfig.json",
"prefix": "app",
"mobile": false,
"styles": [
"styles.scss"
],
"scripts": [],
"environments": {
"source": "environments/environment.ts",
"prod": "environments/environment.prod.ts",
"dev": "environments/environment.dev.ts"
}
}
]
爲什麼樣式不適用於您的身體標記?
我在這裏猜測是因爲您還沒有發佈任何代碼,但是您的SCSS樣式未應用於<body>
標記的原因是因爲您正在使用Component Styles
。當生成angular-cli
項目與--style=scss
標誌,它創建稱爲app.compontent.ts
根水平分量:
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
templateUrl: 'app.component.html',
styleUrls: ['app.component.scss']
})
export class AppComponent {
title = 'app works!';
}
它也產生一個Component Style稱爲app.component.scss
。這是一個重要的觀點,因爲組件樣式被限制在它們的組件中。A組分風格在組件設置是這樣的:
styleUrls: ['app.component.scss']
你app.component.scss
包括任何樣式將只適用於app.component.ts
及其相應的模板app.component.html
(以及它的孩子)。樣式不應用於<body>
標籤的原因是因爲它位於根級別組件中所產生的index.html
文件範圍之外的angular-cli
:
<body>
<app-root>Loading...</app-root>
</body>
我希望這能回答你的問題。
的可能的複製[在Angular2整合薩斯 - 的WebPack(http://stackoverflow.com/questions/39147082/integrate-sass-in-angular2-webpack) – Brocco