Spec-Zone.ru › webpack 5

Devtool

Этот параметр управляет тем, создаются ли и как создаются карты источников.

Используйте SourceMapDevToolPlugin для более тонкой настройки. См. source-map-loader для работы с существующими картами источников.

devtool

string = 'eval' false

Выберите стиль сопоставления источников для улучшения процесса отладки. Эти значения могут значительно повлиять на скорость сборки и пересборки.

tip

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

tip

Вместо использования параметра devtool вы также можете использовать SourceMapDevToolPlugin/EvalSourceMapDevToolPlugin напрямую, так как он имеет больше параметров. Никогда не используйте одновременно параметр devtool и плагин. Параметр devtool добавляет плагин внутренне, поэтому плагин будет применен дважды.

devtool производительность production качество комментарий
(none) сборка: самая быстрая

пересборка: самая быстрая
да пакет Рекомендуемый выбор для сборок production с максимальной производительностью.
eval сборка: быстрая

пересборка: самая быстрая
нет сгенерировано Рекомендуемый выбор для сборок development с максимальной производительностью.
eval-cheap-source-map сборка: нормально

пересборка: быстрая
нет преобразован Компромиссный выбор для сборок development.
eval-cheap-module-source-map сборка: медленная

пересборка: быстрая
нет оригинальные строки Компромиссный выбор для сборок development.
eval-source-map сборка: самая медленная

пересборка: нормально
нет оригинальный Рекомендуемый выбор для сборок development с высококачественными SourceMaps.
cheap-source-map сборка: нормально

пересборка: медленная
нет преобразован
cheap-module-source-map сборка: медленная

пересборка: медленная
нет оригинальные строки
source-map сборка: самая медленная

пересборка: самая медленная
да оригинальный Рекомендуемый выбор для production сборок с высококачественными SourceMaps.
inline-cheap-source-map сборка: нормально

пересборка: медленная
нет преобразован
inline-cheap-module-source-map сборка: медленная

пересборка: медленная
нет оригинальные строки
inline-source-map сборка: самая медленная

пересборка: самая медленная
нет оригинальный Возможный выбор при публикации одного файла
eval-nosources-cheap-source-map сборка: нормально

пересборка: быстрая
нет преобразован исходный код не включен
eval-nosources-cheap-module-source-map сборка: медленная

пересборка: быстрая
нет оригинальные строки исходный код не включен
eval-nosources-source-map сборка: самая медленная

пересборка: нормально
нет оригинальный исходный код не включен
inline-nosources-cheap-source-map сборка: нормально

пересборка: медленная
нет преобразован исходный код не включен
inline-nosources-cheap-module-source-map сборка: медленная

пересборка: медленная
нет оригинальные строки исходный код не включен
inline-nosources-source-map сборка: самая медленная

пересборка: самая медленная
нет оригинальный исходный код не включен
nosources-cheap-source-map сборка: нормально

пересборка: медленная
нет преобразован исходный код не включен
nosources-cheap-module-source-map сборка: медленная

пересборка: медленная
нет оригинальные строки исходный код не включен
nosources-source-map сборка: самая медленная

пересборка: самая медленная
да оригинальный исходный код не включен
hidden-nosources-cheap-source-map сборка: нормально

пересборка: медленная
нет преобразован нет ссылки, исходный код не включен
hidden-nosources-cheap-module-source-map сборка: медленная

пересборка: медленная
нет оригинальные строки нет ссылки, исходный код не включен
hidden-nosources-source-map сборка: самая медленная

пересборка: самая медленная
да оригинальный нет ссылки, исходный код не включен
hidden-cheap-source-map сборка: нормально

пересборка: медленная
нет преобразован нет ссылки
hidden-cheap-module-source-map сборка: медленная

пересборка: медленная
нет оригинальные строки нет ссылки
hidden-source-map сборка: самая медленная

пересборка: самая медленная
да оригинальный нет ссылки. Возможный выбор при использовании SourceMap только для целей отчета об ошибках.
shortcut explanation
performance: build Как производительность начальной сборки зависит от настроек инструмента разработчика?
performance: rebuild Как производительность инкрементальной сборки зависит от настроек инструмента разработчика? Медленные инструменты разработчика могут уменьшить цикл обратной связи в режиме наблюдения. Масштаб отличается от производительности сборки, поскольку, как и следовало ожидать, пересборки должны быть быстрее, чем сборки.
production Есть ли смысл использовать этот инструмент разработчика для сборок в продакшене? Обычно no когда инструмент разработчика негативно влияет на пользовательский опыт.
quality: bundled Вы увидите весь сгенерированный код фрагмента в одном блоке кода. Это необработанный выходной файл без какой-либо поддержки инструментов разработчика
quality: generated Вы увидите сгенерированный код, но каждый модуль будет отображаться как отдельный файл кода в инструментах разработчика браузера.
quality: transformed Вы увидите сгенерированный код после предварительной обработки загрузчиками, но до дополнительных преобразований webpack. Будут отображены только номера строк исходного кода, а информация о столбцах будет отброшена или не генерироваться. Это предотвращает установку точек останова в середине строк, что не работает вместе с минимизатором.
quality: original lines Вы увидите исходный код, который вы написали, предполагая, что все загрузчики поддерживают SourceMapping. Будут отображены только номера строк исходного кода, а информация о столбцах будет отброшена или не генерироваться. Это предотвращает установку точек останова в середине строк, что не работает вместе с минимизатором.
quality: original Вы увидите исходный код, который вы написали, предполагая, что все загрузчики поддерживают SourceMapping.
eval-* addition генерировать SourceMap для каждого модуля и добавлять его через eval. Рекомендуется для разработки из-за улучшенной производительности пересборки. Обратите внимание, что существует проблема с защитником Windows, которая вызывает значительное замедление из-за проверки вирусов.
inline-* addition встраивать SourceMap в исходный файл вместо создания отдельного файла.
hidden-* addition нет ссылки на SourceMap. Когда SourceMap не развернут, но все еще должен быть сгенерирован, например, для целей отчетности об ошибках.
nosources-* addition исходный код не включен в SourceMap. Это может быть полезно, когда необходимо ссылаться на исходные файлы (требуются дополнительные параметры конфигурации).
tip

Мы ожидаем определенную модель при проверке имени инструмента разработчика, обратите внимание и не путайте последовательность строки инструмента разработчика. Модель: [inline-|hidden-|eval-][nosources-][cheap-[module-]]source-map.

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

tip

См. output.sourceMapFilename для настройки имен файлов сгенерированных карт источников.

Качество

bundled code - Вы видите весь сгенерированный код как большой блок кода. Вы не видите модули, разделенные друг от друга.

generated code - Вы видите каждый модуль отдельно друг от друга, аннотированный именами модулей. Вы видите код, сгенерированный webpack. Пример: вместо import {test} from "module"; test(); вы видите что-то вроде var module__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(42); module__WEBPACK_IMPORTED_MODULE_1__.a();.

transformed code - Вы видите каждый модуль отдельно друг от друга, аннотированный именами модулей. Вы видите код до того, как webpack преобразует его, но после того, как загрузчики его транспилируют. Пример: вместо import {test} from "module"; class A extends test {} вы видите что-то вроде import {test} from "module"; var A = function(_test) { ... }(test);

original source - Вы видите каждый модуль отдельно друг от друга, аннотированный именами модулей. Вы видите код до транспиляции, как вы его написали. Это зависит от поддержки загрузчика.

without source content - Содержимое источников не включено в карты источников. Браузеры обычно пытаются загрузить источник с веб-сервера или файловой системы. Вы должны убедиться, что правильно установили output.devtoolModuleFilenameTemplate для соответствия URL-адресам источников.

(lines only) - Карты источников упрощены до одного сопоставления на строку. Обычно это означает одно сопоставление на оператор (предполагая, что вы написали его таким образом). Это предотвращает отладку выполнения на уровне операторов и установки точек останова в столбцах строки. Сочетание с минимизацией невозможно, поскольку минимизаторы обычно выдают только одну строку.

Разработка

Следующие параметры идеально подходят для разработки:

eval - Каждый модуль выполняется с eval() и //# sourceURL. Это довольно быстро. Главный недостаток заключается в том, что он не отображает номера строк правильно, поскольку он сопоставляется с транспилированным кодом, а не с исходным кодом (нет карт источников от загрузчиков).

eval-source-map - Каждый модуль выполняется с eval() и карта источников добавляется как DataUrl к eval(). Первоначально это медленно, но обеспечивает высокую скорость пересборки и дает реальные файлы. Номера строк правильно сопоставлены, поскольку они сопоставляются с исходным кодом. Он дает карты источников наилучшего качества для разработки.

eval-cheap-source-map - Аналогично eval-source-map, каждый модуль выполняется с eval(). Он «дешевый», потому что у него нет сопоставлений столбцов, он отображает только номера строк. Он игнорирует карты источников от загрузчиков и отображает только транспилированный код, аналогичный инструменту разработчика eval.

eval-cheap-module-source-map - Аналогично eval-cheap-source-map, однако в этом случае карты источников от загрузчиков обрабатываются для получения лучших результатов. Однако карты источников загрузчика упрощены до одного сопоставления на строку.

Особые случаи

Следующие параметры не подходят ни для разработки, ни для продакшена. Они необходимы для некоторых особых случаев, например, для некоторых сторонних инструментов.

inline-source-map - Карта источников добавляется как DataUrl к пакету.

cheap-source-map - Карта источников без сопоставлений столбцов, игнорирующая карты источников загрузчика.

inline-cheap-source-map - Аналогично cheap-source-map, но карта источников добавляется как DataUrl к пакету.

cheap-module-source-map - Карта источников без сопоставлений столбцов, которая упрощает карты источников загрузчика до одного сопоставления на строку.

inline-cheap-module-source-map - Аналогично cheap-module-source-map, но карта источников добавляется как DataUrl к пакету.

Продакшен

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

(none) (Опустите параметр devtool или установите devtool: false) - Карта источников не выводится. Это хороший вариант для начала.

source-map - Полная карта источников выводится как отдельный файл. Он добавляет комментарий со ссылкой в пакет, чтобы инструменты разработки знали, где его найти.

warning

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

hidden-source-map - То же самое, что и source-map, но не добавляет комментарий со ссылкой в пакет. Полезно, если вы хотите, чтобы карты источников только сопоставляли трассировки стека ошибок из отчетов об ошибках, но не хотите предоставлять свою карту источников для инструментов разработки браузера.

warning

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

nosources-source-map - Создается карта источников без sourcesContent в ней. Ее можно использовать для сопоставления трассировок стека на клиенте, не предоставляя весь исходный код. Вы можете развернуть файл карты источников на веб-сервере.

warning

Она все еще предоставляет имена файлов и структуру для декомпиляции, но не предоставляет исходный код.

tip

Если стандартный плагин webpack minimizer был переопределен (например, для настройки параметров terser-webpack-plugin), убедитесь, что его замена настроена с помощью sourceMap: true для включения поддержки SourceMap.

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

Spec-Zone.ru

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