加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何使Angular-CLI在资源文件夹中将SCSS编译为CSS

发布时间:2020-12-17 07:13:02 所属栏目:安全 来源:网络整理
导读:我有一个Angular 4项目,使用angular-cli 1.0.x创建. 此时,angular-cli在我的项目中升级到1.1.1. 我有一个资产文件夹,当我在其中放入一个css文件时,可以使用它. 但是当我将css文件重命名为scss时,它不是由angular-cli编译的. 要将scss文件编译为css,我需要做
我有一个Angular 4项目,使用angular-cli 1.0.x创建.
此时,angular-cli在我的项目中升级到1.1.1.

我有一个资产文件夹,当我在其中放入一个css文件时,可以使用它.
但是当我将css文件重命名为scss时,它不是由angular-cli编译的.

要将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文件创建单独的文件夹.

However it should not brake your app anyway if you have your scss referenced correctly.

如果说你在资源文件夹中有theme.scss文件,你可以在你的全局styles.scss中引用它,如@import’/ assets / theme’;无论如何它都会起作用,因为cli会产生一个构建.然后在构建生成之后,所有样式最终都会注入styles.bundle.js.此时在运行时没有使用您的assets / theme.scss文件,但是如果运行命令ng build,它仍会保留在assets文件夹中.所以你最好从assets文件夹中取出它以保持它不受不必要的文件的影响.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读