Spec-Zone.ru › webpack 5

Другие варианты

Это оставшиеся параметры конфигурации, поддерживаемые webpack.

Предупреждение

Требуется помощь: Эта страница всё ещё находится в разработке. Если вы знакомы с любыми параметрами, описание или примеры которых неполны, создайте вопрос и отправьте исправление в репозиторий документации docs repo!

amd

object boolean: false

Установите значение require.amd или define.amd. Установка amd в false отключит поддержку AMD в webpack.

webpack.config.js

module.exports = {
  //...
  amd: {
    jQuery: true,
  },
};

Некоторые популярные модули, написанные для AMD, особенно версии jQuery с 1.7.0 по 1.9.1, будут зарегистрированы как AMD-модули только в том случае, если загрузчик укажет, что он принял специальные условия для включения нескольких версий на странице.

Эти условия включали возможность ограничивать регистрации определённой версией или поддержку разных песочниц с различными определёнными модулями.

Этот параметр позволяет установить ключ, который ищет ваш модуль, в истинное значение. Как это ни парадоксально, поддержка AMD в webpack игнорирует заданное имя.

bail

boolean = false

Прекратить выполнение при первой ошибке вместо её игнорирования. По умолчанию webpack выводит эти ошибки красным в терминале и консоли браузера при использовании HMR, но продолжает сборку. Чтобы включить эту функцию:

webpack.config.js

module.exports = {
  //...
  bail: true,
};

Это заставит webpack завершить процесс сборки.

Предупреждение

Избегайте использования параметра bail в режиме watch, так как он заставит webpack как можно скорее завершиться при обнаружении ошибки.

dependencies

[string]

Список name, определяющий все конфигурации-зависимые конфигурации. Зависимые конфигурации должны быть скомпилированы предварительно.

В режиме наблюдения зависимости будут вызывать обновление компилятора при:

  1. изменении зависимости;
  2. компиляции или недействительности зависимости.

Помните, что текущая конфигурация не будет скомпилирована, пока не завершат выполнение её зависимости.

webpack.config.js

module.exports = [
  {
    name: 'client',
    target: 'web',
    // …
  },
  {
    name: 'server',
    target: 'node',
    dependencies: ['client'],
  },
];

ignoreWarnings

[RegExp, function (WebpackError, Compilation) => boolean, {module?: RegExp, file?: RegExp, message?: RegExp}]

Указывает webpack игнорировать определённые предупреждения. Это можно сделать с помощью RegExp, настраиваемой function функции, выбирающей предупреждения на основе исходного объекта предупреждения, который получает WebpackError и Compilation в качестве аргументов и возвращает boolean, а object с следующими свойствами:

  • file : Регулярное выражение для выбора исходного файла предупреждения.
  • message : Регулярное выражение для выбора сообщения предупреждения.
  • module : Регулярное выражение для выбора исходного модуля предупреждения.

ignoreWarnings должно быть array из любого или всех вышеперечисленных.

module.exports = {
  //...
  ignoreWarnings: [
    {
      module: /module2\.js\?[34]/, // A RegExp
    },
    {
      module: /[13]/,
      message: /homepage/,
    },
    /warning from compiler/,
    (warning) => true,
  ],
};

loader

object

Экспортировать пользовательские значения в контекст загрузчика.

Например, вы можете определить новую переменную в контексте загрузчика:

webpack.config.js

module.exports = {
  // ...
  loader: {
    answer: 42,
  },
};

Затем использовать this.answer для получения его значения в загрузчике:

custom-loader.js

module.exports = function (source) {
  // ...
  console.log(this.answer); // will log `42` here
  return source;
};
Подсказка

Вы можете переопределить свойства в контексте загрузчика, так как webpack копирует все свойства, определённые в loader в контекст загрузчика.

name

string

Имя конфигурации. Используется при загрузке нескольких конфигураций.

webpack.config.js

module.exports = {
  //...
  name: 'admin-app',
};

parallelism

number = 100

Ограничить количество параллельно обрабатываемых модулей. Можно использовать для тонкой настройки производительности или получения более надёжных результатов профилирования.

profile

boolean

Получить "профиль" приложения, включая статистику и подсказки, которые затем можно анализировать с помощью инструмента Analyze. Также будет выведено резюме времен выполнения модулей.

Подсказка

Для большего контроля над генерируемым профилем используйте StatsPlugin.

Подсказка

Комбинируйте profile: true с parallelism: 1 для получения правильных времен. Обратите внимание, что это также замедлит сборку.

recordsInputPath

string

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

recordsOutputPath

string

Укажите, куда следует записать записи. Следующий пример демонстрирует, как использовать этот параметр в сочетании с recordsInputPath для переименования файла записей:

webpack.config.js

const path = require('path');

module.exports = {
  //...
  recordsInputPath: path.join(__dirname, 'records.json'),
  recordsOutputPath: path.join(__dirname, 'newRecords.json'),
};

recordsPath

string

Используйте этот параметр для генерации JSON-файла, содержащего "записи" webpack – фрагменты данных, используемые для хранения идентификаторов модулей при многократных сборках. Вы можете использовать этот файл для отслеживания изменений модулей между сборками. Для создания файла, укажите расположение:

webpack.config.js

const path = require('path');

module.exports = {
  //...
  recordsPath: path.join(__dirname, 'records.json'),
};

Записи особенно полезны при наличии сложной настройки, которая использует разделение кода. Данные могут быть использованы для обеспечения того, что разделенные пакеты достигают нужного кеширования.

Подсказка

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

Предупреждение

Установка recordsPath по существу устанавливает recordsInputPath и recordsOutputPath в одно и то же место. Обычно этого достаточно, если вы не решите изменить имя файла, содержащего записи. См. пример ниже.

snapshot

object

Параметры snapshot определяют, как создаются и делают недействительными снимки файловой системы.

webpack.config.js

const path = require('path');
module.exports = {
  // ...
  snapshot: {
    managedPaths: [path.resolve(__dirname, '../node_modules')],
    immutablePaths: [],
    unmanagedPaths: [],
    buildDependencies: {
      hash: true,
      timestamp: true,
    },
    module: {
      timestamp: true,
    },
    resolve: {
      timestamp: true,
    },
    resolveBuildDependencies: {
      hash: true,
      timestamp: true,
    },
  },
};

buildDependencies

object = { hash boolean = true, timestamp boolean = true }

Снимки для зависимостей сборки при использовании кэша постоянного хранения.

  • hash: Сравнивает хеши содержимого для определения недействительности (более дорогостоящий, чем timestamp, но меняется реже).
  • timestamp: Сравнивает временные метки для определения недействительности.

И hash, и timestamp являются необязательными.

  • { hash: true }: Подходит для кэширования CI с новым выводом, который не сохраняет временные метки и использует хеши.
  • { timestamp: true }: Подходит для кэширования локального развития.
  • { timestamp: true, hash: true }: Подходит для обоих вышеупомянутых случаев. Сначала сравниваются временные метки, что является дешёвым, так как webpack не нуждается в чтении файлов для вычисления их хешей. Хеши содержимого будут сравниваться только при совпадении временных меток, что приводит к небольшому падению производительности для первоначальной сборки.

immutablePaths

(RegExp | string)[]

Массив путей, управляемых менеджером пакетов и содержащих версию или хеш в своих путях, так что все файлы неизменяемы.

Убедитесь, что путь заключён в группу захвата, если вы используете регулярные выражения.

managedPaths

(RegExp | string)[]

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

Убедитесь, что вы заключаете путь в группу захвата, если используете регулярные выражения, чтобы webpack мог извлечь путь. Например, вот регулярное выражение, которое внутренне использует webpack для соответствия каталогу node_modules.

/^(.+?[\\/]node_modules)[\\/]/

Типичный случай использования managedPaths – исключение некоторых папок из node_modules, например, вы хотите, чтобы webpack знал, что файлы в папке node_modules/@azure/msal-browser ожидается изменятся, что можно сделать с помощью регулярного выражения, такого как приведённое ниже:

module.exports = {
  snapshot: {
    managedPaths: [
      /^(.+?[\\/]node_modules[\\/](?!(@azure[\\/]msal-browser))(@.+?[\\/])?.+?)[\\/]/,
    ],
  },
};

unmanagedPaths

5.90.0+

(RegExp | string)[]

Массив путей, не управляемых менеджером пакетов, и содержимое которых может быть изменено.

Убедитесь, что путь заключён в группу захвата, если вы используете регулярные выражения.

module

object = {hash boolean = true, timestamp boolean = true}

Снимки для сборки модулей.

  • hash: Сравнивает хеши содержимого для определения недействительности (более дорогостоящий, чем timestamp, но меняется реже).
  • timestamp: Сравнивает временные метки для определения недействительности.

resolve

object = {hash boolean = true, timestamp boolean = true}

Снимки для разрешения запросов.

  • hash: Сравнивает хеши содержимого для определения недействительности (более дорогостоящий, чем timestamp, но меняется реже).
  • timestamp: Сравнивает временные метки для определения недействительности.

resolveBuildDependencies

object = {hash boolean = true, timestamp boolean = true}

Снимки для разрешения зависимостей сборки при использовании кэша постоянного хранения.

  • hash: Сравнивает хеши содержимого для определения недействительности (более дорогостоящий, чем timestamp, но меняется реже).
  • timestamp: Сравнивает временные метки для определения недействительности.

© JS Foundation and other contributors
Licensed under the Creative Commons Attribution License 4.0.
https://webpack.js.org/configuration/other-options

Spec-Zone.ru

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