Spec-Zone.ru › Sass

Importer<sync>

Объект, реализующий пользовательскую логику загрузки Sass для правил @use и @import правил. Он может быть передан в importers или importer.

Импортеры, которые просто перенаправляют на файлы на диске, должны использовать интерфейс FileImporter вместо этого.

Разрешение загрузки

Это процесс разрешения загрузки с использованием пользовательского импортера:

  • Компилятор встречает @use "db:foo/bar/baz".
  • Он вызывает canonicalize с "db:foo/bar/baz".
  • canonicalize возвращает new URL("db:foo/bar/baz/_index.scss").
  • Если компилятор уже загрузил стиловый лист с этим каноническим URL, он повторно использует существующий модуль.
  • В противном случае, он вызывает load с new URL("db:foo/bar/baz/_index.scss").
  • load возвращает ImporterResult, который компилятор использует в качестве содержимого модуля.

См. importers для получения более подробной информации о способах разрешения загрузок с помощью нескольких импортеров и путей загрузки.

Пример

sass.compile('style.scss', {
// An importer for URLs like `bgcolor:orange` that generates a
// stylesheet with the given background color.
importers: [{
canonicalize(url) {
if (!url.startsWith('bgcolor:')) returnnull;
returnnewURL(url);
},
load(canonicalUrl) {
return {
contents:`body {background-color: ${canonicalUrl.pathname}}`,
syntax:'scss'
};
}
}]
});

Type Parameters

  • sync extends "sync" | "async" = "sync" | "async"

    Методы canonicalize и load Importer<'sync'> должны возвращать синхронно, но в свою очередь могут быть переданы в compile и compileString помимо compileAsync и compileStringAsync.

    Методы canonicalize и load Importer<'async'> могут возвращать синхронно или асинхронно, но могут использоваться только с compileAsync и compileStringAsync.

Hierarchy

  • Importer
  • Defined in js-api-doc/importer.d.ts:179
Index

Properties

неканоническая схема?

Methods

canonicalize load

Properties

Схема, не являющаяся канонической nonCanonicalScheme

nonCanonicalScheme?: string | string[]

Схема URL или набор схем (без :), которые этот импортер гарантирует никогда не будет использовать для URL, возвращаемых canonicalize. Если он возвращает URL с одной из этих схем, это ошибка.

Если это установлено, любой вызов canonicalize для URL с неканонической схемой будет передан containingUrl, если это известно.

Эти схемы могут содержать только строчные буквы ASCII, ASCII цифры, +, - и .. Они не могут быть пустыми.

  • Defined in js-api-doc/importer.d.ts:308

Методы

canonicalize

  • canonicalize(url: string, context: CanonicalizeContext): PromiseOr<null | URL, sync>
  • Если url распознаётся этим импортером, возвращает его каноническую форму.

    Если Sass уже загрузил стилевое лист с возвращённой канонической URL, он повторно использует существующее дерево разбора (и загруженный модуль для @use). Это означает, что импортеры должны гарантировать, что одна и та же каноническая URL всегда ссылается на один и тот же стилевой лист, даже через различные импортеры. Поэтому импортерам рекомендуется использовать уникальные схемы URL, чтобы различать друг друга.

    По возможности, пользовательские импортеры должны канонизировать URL таким же образом, как встроенный файловый импортер:

    • Импортер должен искать стилевые листы, добавив префикс _ к имени файла URL, и добавив расширения .sass и .scss, если у URL их ещё нет. Например, если URL был foo/bar/baz, импортер искал бы:

      • foo/bar/baz.sass
      • foo/bar/baz.scss
      • foo/bar/_baz.sass
      • foo/bar/_baz.scss

      Если URL был foo/bar/baz.scss, импортер просто искал бы:

      • foo/bar/baz.scss
      • foo/bar/_baz.scss

      Если импортер находит стилевой лист по нескольким из этих URL, он должен выбросить исключение, указывая, что URL неоднозначен. Обратите внимание, что если расширение явно указано, разрешено существование стилевого листа с противоположным расширением.

    • Если ни один из возможных путей не является допустимым, импортер должен выполнить ту же операцию разрешения на URL после /index. В приведённом выше примере он искал бы:

      • foo/bar/baz/index.sass
      • foo/bar/baz/index.scss
      • foo/bar/baz/_index.sass
      • foo/bar/baz/_index.scss

      Как и выше, если импортер находит стилевой лист по нескольким из этих URL, он должен выбросить исключение, указывая, что импорт неоднозначен.

    Если стилевые листы не найдены, импортер должен вернуть null.

    Вызов canonicalize несколько раз с одним и тем же URL должен возвращать один и тот же результат. Вызов canonicalize с URL, возвращённым предыдущим вызовом canonicalize, должен вернуть этот URL.

    Относительные загрузки в стилевых листах, загруженных из импортера, обрабатываются путём разрешения загруженной URL относительно канонической URL стилевого листа, который его содержит, и передачи этого URL методу импортера canonicalize. Например, предположим, что пример «Разрешение загрузки» выше вернул стилевой лист, который содержал @use "mixins":

    • Компилятор разрешает URL mixins относительно текущей канонической URL стилевого листа db:foo/bar/baz/_index.scss, чтобы получить db:foo/bar/baz/mixins.
    • Он вызывает canonicalize с "db:foo/bar/baz/mixins".
    • canonicalize возвращает new URL("db:foo/bar/baz/_mixins.scss").

    Из-за этого canonicalize должен возвращать осмысленный результат, когда вызывается с URL, относительным к URL, возвращённым ранее вызовом canonicalize.

    Выбрасывает

    any - Если этот импортер распознаёт url, но определяет, что оно недействительно, он может выбросить исключение, которое будет обернуто Sass. Если у объекта исключения есть свойство message, оно будет использоваться в качестве сообщения об обернутом исключении; в противном случае будет использоваться свойство toString() объекта исключения. Это означает, что импортеры могут безопасно выбрасывать простые строки.

    Параметры

    • url: string

      Загруженный URL. Поскольку он может быть относительным, он представлен как строка, а не как объект URL.

    • context: CanonicalizeContext

    Возвращает PromiseOr<null | URL, sync>

    Абсолютный URL, если этот импортер распознает url, или null, если нет. Если это возвращает null, другие импортеры или пути загрузки могут обработать загрузку.

    Это также может вернуть Promise, но если это произойдёт, импортеру может быть передан только в compileAsync и compileStringAsync, а не в compile или compileString.

    • Определено в js-api-doc/importer.d.ts:263

load

  • load(canonicalUrl: URL): PromiseOr<null | ImporterResult, sync>
  • Загружает текст Sass для данного canonicalUrl или возвращает null, если этот импортёр не может найти указанный в нём стилевой файл.

    Вызывает исключения

    any - Если этот импортёр находит стилевой файл по адресу url, но его загрузка по какой-либо причине завершается неудачей, или если url однозначно ассоциируется с этим импортёром, но не ссылается на реальный стилевой файл, импортёр может выбросить исключение, которое будет обернуто Sass. Если у объекта исключения есть свойство message, оно будет использовано в качестве сообщения обернутого исключения; в противном случае будет использовано свойство toString() объекта исключения. Это означает, что импортёрам безопасно выбрасывать обычные строки.

    Параметры

    • canonicalUrl: URL

      Канонический URL-адрес стилевого файла для загрузки. Гарантируется, что он получен из вызова canonicalize, хотя не каждый вызов canonicalize приведёт к вызову load.

    Возвращает PromiseOr<null | ImporterResult, sync>

    Содержимое стилевого файла по адресу canonicalUrl, если его можно загрузить, или null, если нет.

    Также может вернуть Promise, но если это произойдёт, импортёр может быть передан только compileAsync и compileStringAsync, а не compile или compileString.

    • Defined in js-api-doc/importer.d.ts:291
sass
  • Компиляция
    • AsyncCompiler
    • Compiler
    • CompileResult
    • compile
    • compileAsync
    • compileString
    • compileStringAsync
    • initAsyncCompiler
    • initCompiler
  • Параметры
    • Options
    • StringOptions
    • OutputStyle
    • StringOptionsWithImporter
    • StringOptionsWithoutImporter
    • Синтаксис
  • Логгер
    • Логгер
      • silent
    • Логгер
    • РасположениеИсточника
    • ДиапазонИсточника
    • ПараметрыПредупрежденияЛоггера
  • Импортер
    • NodePackageImporter
    • FileImporter
    • Импортер
    • РезультатИмпорта
  • Пользовательская функция
    • CalculationInterpolation
    • CalculationOperation
    • SassArgumentList
    • SassBoolean
    • SassCalculation
    • SassColor
    • SassFunction
    • SassList
    • SassMap
    • SassMixin
    • SassNumber
    • SassString
    • Значение
    • ОператорВычисления
    • ЗначениеВычисления
    • ПользовательскаяФункция
    • РазделительСписок
    • sassFalse
    • sassNull
    • sassTrue
  • Прочее
    • Исключение
    • CanonicalizeContext
    • Устаревшие возможности
    • LegacyFileOptions
    • ИмяКанала
    • ИмяКаналаHsl
    • ИмяКаналаHwb
    • ИмяКаналаLab
    • ИмяКаналаLch
    • ИмяКаналаRgb
    • ИмяКаналаXyz
    • ЦветовоеПространствоHsl
    • ЦветовоеПространствоHwb
    • ЦветовоеПространствоLab
    • ЦветовоеПространствоLch
    • ЦветовоеПространствоRgb
    • ЦветовоеПространствоXyz
    • МетодКартыГаммы
    • МетодИнтерполяцииОттенка
    • ИзвестноеЦветовоеПространство
    • ПолярноеЦветовоеПространство
    • PromiseOr
    • ПрямоугольноеЦветовоеПространство
    • info
  • Наследие
    • типы
      • Boolean
      • Цвет
      • Ошибка
      • Список
      • Карта
      • Null
      • Число
      • Строка
    • LegacyException
    • LegacyImporterThis
    • LegacyPluginThis
    • LegacyResult
    • LegacySharedOptions
    • LegacyStringOptions
    • LegacyAsyncFunction
    • LegacyAsyncFunctionDone
    • LegacyAsyncImporter
    • LegacyFunction
    • LegacyImporter
    • LegacyImporterResult
    • LegacyOptions
    • LegacySyncFunction
    • LegacySyncImporter
    • LegacyValue
    • FALSE
    • NULL
    • TRUE
    • render
    • renderSync
  • Сообщения
    • Версия
    • Устаревший
    • DeprecationOrId
    • СтатусУстаревания
    • устаревшиеВозможности

© 2006–2025 the Sass team, and numerous contributors
Licensed under the MIT License.
https://sass-lang.com/documentation/js-api/interfaces/Importer

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API