Подтвердить что ты не робот

Sass @import с использованием подчеркивания подчеркивания

Я понимаю, что рекомендуется импортировать парциальные значения SASS/SCSS без использования нижнего подчеркивания; например

@import 'normalize-scss/normalize'; 
// this imports ./normalize-scss/_normalize.scss

Мой вопрос для полноты ботаники, есть ли последствия, если файл импортирован, используя подчеркивание?

@import 'normalize-scss/_normalize';
4b9b3361

Ответ 1

Нет. Если ваш файл _foo.scss, все эти импорты имеют одинаковые результаты, если у вас нет двусмысленных имен файлов (запрещающих любые побочные эффекты, которые могут существовать):

@import "foo";
@import "foo.scss";
@import "_foo";
@import "_foo.scss";

Файлы с тем же именем, но разные расширения

Единственный раз, когда требуется расширение, является наличие в файле _foo.scss и _foo.sass одного и того же пути поиска. Вы получите следующую ошибку, если вы не укажете, какой из них:

    error sass/test.scss (Line 7: It 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.

@import "test/_foo";

Sass будет предупреждать вас при каждом сохранении, независимо от того, как выглядит ваш оператор импорта:

WARNING: In /path/to/test:
  There are multiple files that match the name "bar.scss":
    _bar.scss
    bar.scss

Ответ 2

Если вы добавите подчеркивание в начало имени файла, Sass не скомпилирует его. Поэтому, если вы не хотите, чтобы colors.scss компилировался в colors.css, назовите файл _colors.scss. Файлы, названные таким образом, называются частичными в терминологии Sass.

Подробнее о функции импорта в Sass вы можете найти здесь