До webpack 4.0 мы извлекали стили css из js-файлов в отдельные css-файлы с помощью плагина extract-text-webpack-plugin. Плюсы и минусы плагина extract-text-webpack-plugin:
После webpack 4.0 официально рекомендуется использовать плагин mini-css-extract-plugin для упаковки CSS-файлов (извлечение CSS-кода из CSS-файлов в отдельные файлы, сжатие CSS-кодов и т. д.).
инструкции
Поместите все файлы конфигурации в корневой каталог проекта и запуститеpackage.jsonкоманда в . Конечно, для базовой настройки входа и выхода веб-пакета необходимо обратиться к официальной документации веб-сайта для завершения настройки.
Чтобы быть ближе к реальному сценарию приложения, на этот раз используются три файла конфигурации, чтобы объяснить их конфигурации и меры предосторожности соответственно.
webpack.common.js (общий файл конфигурации)
Конфигурация, совместно используемая средой разработки и производственной средой, с помощьюwebpack-mergeПлагины можно объединять со средами разработки или производства, тем самым уменьшая дублирование конфигурации.
Представлены переменные среды Node.process.env.NODE_ENV, вы можете динамически изменять конфигурацию в соответствии с входящими параметрами среды, подробности см. в коде.
webpack.prod.js (файл конфигурации для рабочей среды)
Конфигурация производственной среды, встряхивание деревьев и сжатие кода js включены по умолчанию;
пройти черезoptimize-css-assets-webpack-pluginПлагин умеет сжимать css, при этом должен быть указан плагин сжатия js (в примере используетсяterser-webpack-pluginплагин), иначе webpack больше не будет сжимать файлы js;
настраиватьoptimization.splitChunks.cacheGroups, вы можете извлечь блоки кода css в отдельные файлы.
побочные эффекты:Когда производственная среда упакована, встряхивание дерева будет включено по умолчанию, если не установленоsideEffects, некоторые черезimportФайлы CSS, импортированные таким образом, могут быть не упакованы, потому что древовидная тряска отбрасывает файлы, которые ничего не экспортируют (т. е. в файле нет ключевого слова export).Итак, не хотите, чтобы файлы дрожали, пожалуйста, вsideEffectsНастройте соответствующее регулярное выражение в (ниже добавьте его в package.json).
NODE_ENV:Поскольку в проекте используется переменная окружения Node, ее необходимо упаковать черезNODE_ENVПередайте переменные среды. Конфигурация здесь не проблема в работе macOS.Для друзей системы Windows вы можете установитьcross-envпакет npm, как использовать (установитьnpm i cross-env -S, добавьте "cross-env" перед командой, например: "scriipt":{ "dev": "cross-env NODE_ENV=development webpack --config webpack.dev.js --progress" }).
Для упаковки в разных средах, если изображение не может отображаться (особенно изображение в css), проверьтеpublicPathКонфигурация.
mode: 'production'Tree-shaking и сжатие кода js будут включены, но конфигурацияoptimization. minimizerОтключит сжатие по умолчанию. Поэтому при указании плагина сжатия css обязательно укажите плагин сжатия js.
mini-css-extract-pluginплагин, комбинированныйoptimization.splitChunks.cacheGroupsКонфигурация, вы можете упаковать код css в отдельный файл css, и вы можете установить путь хранения (путем установки плагинаfilenameиchunkFilename).