Spec-Zone.ru › webpack 5

Командная строка интерфейса

Для правильного использования и более легкой дистрибуции этого конфигурационного файла, webpack можно настроить с помощью webpack.config.js. Любые параметры, переданные в командную строку, будут сопоставлены с соответствующим параметром в файле конфигурации.

Прочитайте руководство по установке, если у вас еще нет установленных webpack и CLI.

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

webpack-cli v5.0.0+ требует node >= v14.15.0, webpack >= v5.0.0, и webpack-dev-server >= v4.0.0.

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

Если вы хотите запустить webpack с помощью npx убедитесь, что у вас установлен webpack-cli.

Команды

webpack-cli предлагает множество команд, чтобы облегчить работу с webpack. По умолчанию webpack поставляется с

Команда Использование Описание
build build|bundle|b [entries...] [options] Запустить webpack (команда по умолчанию, может быть опущена).
configtest configtest|t [config-path] Проверить конфигурацию webpack.
help help|h [command] [option] Отобразить справку по командам и опциям.
info info|i [options] Выводит информацию о вашей системе.
init init|create|c|new|n [generation-path] [options] Инициализировать новый проект webpack.
loader loader|l [output-path] [options] Создать загрузчик.
plugin plugin|p [output-path] [options] Создать плагин.
serve serve|server|s [options] Запустить webpack-dev-server.
version version|v [commands...] Вывести номер версии webpack, webpack-cli и webpack-dev-server.
watch watch|w [entries...] [options] Запустить webpack и следить за изменениями файлов.

Сборка

Запустить webpack (команда по умолчанию, может быть опущена).

npx webpack build [options]

пример

npx webpack build --config ./webpack.config.js --stats verbose

Инициализация

Используется для инициализации нового проекта webpack.

npx webpack init [generation-path] [options]

пример

npx webpack init ./my-app --force --template=default

Путь к генерации

Местоположение, где нужно сгенерировать конфигурацию. По умолчанию process.cwd().

Опции

-t, --template

string = 'default'

Имя шаблона для генерации.

-f, --force

boolean

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

совет

См. полное описание команды webpack init.

Загрузчик

Создать загрузчик.

npx webpack loader [output-path] [options]

пример

npx webpack loader ./my-loader --template=default

Путь к выводу

Путь к выходной директории, например ./loader-name.

Опции

-t, --template

string = 'default'

Тип шаблона.

Плагин

Создать плагин.

npx webpack plugin [output-path] [options]

пример

npx webpack plugin ./my-plugin --template=default

Путь к выводу

Путь к выходной директории, например ./plugin-name.

Опции

-t, --template

string = 'default'

Тип шаблона.

Информация

Выводит информацию о вашей системе.

npx webpack info [options]

пример

npx webpack info --output json --addition-package postcss

Опции для получения информации

-a, --additional-package

string

Добавляет дополнительные пакеты в вывод.

пример

npx webpack info --additional-package postcss

-o, --output

string : 'json' | 'markdown'

Для получения вывода в указанном формате.

пример

npx webpack info --output markdown

Проверка конфигурации

Проверить конфигурацию webpack.

npx webpack configtest [config-path]

пример

npx webpack configtest ./webpack.config.js

Путь к конфигурации

Путь к файлу вашей конфигурации webpack. По умолчанию ./webpack.config.js.

Сервис

Запустить сервер webpack dev.

npx webpack serve [options]

пример

npx webpack serve --static --open
совет

См. полный список опций для команды webpack serve и соответствующую документацию для webpack-dev-server.

Наблюдение

Запустить webpack и следить за изменениями файлов.

npx webpack watch [options]

пример

npx webpack watch --mode development

Флаги

По умолчанию webpack поставляется со следующими флагами:

Флаг / Псевдоним Тип Описание
--entry массив строк Точка входа (точки) вашего приложения, например ./src/main.js
--config, -c массив строк Указать путь к файлу конфигурации webpack, например ./webpack.config.js
--config-name массив строк Имя используемой конфигурации
--name строка Имя конфигурации. Используется при загрузке нескольких конфигураций
--color логическое значение Включить цветной вывод в консоли
--merge, -m логическое значение Объединить две или более конфигураций с помощью webpack-merge
--env массив строк Переменная среды, передаваемая в конфигурацию, если она является функцией
--define-process-env-node-env строка Установить process.env.NODE_ENV на указанное значение
--progress логическое значение, строка Выводить прогресс компиляции во время сборки
--help логическое значение Выводит список поддерживаемых флагов и команд
--output-path, -o строка Местоположение вывода файла, созданного webpack, например ./dist
--target, -t массив строк Устанавливает целевой режим сборки
--watch, -w логическое значение Следить за изменениями файлов
--watch-options-stdin логическое значение Остановить отслеживание при завершении потока ввода
--devtool, -d строка Управление генерацией карт исходного кода.
--json, -j логическое значение, строка Вывести результат как JSON или сохранить в файл
--mode строка Определяет режим, передаваемый в webpack
--version, -v логическое значение Получить текущую версию
--stats логическое значение, строка Указывает webpack, как обрабатывать статистику
--disable-interpret логическое значение Отключить интерпретацию для загрузки файла конфигурации.
--fail-on-warnings логическое значение Прекратить процесс webpack-cli с ненулевым кодом выхода при возникновении предупреждений webpack
--analyze логическое значение Вызывает плагин webpack-bundle-analyzer для получения информации о пакете
--extends, -e массив строк Расширить существующую конфигурацию

Отмененные флаги

Флаг Описание
--no-color Отключает любые цвета в консоли
--no-hot Отключает горячую перезагрузку, если она включена в конфигурации
--no-stats Отключает вывод статистики компиляции, выводимой webpack
--no-watch Не следить за изменениями файлов
--no-devtool Не генерировать карты исходных данных
--no-watch-options-stdin Не останавливать наблюдение при завершении потока stdin

Основные флаги

Начиная с версии CLI v4 и webpack v5, CLI импортирует всю схему конфигурации из ядра webpack, что позволяет настраивать почти все параметры конфигурации из командной строки.

Вот список всех основных флагов, поддерживаемых webpack v5 с CLI v4 - ссылка

Например, если вы хотите включить подсказки производительности в своем проекте, вы бы использовали этот параметр в конфигурации, с помощью флагов ядра вы можете сделать следующее -

npx webpack --performance-hints warning

Использование

С файлом конфигурации

npx webpack [--config webpack.config.js]

См. конфигурацию для параметров в файле конфигурации.

Без файла конфигурации

npx webpack --entry <entry> --output-path <output-path>

пример

npx webpack --entry ./first.js --entry ./second.js --output-path /build

entry

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

npx webpack --entry-reset ./first-entry.js
npx webpack --entry-reset --entry ./first-entry.js
npx webpack --entry-reset ./first-entry.js ./other-entry.js
npx webpack --entry-reset --entry ./first-entry.js ./other-entry.js
предупреждение

Параметр --entry-reset необходим для замены существующего параметра entry, без него параметр --entry добавит еще одну точку входа в существующие точки входа.

подсказка

Используйте синтаксис webpack [command] --entry-reset [entries...] [option], потому что некоторые параметры могут принимать несколько значений, поэтому webpack --target node ./entry.js означает target: ['node', './entry.js']

output-path

Путь для сохранения скомпонованного файла. Он будет сопоставлен с параметрами конфигурации output.path.

Пример

Если структура вашего проекта выглядит следующим образом -

.
├── dist
├── index.html
└── src
    ├── index.js
    ├── index2.js
    └── others.js
npx webpack ./src/index.js --output-path dist

Это скомпонует ваш исходный код с входной точкой index.js, а файл выходного пакета будет иметь путь dist.

asset main.js 142 bytes [compared for emit] [minimized] (name: main)
./src/index.js 30 bytes [built] [code generated]
./src/others.js 1 bytes [built] [code generated]
webpack 5.1.0 compiled successfully in 187 ms
npx webpack ./src/index.js ./src/others2.js --output-path dist/

Это сформирует пакет с обоими файлами как отдельными точками входа.

asset main.js 142 bytes [compared for emit] [minimized] (name: main)
./src/index.js 30 bytes [built] [code generated]
./src/others2.js 1 bytes [built] [code generated]
./src/others.js 1 bytes [built] [code generated]
webpack 5.1.0 compiled successfully in 198 ms

Конфигурации по умолчанию

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

Вот приоритет поиска конфигураций, в порядке возрастания

например - поиск файла конфигурации будет в порядке .webpack/webpackfile > .webpack/webpack.config.js > webpack.config.js

'webpack.config',
'.webpack/webpack.config',
'.webpack/webpackfile',

Общие параметры

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

Обратите внимание, что интерфейс командной строки имеет более высокий приоритет для аргументов, которые вы с ним используете, чем ваш файл конфигурации. Например, если вы передаете --mode="production" в webpack CLI, а ваш файл конфигурации использует development, будет использоваться production.

help

Список основных команд и флагов, доступных в cli

Оба webpack help [command] [option] и webpack [command] --help подходят для получения справки:

npx webpack --help

# or

npx webpack help

Список всех поддерживаемых команд и флагов cli

npx webpack --help=verbose

См. справку по конкретной команде или параметру

npx webpack help --mode

version

Показать версию установленных пакетов и подпакетов

Чтобы проверить версию webpack и webpack-cli, которые вы используете, выполните команду:

npx webpack --version

# or

npx webpack version

Это выведет следующий результат:

webpack 5.31.2
webpack-cli 4.6.0

Он также выведет версию webpack-dev-server, если она установлена:

webpack 5.31.2
webpack-cli 4.6.0
webpack-dev-server 3.11.2

Чтобы проверить версию любого webpack-cli подпакета (например, @webpack-cli/info), выполните команду, похожую на следующую:

npx webpack info --version

Это выведет следующий результат:

@webpack-cli/info 1.2.3
webpack 5.31.2
webpack-cli 4.6.0
webpack-dev-server 3.11.2

config

Скомпилировать исходный код с использованием файла конфигурации

Укажите другой файл конфигурации, отличный от webpack.config.js, который является одним из значений по умолчанию.

npx webpack --config example.config.js

config-name

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

Рассмотрим следующую webpack.config.js:

module.exports = [
  {
    output: {
      filename: './dist-first.js',
    },
    name: 'first',
    entry: './src/first.js',
    mode: 'development',
  },
  {
    output: {
      filename: './dist-second.js',
    },
    name: 'second',
    entry: './src/second.js',
    mode: 'development',
  },
  {
    output: {
      filename: './dist-third.js',
    },
    name: 'third',
    entry: './src/third.js',
    mode: 'none',
    stats: 'verbose',
  },
];

Чтобы запустить только конфигурацию second:

npx webpack --config-name second

Вы также можете передать несколько значений:

npx webpack --config-name first --config-name second

merge

Вы можете объединить две или более различных конфигураций webpack с помощью --merge:

npx webpack --config ./first.js --config ./second.js --merge

extends

webpack-cli v5.1.0+

Вы можете расширить существующие конфигурации webpack с помощью --extends:

npx webpack --extends ./base.webpack.config.js

Подробнее об этом в расширении конфигураций.

json

Вывести результат webpack в формате JSON

npx webpack --json

Если вы хотите сохранить статистику в формате json вместо ее вывода, вы можете использовать -

npx webpack --json stats.json

Во всех остальных случаях webpack выводит набор статистики, показывающей информацию о пакете, пакете и времени. Используя этот параметр, вывод может быть объектом JSON. Этот ответ принимается инструментом анализа webpack analyse, или инструментом chrisbateman's webpack-visualizer, или инструментом th0r's webpack-bundle-analyzer. Инструмент анализа примет JSON и предоставит все детали сборки в графическом виде.

подсказка

См. API данных stats, чтобы узнать больше о генерируемой здесь статистике.

Параметры среды

Когда конфигурация webpack экспортирует функцию, ей может быть передан «среда».

env

npx webpack --env production    # env.production = true

Аргумент --env принимает несколько значений:

Вызов Результат среды
npx webpack --env prod { prod: true }
npx webpack --env prod --env min { prod: true, min: true }
npx webpack --env platform=app --env production { platform: "app", production: true }
npx webpack --env foo=bar=app { foo: "bar=app"}
npx webpack --env app.platform="staging" --env app.name="test" { app: { platform: "staging", name: "test" }
подсказка

Если вы хотите явно установить переменную в пустую строку (""), вам может потребоваться экранировать символы в терминале, например npx webpack --env foo=\"\"

подсказка

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

В дополнение к настраиваемой env выше, есть некоторые встроенные значения в env для использования в вашей конфигурации webpack:

Переменная среды Описание
WEBPACK_SERVE true если используется serve|server|s.
WEBPACK_BUILD true если используется build|bundle|b.
WEBPACK_WATCH true если используется --watch|watch|w.

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

module.exports = (env, argv) => {
  return {
    mode: env.WEBPACK_SERVE ? 'development' : 'production',
  };
};

node-env

Вы можете использовать параметр --node-env для установки process.env.NODE_ENV, который доступен как для пользовательского кода, так и для конфигурации webpack:

npx webpack --node-env production   # process.env.NODE_ENV = 'production'
предупреждение

Этот параметр устарел и удален в webpack-cli v5 в пользу параметра --define-process-env-node-env.

define-process-env-node-env

Для webpack-cli v5+.

Псевдоним для --node-env для установки process.env.NODE_ENV:

npx webpack --define-process-env-node-env production   # process.env.NODE_ENV = 'production'

Когда параметр mode не указан в конфигурации, вы можете использовать параметр --define-process-env-node-env для установки mode. Например, использование --define-process-env-node-env production установит как process.env.NODE_ENV, так и mode в значение 'production'.

Если ваша конфигурация экспортирует функцию, значение --define-process-env-node-env присваивается параметру mode после возврата функции. Это означает, что mode не будет доступно в аргументах функции (env и argv). Однако значение --define-process-env-node-env доступно как argv.nodeEnv внутри функции и может быть использовано соответствующим образом.

module.exports = (env, argv) => {
  console.log(argv.defineProcessEnvNodeEnv); // 'production' if --define-process-env-node-env production is used
  return {
    // your configuration
  };
};

Параметры конфигурации

Параметр Описание Тип ввода Значение по умолчанию
--config Путь к файлу конфигурации строка[] Конфигурации по умолчанию
--config-name Имя конфигурации для использования строка[] -
--env Среда, передаваемая конфигурации, когда это функция строка[] -

Анализ пакета

Также можно использовать webpack-bundle-analyzer для анализа выходных пакетов, созданных webpack. Можно использовать флаг --analyze для вызова через командную строку.

npx webpack --analyze
предупреждение

Убедитесь, что webpack-bundle-analyzer установлен в вашем проекте, иначе командная строка предложит установить его.

Прогресс

Для проверки прогресса любой компиляции webpack можно использовать флаг --progress.

npx webpack --progress

Для сбора данных профиля для шагов прогресса можно передать profile в качестве значения флага --progress.

npx webpack --progress=profile

Передача аргументов командной строки в Node.js

Чтобы передать аргументы непосредственно в процесс Node.js, можно использовать опцию NODE_OPTIONS.

Например, чтобы увеличить лимит памяти процесса Node.js до 4 ГБ

NODE_OPTIONS="--max-old-space-size=4096" webpack

Также можно передать несколько опций в процесс Node.js

NODE_OPTIONS="--max-old-space-size=4096 -r /path/to/preload/file.js" webpack

Коды выхода и их значения

Код выхода Описание
0 Успех
1 Ошибки от webpack
2 Проблема с настройками/опциями или внутренняя ошибка

Переменные среды командной строки

Переменная среды Описание
WEBPACK_CLI_SKIP_IMPORT_LOCAL при использовании true, будет пропущена загрузка локальной инстанции webpack-cli.
WEBPACK_CLI_FORCE_LOAD_ESM_CONFIG при использовании true, будет принудительно загружен конфигурации ESM.
WEBPACK_PACKAGE Использование пользовательской версии webpack в командной строке.
WEBPACK_DEV_SERVER_PACKAGE Использование пользовательской версии webpack-dev-server в командной строке.
WEBPACK_CLI_HELP_WIDTH Использование пользовательской ширины для вывода справки.
WEBPACK_CLI_FORCE_LOAD_ESM_CONFIG=true npx webpack --config ./webpack.config.esm

WEBPACK_PACKAGE

Использование пользовательской версии webpack в командной строке. Учитывая следующее содержание в вашем package.json:

{
  "webpack": "^4.0.0",
  "webpack-5": "npm:webpack@^5.32.0",
  "webpack-cli": "^4.5.0"
}

Для использования webpack v4.0.0:

npx webpack

Для использования webpack v5.32.0:

WEBPACK_PACKAGE=webpack-5 npx webpack

Поиск и устранение неполадок

TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Неизвестное расширение файла ".ts" для ./webpack.config.ts

Вы можете столкнуться с этой ошибкой в случае использования нативного ESM в TypeScript (например, type: "module" в package.json).

webpack-cli поддерживает конфигурацию в формате CommonJS и ESM, сначала он пытается загрузить конфигурацию с помощью require(), как только это происходит с кодом ошибки 'ERR_REQUIRE_ESM' (специальный код для этого случая), он пытается загрузить конфигурацию с помощью import(). Однако, метод import() не будет работать с ts-node без механизмов загрузки, включенных (описано в TypeStrong/ts-node#1007).

Чтобы исправить ошибку выше, используйте следующую команду:

NODE_OPTIONS="--loader ts-node/esm" npx webpack --entry ./src/index.js --mode production

Дополнительную информацию можно найти в нашей документации по созданию конфигурации webpack на TypeScript.

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

Spec-Zone.ru

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