#webpack #webpack-5
#webpack #webpack-5
Вопрос:
Я только что обновился до webpack 5
.
Это мой webpack.config.ts
:
import * as path from "path";
import * as webpack from "webpack";
const config: webpack.Configuration = {
mode: "production",
devtool: false,
output: {
filename: "[name].[contenthash:5].js",
path: path.resolve(__dirname, "public"),
publicPath: "/"
},
entry: {
app: "./src/index.tsx"
},
module: {
rules:[{
test: /.(js|jsx|ts|tsx)$/,
include: path.resolve(__dirname, "src"),
use: ["babel-loader"]
}]
},
plugins: [
new HtmlWebpackPlugin({ ... })
],
optimization: {
moduleIds: "deterministic",
runtimeChunk: "single",
splitChunks: {
chunks: "all",
cacheGroups: {
defaultVendors: {
filename: `vendors.[contenthash:5].js`
}
}
}
}
}
Это довольно стандартно.
Это вывод пакета:
Все имеет смысл. Это то, что мы имеем:
runtime
Фрагмент. ИзruntimeChunk: "single"
опцииvendors
Фрагмент. ИзdefaultVendors
cacheGroupapp
Фрагмент, начиная с точкиapp: "./src/index.tsx"
входа
Но есть и другие журналы, которые я не понимаю:
потерянные модули
webpack
Почему так много модулей обнаруживается как потерянные? Общее количество файлов в моей src
папке составляет около ~ 500. Вероятно, там есть несколько потерянных файлов, но я уверен, что большинство из них ни в коем случае не следует считать потерянными, поскольку они используются во всем коде приложения.
Это их определение для потерянных модулей:
И я почти уверен, что большинство моих src
файлов включены в app
чанк. Итак, как их можно считать потерянными? Могу ли я проверить или зарегистрировать, какие модули считаются потерянными?
Я не уверен, началось ли это с webpack 5 или нет. Не помню, было ли это в журналах webpack 4. Должен ли я беспокоиться об этом? Он не запускает ни warnings
одного, но он регистрируется таким образом.
Ответ №1:
Мне было любопытно узнать о потерянных модулях, когда я анализировал статистику своего webpack. Я заметил, что объединенные модули всегда считаются потерянными модулями. Если вы посмотрите в webpack bundle analyzer и увидите объединенные модули, скорее всего, это будут ваши потерянные модули. Я не уверен, является ли это ошибкой или нет в webpack.
Комментарии:
1. Что вы подразумеваете под объединенными модулями?
2. В некоторых случаях Webpack автоматически объединяет код в качестве оптимизации. Если вы используете подключаемый модуль bundle analyzer, вы увидите объединенные модули в своей сборке. — для получения дополнительной информации о конкатенации — посмотрите здесь webpack.js.org/plugins/module-concatenation-plugin
3.
webpack bundle analyzer
полезный совет, спасибо!4. webpack, похоже, считает это не ошибкой, хотя я не уверен, что понимаю объяснение. github.com/webpack/webpack/issues/12568