Sass: @import объявлен устаревшим

Источник: «Sass: `@import` is Deprecated»
В 2019 году была выпущена система модулей Sass, добавившая в язык новые правила @use и @forward, призванные заменить @import и сделать таблицы стилей более удобными и менее подверженными ошибкам. Теперь можно объявить, что @import официально устарел, начиная с версии Dart Sass 1.80.0.

Модульная система позволяет разработчикам и инструментам легко определить, где определён тот или иной член Sass, добавляет интервалы между именами, чтобы избежать необходимости вручную добавлять длинные и неудобные пространства имён к именам, и позволяет авторам библиотек гарантировать, что их приватные помощники не будут доступны последующим пользователям. Кроме того, поскольку каждый модуль загружается только один раз, использование одной и той же таблицы стилей несколько раз больше не приводит к дублированию CSS.

С момента выпуска модульной системы прошло 4,5 года, и уже больше года прошло с тех пор, как мы преодолели порог в 80% использования Dart Sass, установленный нами для начала процедуры устаревания, и мы чувствуем себя комфортно, делая этот шаг. Однако мы понимаем, что это большое изменение в языке, и не все пользователи смогли полностью отказаться от @import до сих пор.

Управление предупреждениями об устаревании

Хотя пользователи должны воспринимать это устаревание как сигнал к скорейшей миграции, для тех, кто хочет отключить предупреждения об устаревании @import, недавно мы добавили новую опцию командной строки --silence-deprecation. Просто передайте --silence-deprecation=import в Sass, и вас не будут беспокоить предупреждения об устаревании, пока вы завершаете миграцию. Аналогичные опции существуют в API JS и Dart.

С другой стороны, пользователи, перешедшие на модульную систему и желающие предотвратить откат назад, могут использовать параметр --fatal-deprecation=import, рассматривающий любые правила @import в Sass как ошибки.

Временные рамки

Как было ранее объявлено, учитывая масштабы этого изменения, мы рассчитываем подождать как минимум два года после его устаревания, прежде чем удалить @import из языка. Хотя в ближайшее время планируется выпустить Dart Sass 2.0.0 с другими, менее значительными изменениями, этот релиз не будет включать никаких изменений в @import. Вместо этого мы ожидаем, что @import будет удалён в Dart Sass 3.0.0.

Мигратор

Пользователи, мигрирующие с @import, могут использовать Sass migrator для перехода на систему модулей. Следуйте инструкциям по установке, а затем запустите его в своём приложении:

sass-migrator module --migrate-deps <path/to/style.scss>

Встроенные функции

Вместе с этим мы также прекращаем использование глобальных встроенных функций Sass, которые теперь доступны во встроенных модулях. В прошлом было несколько конфликтов между этими функциями и новыми именами простых функций CSS, и переход к системе модулей поможет избежать конфликтов в будущем.

Идентификатор global-builtin может быть передан флагам --silence-deprecation или --fatal-deprecation самостоятельно или в сочетании с import. Это устаревание будет происходить в те же сроки, что и удаление @import. Для пользователей, которые хотят перейти на глобальные функции, но не готовы завершить миграцию системы модулей, мы также добавили новый флаг --built-in-only в мигратор модульной системы.

Комментарии


Дополнительные материалы

Предыдущая Статья

Новое в Symfony 7.2: Именованные сериализаторы

Следующая Статья

Новое в Symfony 7.2: Линтер переводов