先頭のアンダースコアを使用せずにSASS/SCSSパーシャルをインポートすることがベストプラクティスであることを理解しています。例えば.
@import 'normalize-scss/normalize';
// this imports ./normalize-scss/_normalize.scss
オタクの完全性に対する私の質問は、ファイルがアンダースコアを使用してインポートされた場合、何か影響がありますか?
@import 'normalize-scss/_normalize';
いいえ。ファイルが_foo.scssの場合、あいまいなファイル名がない限り、これらのインポートはすべて同じ結果になります(存在する可能性のある副作用がない限り)。
@import "foo";
@import "foo.scss";
@import "_foo";
@import "_foo.scss";
拡張が必要なのは、同じ検索パスに_foo.scssと_foo.sassの両方がある場合だけです。どちらを指定しないと、次のエラーが発生します。
error sass/test.scss (Line 7: It's not clear which file to import for '@import "test/bar"'.
Candidates:
test/_bar.sass
test/_bar.scss
Please delete or rename all but one of these files.
)
Foo.scssと_foo.scssの両方がある場合、foo.scssが優先されます。代わりに_foo.scssが必要な場合は、インポートステートメントにアンダースコアを追加する必要があります。
@import "test/_foo";
Sassは、インポートステートメントがどのようなものであっても、保存するたびに警告を表示します。
WARNING: In /path/to/test:
There are multiple files that match the name "bar.scss":
_bar.scss
bar.scss
ファイル名の先頭にアンダースコアを追加すると、Sassはそれをコンパイルしません。したがって、必要ない場合はcolors.scss
をコンパイルしてcolors.css
、ファイルに名前を付ける_colors.scss
代わりに。この方法で名前が付けられたファイルは、Sass用語ではパーシャルと呼ばれます。
Sassのインポート機能の詳細については、こちらをご覧ください こちら