href
テーマ設定の目的で の を切り替えようとしています<link />
が、SCSS テーマは にシンボリックリンクされている monorepo のパッケージ フォルダー内にありますnode_modules
。これらをコンパイルして参照できるようにする必要があります。
次の修正された問題に遭遇しました:角度/角度-cli#3401そして、同様のものを実装しようとしています:
"styles": [
"styles.scss",
{
"input": "../node_modules/@org/themes/dark.scss",
"output": "dark",
"lazy": true
}
],
私の理解では(おそらく間違っているが)、これはdark.scss
ファイルをコンパイルしdist/dark.bundle.css
、次のようにロードできるというものだった。http://localhost:4200/dist/dark.bundle.cssしかし、期待通りに動作しません。私が何かを誤解しているのでしょうか、それとも完全に間違ったやり方をしているのでしょうか?
node_modules
アプリで遅延ロードできるSCSS ファイルをコンパイルするにはどうすればよいでしょうか? 代わりに試すことができる別の/より良い方法はありますか?
その他の注意事項:
- Angularバージョンの使用
4.2.4
- Angular CLIバージョンの使用
1.3.0
- のこのアプローチのドキュメント
- 私はモノレポで作業しているので
node_modules/@org/themes
シンボリックリンクです ng serve --preserve-symlinks
上記が問題である場合に備えてオプションを使用してみました。違いはありませんでした
私は、Angular Materialのドキュメントウェブサイトはこの問題に取り組んでいますまた、アプリケーションを提供する前に、ディレクトリ内の SCSS ファイルを CSS ファイルにコンパイルするカスタム ビルド スクリプトがあるようですassets
。上記の問題が修正されたため、この手順は不要になったと思いましたが、そうではないかもしれません。これが唯一の方法でしょうか?
解決済み
@Kuncevic に感謝します。--extract-css
フラグがありませんでした。
動作構成:
"styles": [
"styles.scss",
{
"input": "../node_modules/@org/themes/src/dark.scss",
"output": "themes/dark",
"lazy": true
}
],
そして次のサーブスクリプトを使えば、http://localhost:4200/themes/dark.bundle.css:
ng serve --extract-css --preserve-symlinks
ベストアンサー1
設定すると、バンドル"lazy": true
が表示されなくなりますindex.html
が、そのバンドルを遅延ロードするメカニズムはありません。コメント:
lazy オプションは実際には何も遅延ロードしません。アプリケーションの起動時に実行されないようにするだけです。
確かに"lazy": true
最初は少し混乱しますね。
実行すると、ng build
ビルドで何が出力されるかを実際に確認し、cli によって生成されたすべてのファイルを分析できます。
次の操作を行うと:
{
"input": "../node_modules/@org/themes/dark.scss",
"output": "dark",
"lazy": true
}
ファイルに直接アクセスできるはずですhttp://localhost:4200/dark.bundle.jsしかし、index.html
設定した通りには表示されません"lazy": true
dark.bundle.css
開発モードではなくバンドルを取得する場合は、フラグdark.bundle.js
を使用できます--extract-css
。
開発モードでCLI がバンドルにスタイルを生成する理由は、js
この方法の方がはるかに高速だからです。ただし、prod ビルドを実行すると、デフォルトでng buld --prod
に出力されます。.css