如何使Angular-CLI在资源文件夹中将SCSS编译为CSS
我有一个Angular 4项目,使用angular-cli 1.0.x创建.
此时,angular-cli在我的项目中升级到1.1.1. 我有一个资产文件夹,当我在其中放入一个css文件时,可以使用它. 要将scss文件编译为css,我需要做什么? 这是我的项目的package.json: { "name": "my project","scripts": { "ng": "ng","start": "ng serve","build": "ng build","test": "ng test","lint": "ng lint","e2e": "ng e2e" },"private": true,"dependencies": { "@angular/animations": "4.1.3","@angular/common": "4.1.3","@angular/compiler": "4.1.3","@angular/core": "4.1.3","@angular/forms": "4.1.3","@angular/http": "4.1.3","@angular/platform-browser": "4.1.3","@angular/platform-browser-dynamic": "4.1.3","@angular/router": "4.1.3","@angular/upgrade": "4.1.3","@axinpm/ang-core": "^0.2.3","chart.js": "2.5.0","core-js": "2.4.1","moment": "2.18.1","ng2-charts": "1.5.0","ng2draggable": "^1.3.2","ngx-bootstrap": "1.6.6","rxjs": "5.4.0","ts-helpers": "1.1.2","zone.js": "0.8.11" },"devDependencies": { "@angular/cli": "1.1.1","@angular/compiler-cli": "4.1.3","@types/jasmine": "2.5.47","@types/node": "7.0.22","codelyzer": "3.0.1","jasmine-core": "2.6.2","jasmine-spec-reporter": "4.1.0","karma": "1.7.0","karma-chrome-launcher": "2.1.1","karma-cli": "1.0.1","karma-jasmine": "1.1.0","karma-jasmine-html-reporter": "0.2.2","karma-coverage-istanbul-reporter": "1.2.1","protractor": "5.1.2","ts-node": "3.0.4","tslint": "5.3.2","typescript": "2.4.2" } } 这是我的项目的.angular-cli.json: { "$schema": "./node_modules/@angular/cli/lib/config/schema.json","project": { "version": "1.0.0-alpha.6","name": "my project" },"apps": [ { "root": "src","outDir": "dist","assets": ["assets"],"index": "index.html","main": "main.ts","polyfills": "polyfills.ts","test": "test.ts","tsconfig": "tsconfig.app.json","testTsconfig": "tsconfig.spec.json","prefix": "app","styles": [ "scss/style.scss" ],"scripts": [ "../node_modules/chart.js/dist/Chart.bundle.min.js","../node_modules/chart.js/dist/Chart.min.js" ],"environmentSource": "environments/environment.ts","environments": { "dev": "environments/environment.ts","prod": "environments/environment.prod.ts" } } ],"e2e": { "protractor": { "config": "./protractor.conf.js" } },"lint": [ { "project": "src/tsconfig.app.json" },{ "project": "src/tsconfig.spec.json" },{ "project": "e2e/tsconfig.e2e.json" } ],"test": { "karma": { "config": "./karma.conf.js" } },"defaults": { "styleExt": "scss","prefixInterfaces": false } } 谢谢 解决方法
发生这种情况是因为assets文件夹用于静态内容,如.angular-cli.json配置:
"assets": ["assets"] 因此,通过具有该设置,所有资产文件夹内容总是被复制.您必须放置.scss外部资源文件夹以避免它由cli构建工具链输出.您也可以考虑为自定义scss文件创建单独的文件夹.
如果说你在资源文件夹中有theme.scss文件,你可以在你的全局styles.scss中引用它,如@import’/ assets / theme’;无论如何它都会起作用,因为cli会产生一个构建.然后在构建生成之后,所有样式最终都会注入styles.bundle.js.此时在运行时没有使用您的assets / theme.scss文件,但是如果运行命令ng build,它仍会保留在assets文件夹中.所以你最好从assets文件夹中取出它以保持它不受不必要的文件的影响. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |