JDi*_*522 314 sass angular-cli angular
我是Angular的新手,我来自Ember社区.尝试使用基于Ember-CLI的新Angular-CLI.
我需要知道在新的Angular项目中处理SASS的最佳方法.我尝试使用ember-cli-sass
repo来查看它是否会发挥作用,因为Angular-CLI的许多核心组件都是使用Ember-CLI模块运行的.
它没有用,但又不确定我是否只是错误配置了一些东西.
另外,在新的Angular项目中组织样式的最佳方法是什么?将sass文件放在与组件相同的文件夹中会很不错.
Mer*_*ken 523
使用angular cli创建项目时,请尝试以下操作:
ng new My_New_Project --style=sass
Run Code Online (Sandbox Code Playgroud)
这将使用预定义的sass文件生成所有组件.
如果你想要scss语法创建你的项目:
ng new My_New_Project --style=scss
Run Code Online (Sandbox Code Playgroud)
如果要更改项目中的现有样式
ng set defaults.styleExt scss
Run Code Online (Sandbox Code Playgroud)
Cli处理其余部分.
最新版本
对于Angular 6,使用CLI在现有项目上设置新样式:
ng config schematics.@schematics/angular:component.styleext scss
Run Code Online (Sandbox Code Playgroud)
或者直接进入angular.json:
"schematics": {
"@schematics/angular:component": {
"styleext": "scss"
}
}
Run Code Online (Sandbox Code Playgroud)
All*_*ітy 337
当生成一个新的项目与角CLI,指定CSS预处理器
使用SCSS语法
ng new sassy-project --style=scss
Run Code Online (Sandbox Code Playgroud)使用SASS语法
ng new sassy-project --style=sass
Run Code Online (Sandbox Code Playgroud)通过运行在现有项目上设置默认样式
使用SCSS语法
ng config schematics.@schematics/angular:component.styleext scss
Run Code Online (Sandbox Code Playgroud)使用SASS语法
ng config schematics.@schematics/angular:component.styleext sass
Run Code Online (Sandbox Code Playgroud)上面的命令将使用更新您的工作区文件(angular.json)
"schematics": {
"@schematics/angular:component": {
"styleext": "scss"
}
}
Run Code Online (Sandbox Code Playgroud)
哪个styleext
可以是scss
或sass
根据选择.
对于新项目,我们可以设置选项--style=sass
或--style=scss
根据所需的SASS/SCSS风格
使用SASS语法
ng new project --style=sass
Run Code Online (Sandbox Code Playgroud)使用SCSS语法
ng new project --style=scss
Run Code Online (Sandbox Code Playgroud)然后安装node-sass
,
npm install node-sass --save-dev
Run Code Online (Sandbox Code Playgroud)
为了angular-cli
编译sass文件node-sass
,我不得不运行,
npm install node-sass --save-dev
Run Code Online (Sandbox Code Playgroud)
哪个安装node-sass
.然后
对于SASS语法
ng set defaults.styleExt sass
Run Code Online (Sandbox Code Playgroud)用于SCSS语法
ng set defaults.styleExt scss
Run Code Online (Sandbox Code Playgroud)将默认styleExt设置为sass
(要么)
更改styleExt
为sass
或scss
所需的语法.angular-cli.json
,
对于SASS语法
"defaults": {
"styleExt": "sass",
}
Run Code Online (Sandbox Code Playgroud)用于SCSS语法
"defaults": {
"styleExt": "scss",
}
Run Code Online (Sandbox Code Playgroud)ERROR in multi styles
Module not found: Error: Can't resolve '/home/user/projects/project/src/styles.css' in '/home/user/projects/project'
@ multi styles
Run Code Online (Sandbox Code Playgroud)
这是通过改变线条来修复的.angular-cli.json
,
"styles": [
"styles.css"
],
Run Code Online (Sandbox Code Playgroud)
要么,
对于SASS语法
"styles": [
"styles.sass"
],
Run Code Online (Sandbox Code Playgroud)用于SCSS语法
"styles": [
"styles.scss"
],
Run Code Online (Sandbox Code Playgroud)reg*_*nar 37
引自官方github repo在这里 -
例如,使用一个只安装
npm install node-sass
并将项目中的.css文件重命名为.scss或.sass.它们将自动编译.Angular2App的options参数包含sassCompiler,lessCompiler,stylusCompiler和compassCompiler选项,它们直接传递给各自的CSS预处理器.
看这里
Mic*_*zos 25
为避免--style scss
每次生成项目时都要通过,可能需要使用以下命令全局调整angular-cli的默认配置:
ng set --global defaults.styleExt scss
Run Code Online (Sandbox Code Playgroud)
请注意,某些版本的angular-cli包含读取上述全局标志的错误(请参阅链接).如果您的版本包含此错误,请使用以下命令生成项目:
ng new some_project_name --style=scss
Run Code Online (Sandbox Code Playgroud)
Jar*_*rth 21
像Mertcan所说,使用scss的最佳方法是使用该选项创建项目:
ng new My_New_Project --style=scss
Run Code Online (Sandbox Code Playgroud)
Angular-cli还添加了一个选项,可以在使用以下命令创建项目后更改默认的css预处理器:
ng set defaults.styleExt scss
Run Code Online (Sandbox Code Playgroud)
有关详细信息,您可以在此处查看其文档:
https://github.com/angular/angular-cli
Joe*_*rke 15
我注意到移动到scss文件时非常烦人的陷阱!一个必须从简单:styleUrls: ['app.component.scss']
到styleUrls: ['./app.component.scss']
(添加./
)进入app.component.ts
生成新项目时会执行哪种操作,但似乎不是在创建默认项目时执行的操作.如果您在ng build期间看到解决错误,请检查此问题.我花了大约1个小时.
对于Angular 9.0及更高版本,更新angular.json"schematics":{}
文件中的对象,如下所示:
"schematics": {
"@schematics/angular:component": {
"style": "scss"
},
// Angular 13 may contain this as well; NOT related
"@schematics/angular:application": {
...
}
},
Run Code Online (Sandbox Code Playgroud)
ng set --global defaults.styleExt=scss
自 ng6 起已弃用。您将收到此消息:
get/set 已被弃用,取而代之的是 config 命令
你应该使用:
ng config schematics.@schematics/angular:component '{ styleext: "scss"}'
Run Code Online (Sandbox Code Playgroud)
如果您想针对特定项目(将 {project} 替换为您的项目名称):
ng config projects.{project}.schematics.@schematics/angular:component '{ styleext: "scss"}'
Run Code Online (Sandbox Code Playgroud)
最好的可能是 ng new myApp --style=scss
然后,Angular CLI将为您创建带有scss的任何新组件。
请注意,scss
您可能知道,在浏览器中无法使用..因此,我们需要对其进行编译css
,因此,我们可以使用node-sass
,如下所示进行安装:
npm install node-sass --save-dev
Run Code Online (Sandbox Code Playgroud)
而且您应该很好走!
如果您使用的是webpack,请在此处继续阅读:
现有文件夹package.json在项目文件夹中的命令行:
npm install node-sass sass-loader raw-loader --save-dev
在中
webpack.common.js
,搜索“ rules:”,然后将此对象添加到rules数组的末尾(不要忘记在前一个对象的末尾添加逗号):
{
test: /\.scss$/,
exclude: /node_modules/,
loaders: ['raw-loader', 'sass-loader'] // sass-loader not scss-loader
}
Run Code Online (Sandbox Code Playgroud)
然后在您的组件中:
@Component({
styleUrls: ['./filename.scss'],
})
Run Code Online (Sandbox Code Playgroud)
如果要全局CSS支持,则在顶层组件(可能是app.component.ts)上删除封装并包括SCSS:
import {ViewEncapsulation} from '@angular/core';
@Component({
selector: 'app',
styleUrls: ['./bootstrap.scss'],
encapsulation: ViewEncapsulation.None,
template: ``
})
class App {}
Run Code Online (Sandbox Code Playgroud)
小智 5
Angular-CLI 是推荐的方法,也是 Angular 2+ 社区的标准。
克里特岛与 SCSS 的新项目
ng new My-New-Project --style=sass
转换现有项目(CLI 低于 v6)
ng set defaults.styleExt scss
(必须使用此方法手动重命名所有 .css 文件,不要忘记在组件文件中重命名)
转换现有项目(CLI 高于 v6)
"@schematics/angular:component": {
"styleext": "sass"
}
截至 2019 年 3 月 10 日,Anguar 放弃了对 sass 的支持。无论您--style
在运行时传递什么选项ng new
,您总是会.scss
生成文件。遗憾的是,对 sass 的支持在没有任何解释的情况下就被放弃了。
归档时间: |
|
查看次数: |
178427 次 |
最近记录: |