Sass: @import объявлен устаревшим
@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
в мигратор модульной системы.