cssからscssへのAngular CLI


135

ドキュメントを読みました。使用したい場合はscss、次のコマンドを実行する必要があります。

ng set defaults.styleExt scss

しかし、それを実行してそのファイルを作成しても、コンソールにこのエラーが表示されます。

styles.bundle.js:33Uncaught Error: Module build failed: Error: ENOENT:
no such file or directory, open
'/Users/Egen/Code/angular/src/styles.css'(…)

1
それはあなたがその時点からあなたが生成したファイルに対してのみ機能します、私はそれがあなたがすでに持っているものを修正することはないと思います。あなたならばgit diff、あなたはそれが変わったのかを確認します。
jonrsharpe

しかし、まだファイルはありません。切り替えたいだけ。
ジェイミー

どのようにしてまだファイルがありませんか?新しいプロジェクトを作成する場合、なぜそのように構成するのですか?
jonrsharpe

angular2から始めます。私はそれをすべて理解しようとしています。
ジェイミー

1
新しいプロジェクトを作成する場合ng new whatever --style=scss は、docsに示されているようにしてください。既存のプロジェクトを構成するための手順に従わない場合は、それを行わないでください。
jonrsharpe

回答:


267

Angular 6公式ドキュメントを確認してください

注:については@angular/cliより古いバージョンの6.0.0-beta.6使用ng setの代わりにng config

既存のプロジェクトの場合

デフォルトのcssスタイルでセットアップされた既存のangular-cliプロジェクトでは、いくつかのことを行う必要があります。

  1. デフォルトのスタイル拡張子を scss

.angular-cli.json(Angular 5.x以前)またはangular.json(Angular 6+)を手動で変更するか、以下を実行します。

ng config defaults.styleExt=scss

エラーが発生した場合:次Value cannot be found.のコマンドを使用します。

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

(*出典:Angular CLI SASSオプション

  1. 既存の.cssファイルの名前を.scss(たとえば、styles.cssおよびapp / app.component.css)に変更します。

  2. CLIでstyles.scssを見つけます

手動でファイルの拡張子変更apps[0].stylesでをangular.json

  1. コンポーネントをポイントして、新しいスタイルファイルを見つけます。

styleUrlsコンポーネントのを新しいファイル名と一致するように変更します

今後のプロジェクトのために

@Serginhoが述べたように、ng newコマンドの実行時にスタイル拡張を設定できます

ng new your-project-name --style=scss

今後作成するすべてのプロジェクトにデフォルトを設定する場合は、次のコマンドを実行します。

ng config --global defaults.styleExt=scss

6
編集:私はリアルタイムビルダーを更新する必要がありました。正常に動作します
クリスティアントラエナ

1
@ angular / cli 1.7.3:defaults.styleExt cssscssinに変更.angular-cli.jsonすると、将来生成されるすべての新しいコンポーネントのscssファイルが自動的に作成されます。
SimonHawesome 2018年

4
ng set defaults.styleExt scss for existing projects
smedasn


22
私の場合(6.0.7)は、既存のプロジェクトのために、このコマンドを使用するには、最新の角度CLIバージョンの@chovy:ng config schematics.@schematics/angular:component.styleext scss @ hamilton.limaが語るよう
Farhan

52

ng6以降、これangular.jsonはルートレベルで追加された次のコードで実行できます。

手動で変更.angular.json

"schematics": {
  "@schematics/angular:component": {
    "styleext": "scss"
  }
}

schematicsルートレベルではなく、のプロジェクト内にネストされていますangular.json。これを無視して、ルートレベルで追加する必要がありますか?
mcheah 2018年

1
@mcheah、はい、それは私のセットアップ方法でもあり、それは機能しています。
Eric Soyke、2018年

私はプロジェクト内に入れ子にしたままにしましたが、同じ質問を持つ人のための参考として、それもうまく機能しているようです。
mcheah 2018年

ng6の最新バージョンに更新した後、私schematicsもネストされました。
ホセオリウエラ

それは私には何も変わらないようです。.cssファイルのscssルールはまだ処理されません。
チョビー

34

angular.jsonファイルを開く

1.からの変更

"schematics": {}

"schematics": {
           "@schematics/angular:component": {
                   "styleext": "scss"       
             }  
  }
  1. からの変更(2か所)

"src/styles.css"

"src/styles.scss"

次に、すべての.cssファイルを確認して名前を変更し、component.tsファイルのstyleUrlsを更新します.css to .scss


4
ステップ1はCLIから実行できます:ng config schematics.@schematics/angular:component.styleext scss 公式ドキュメントで指定されているとおり:github.com/angular/angular-cli/wiki/stories-css-preprocessors
Marian07

13

Angular 6の場合

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

注:@ schematics / angularは、Angular CLIのデフォルトの回路図です


11

Angular CLIのCSSプリプロセッサー統合:6.0.3

新しいプロジェクトを生成するときに、スタイルファイルに必要な拡張子を定義することもできます。

ng new sassy-project --style=sass

または、既存のプロジェクトにデフォルトのスタイルを設定します。

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

すべての主要なCSSプリプロセッサのAngular CLIドキュメント


1
Invalid JSON character: "s" at 0:0.
チョビー

角度CLI 6.0.8のとおり ng config(上記のように)最善の方法ですが、あなたはまだ名前を変更する必要がある*.cssにファイルを*.scssANDに参照を置き換えるangular.jsonstyle.cssしてstyle.scss内のすべてのコンポーネントファイルの参照と更新しstyleUrls、新しい名前にプロパティを。...それからそれは素晴らしい働きをします!
gkl 2018年

8

既存のプロジェクトの場合

ではangular.json、ファイル

  1. ではbuild部分とにtest一部、交換してください:

    "styles": ["src/styles.css"], 沿って "styles": ["src/styles.scss"],

  2. 交換:

    "schematics": {}, 沿って "schematics": { "@schematics/angular:component": { "style": "scss" } },

ng config schematics.@schematics/angular:component.styleext scssコマンドを使用しても機能しますが、構成が同じ場所に配置されません。

プロジェクトで.cssファイルの名前をに変更します.scss

新しいプロジェクトの場合、このコマンドはすべての作業を行います。

ng n project-name --style=scss

グローバル構成の場合

新しいバージョンにはグローバルコマンドがないようです




3

このスレッドに出くわすNrwl拡張機能のユーザーの場合:すべてのコマンドはNxによってインターセプトされます(たとえば、ng generate component myCompent:)れ、AngularCLIに渡されます。

NxワークスペースでSCSSを機能させるコマンド:

ng config schematics.@nrwl/schematics:component.styleext scss


ブリリアント、これを探していました。ありがとうございました!
Ruan Petersen

2

力ずくの変更が適用できます。 これは変更しても機能しますが、プロセスは長くなります。

appフォルダーsrc / appに移動します

  1. このファイルを開きます:app.component.ts

  2. このコードstyleUrls: ['./app.component.css']styleUrls: ['./app.component.scss']

  3. 保存して閉じます。

同じフォルダーsrc / app

  1. app.component.cssファイルの拡張子の名前を(app.component.scss)に変更します。

  2. 他のすべてのコンポーネントについて、この変更に従います。(例:自宅、概要、連絡先など)

angular.jsonの設定ファイルは、次です。プロジェクトのルートにあります。

  1. cssを検索して置き換え、それを(scss)に変更します。

  2. 保存して閉じます。

最後に、を再起動しますng serve -o

コンパイラーが不平を言った場合は、手順をもう一度やり直してください。

app / srcの手順に厳密に従ってください。


1

Angular(v9)の最新バージョンでは、以下のコードを追加する必要があります angular.json

  "schematics": {
    "@schematics/angular:component": {
      "style": "scss"
    }
  }

次のコマンドを使用して追加できます。

ng config schematics.@schematics/angular:component.style scss

はうまくいかず、10を
超えよ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.