2017-12-12 8 views
0

私は、より少ない変数を使用して自分のサイトに動的テーマを適用しようとしています。ここでは単純化したシナリオです:Angular CLIが少ないファイルをコンパイルできないようにする

ファイル:site.less

@primary-color: 'red' 

ファイル:foobar.component.less

​​

これは、最初のページのロードのためにうまく機能し、背景色が赤。しかし今では、複数のカラーオプションを備えたドロップダウンカラーセレクタが必要です。ユーザーが赤色の代わりに緑色を選択すると、less関数less.modifyVars({'@primary-color', 'green'})を使用したいので、変更はありません。これは、angle cliがlessをcssにあらかじめコンパイルしているため、ブラウザは、最初に少ないファイルしか見ることができないからです。

Angularが少ないファイルをCSSにコンパイルしないと、modifyVarsが呼び出されたときにブラウザがその変更を受け取ります。

AngularはCSSにコンパイルしないように教えてください。

+0

おそらくcliの[eject](https://github.com/angular/angular-cli/wiki/eject)コマンドを使用し、lessをコンパイルしないようにwebpackを設定する必要があります。 – LLai

+0

私はこのコマンドに完全に慣れていません。つまり、Angular CLIをビルドに使用するのではなく、むしろネイティブのwebpackを使用することになりますか? – heilch

+0

正しいです、それはビルドを完全に制御できます – LLai

答えて

1

角度cliのng ejectコマンドを使用できます。ビルドコマンドのビルド方法を完全に制御するためのwebpack構成ファイルが取り出されます。

サイドノート:私はng ejectを元に戻すことは不可能だとは思わないが、それはいつも簡単なプロセスではないことを読んだ。特に、複数のバージョンがangle cliチームと合流して、ビルドコマンドに機能を追加/変更している場合。

+1

ブラウザでコンパイルしないように言及しているので、私は別のアプローチをとることにしました。しかし、この質問の点でこれは正解です。 – heilch

+0

@heilchええ、私は間違いなく別のアプローチをお勧めします。これはビルドプロセスの雑草に入ります。 – LLai

0

少ないファイルで変数名を変更しないのはなぜですか?

+0

CLIは、ブラウザに到達する前にサーバーのlessをコンパイルします。変数のすべてのインスタンスをcssの16進値で直接置き換えます。これがブラウザに提供されます。ブラウザの観点から名前を変更する変数はありません – heilch

+0

あなたのサイトにどのように接続していますか?Angularとは何ですか? –

+0

ファイル「.angular-cli.json」には、「スタイル」の構成配列がありますが、そこには少ないファイルが含まれています。コンポーネントの少ないファイルは、コンパイル時に私が告げるものからピックアップされます – heilch

関連する問題