はじめに
つい先日、ついに Angular6 正式版がリリースされました 🎉
ただ、Angular-CLI の設定ファイルである .angular-cli.json
が angular.json
へと変更され、それに伴い大幅な仕様変更が入りました。
本記事では、angular.json
のざっくりとした使い方を、最もポピュラーである 「scss を有効化する」 というケースを想定して紹介してみます。
angular.json で scss を有効にする
angular.json の仕様 を見てみると、angular.json
では projects
プロパティにプロジェクトを設定し、そのプロジェクトの schematics
プロパティに @schematics/angular:component
や @schematics/angular:directive
というキー名で設定したい項目を入力する方式へ変更されたようです。
試しに
ng new my-app
でサンプルプロジェクトを作成してみたところ下記の angular.json
が自動的に生成されていました
...
"projects": {
"my-app": {
"root": "",
"sourceRoot": "src",
"projectType": "application",
"prefix": "app",
"schematics": {},
...
この schematics
に
"schematics": {
"@schematics/angular:component": {
"styleext": "scss"
}
}
を設定することで、CLI からの新規コンポーネント生成が scss
を有効とした状態で利用できるようになりました。
> ng g c test
CREATE src/app/test/test.component.scss (0 bytes)
CREATE src/app/test/test.component.html (23 bytes)
CREATE src/app/test/test.component.spec.ts (614 bytes)
CREATE src/app/test/test.component.ts (262 bytes)
schematics
は上記例のようにプロジェクト自体に設定することもできますが、「全プロジェクトで scss
を使うからいちいち設定したくない」 という場合は、angular.json
の最上位プロパティとすることで全プロジェクトで有効とすることもできます。
CLI から設定
CLI から設定する場合はこうするようです。
ng set
ではなく ng config
に変更されたましたね。
が、、、6.0.0 ではエラーとなってしまいました。そのうち修正されると思います。
ng config schematics.@schematics/angular:component.styleext scss
追記:
現状だと json 形式で指定すると CLI からでも設定できるようです
ng config schematics.@schematics/angular:component '{ styleext: "scss"}'
新規作成時
プロジェクトを新規で作成する際は、以前と同じように --style=scss
を付与することで、 schematics
の設定された angular.json
が出力されることを確認しました。(6.0.0)
ng new my-app --style=scss
schematics のデフォルト設定項目一覧
- @schematics/angular:component
- @schematics/angular:directive
- @schematics/angular:module
- @schematics/angular:service
- @schematics/angular:pipe
- @schematics/angular:class
あの設定どこに行ったんだ!? という方は上記を探してみると見つかるかもしれません。