Spec-Zone.ru › webpack 4

Разрешение модулей

Разрешитель — это библиотека, которая помогает найти модуль по его абсолютному пути. Модуль может быть запрошен как зависимость от другого модуля следующим образом:

import foo from 'path/to/module';
// or
require('path/to/module');

Зависимый модуль может быть частью кода приложения или сторонней библиотеки. Разрешитель помогает webpack найти код модуля, который нужно включить в пакет для каждого такого require/import оператора. webpack использует enhanced-resolve для разрешения путей к файлам во время сборки модулей.

Правила разрешения в webpack

Используя enhanced-resolve, webpack может разрешить три типа путей к файлам:

Абсолютные пути

import '/home/me/file';

import 'C:\\Users\\me\\file';

Так как у нас уже есть абсолютный путь к файлу, дополнительное разрешение не требуется.

Относительные пути

import '../src/file1';
import './file2';

В этом случае каталогом контекста считается каталог ресурсного файла, в котором происходит import или require. Относительный путь, указанный в import/require, присоединяется к этому пути контекста для получения абсолютного пути к модулю.

Пути к модулям

import 'module';
import 'module/lib/file';

Модули ищутся во всех каталогах, указанных в resolve.modules. Вы можете заменить исходный путь к модулю альтернативным путем, создав для него псевдоним с помощью опции конфигурации resolve.alias.

После разрешения пути по вышеуказанному правилу, разрешитель проверяет, указывает ли путь на файл или каталог. Если путь указывает на файл:

  • Если у пути есть расширение файла, то файл сразу включается в сборку.
  • В противном случае расширение файла разрешается с помощью опции resolve.extensions, которая сообщает разрешителю, какие расширения приемлемы для разрешения, например .js, .jsx.

Если путь указывает на папку, то для поиска нужного файла с нужным расширением выполняются следующие шаги:

  • Если папка содержит файл package.json, то поля, указанные в опции конфигурации resolve.mainFields, ищутся в порядке их перечисления, и первое такое поле в package.json определяет путь к файлу.
  • Если файла package.json нет, или если опции resolve.mainFields не возвращают действительный путь, имена файлов, указанные в опции конфигурации resolve.mainFiles, ищутся по порядку для проверки существования соответствующего имени файла в импортируемом/запрашиваемом каталоге.
  • Затем расширение файла разрешается аналогичным образом с использованием опции resolve.extensions.

webpack предоставляет разумные значения по умолчанию для этих опций в зависимости от вашей цели сборки.

Разрешение загрузчиков

Это подчиняется тем же правилам, что и правила разрешения файлов. Но опция конфигурации resolveLoader может быть использована для создания отдельных правил разрешения для загрузчиков.

Кэширование

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

См. API разрешения, чтобы узнать больше об указанных выше опциях конфигурации.

© JS Foundation and other contributors
Licensed under the Creative Commons Attribution License 4.0.
https://v4.webpack.js.org/concepts/module-resolution

Spec-Zone.ru

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