外部製CSSの取り込み¶
@layer の堅牢性を保つために、外部製CSSの取り込み方法について方針を検討します。
ここでは、HTTP経由(CDN)ではない、ファイルベースの取り込みについてまとめます。
CDNからの取り込みについては、 CDN利用時の注意 に記載します。
概要¶
外部で作られたCSSは、おおよその場合 @layer の指定が無いことが多く、指定されていたとしても、プロジェクトが意図する名前と同じである保証はありません。
@layer は、レイヤー未定義のスタイルが最も優先順位が高くなります。
このため、いざ取り込んだ時にスタイル崩れや設計破綻を起こさないよう、どのように取り込むかについて、あらかじめ方針を定めておく必要があります。
ファイル管理パターン¶
外部製のCSSをファイルベースで取り込む方法は、次のどちらかになります。
- npm管理
node_modules/から取り込み
- ファイルコピー管理
- ソースコードディレクトリにファイルを直接コピー配置
推奨は 1 のnpm管理です。
この場合、バージョン管理やセキュリティアップデート等にも対応しやすくなります。
2は、過去のコードをそのまま引き継がなければならない場合や、CDNのCSSをコピーしてファイル配置するような場合です。
どちらの場合も、ファイルそのものをローカルファイルとして管理することに変わりはありません。
取り込みパターン¶
ローカルファイル管理の外部製CSSをプロジェクトに取り込む場合、ネイティブのCSS(もしくは PostCSS利用時)の場合は @import を使い、Sassの場合は @use か meta.load-css などで取り込むことになります。
このとき、必ず目的の @layer に所属させる必要があります。
具体的な記述方法については、@layerの設定 をご確認ください。
@use を @layer {} でラップするとコンパイルエラーになるため、上記リンク先の説明、もしくは、meta.load-cssの利用 をご確認ください。
取り込んだ外部製CSSの一部プロパティを上位レイヤーから打ち消したい場合は、revert-layer が利用できます。(revert-layer による打ち消し 参照)
Globalスコープでの取り込み¶
Globalスコープで外部製CSSを取り込む際は、以下のルールを検討します。
- 外部製CSSは、該当するレイヤーのファイルから個別に直接取り込む
- 外部製CSSは、取り込んだファイルのレイヤーに所属させる
- ファイルコピーする場合は、分類に該当するディレクトリに配置する
- この場合、原本維持のため、外部製CSSの直接編集は不可とする
Pagesスコープでの取り込み¶
Pagesスコープで外部製CSSを取り込む際は、以下のルールを検討します。
- ページ個別用CSSから取り込む
- 外部製CSSは、常に
pagesレイヤーに所属させる(非レイヤー化しない) - ファイルコピーする場合は、
_parts/などに配置する- この場合、原本維持のため、外部製CSSの直接編集は不可とする
次のステップ¶
上記のうち、特に @layer の指定漏れについては、CDNの利用時の課題となります。
次のページで対応方法を記載します。