React,使用 webpack 创建最佳生产包
React, creating optimal production bundles with webpack
今天我深入了解了 Webpack 的内部结构,并设法使用了它的许多有用功能(通过 Webpack 加载器),例如 CSS
模块和 Babel 转译器。我想用它来制作一个 React 应用程序(没有 create-react-app
)。
这是我的配置文件:
const HtmlWebPackPlugin = require("html-webpack-plugin");
const path = require('path');
module.exports = {
entry: {
main: './src/index.js',
},
output: {
path: path.resolve(__dirname, 'dist'),
filename: '[name].js'
},
module: {
rules: [
{
test: /\.js|jsx$/,
exclude: /node_modules/,
use: {
loader: "babel-loader"
}
},
{
test: /\.html$/,
exclude: /node_modules/,
use: [
{
loader: "html-loader",
options: { minimize: true }
}
]
},
{
test: /\.css$/,
exclude: /node_modules/,
use: [
{
loader: 'style-loader'
},
{
loader: 'css-loader',
query: {
modules: true,
localIdentName: '[name]__[local]___[hash:base64:5]'
}
}
]
}
]
},
plugins: [
new HtmlWebPackPlugin({
template: "./src/index.html",
filename: "index.html"
})
]
};
因为我现在有一个入口点,所以我的整个包都被转换成一个 JS
文件。然而,随着我的 React 应用程序的增长,将捆绑包分成多个块可能会更好,这样它们可以更快地下载(这是正确的术语吧?)。
问题:
- 将应用程序拆分为多个块时需要考虑哪些方面?
- 如何将应用程序拆分成多个块?我是否只输入多个切入点(如果是这种情况,那么什么是战术切入点?)?
您不需要有多个入口点。
您可以基于
分块
- 路线
- 块的最大大小
- 为 外部依赖项
提供单独的块
- 在有意义的地方对模块使用动态导入
如果您不确定要使用什么参数,请使用 webpack 的 splitchunk 插件 (https://webpack.js.org/plugins/split-chunks-plugin/) 的默认值。
然后您可以尝试自己的自定义设置,找出最适合您的应用的设置。
今天我深入了解了 Webpack 的内部结构,并设法使用了它的许多有用功能(通过 Webpack 加载器),例如 CSS
模块和 Babel 转译器。我想用它来制作一个 React 应用程序(没有 create-react-app
)。
这是我的配置文件:
const HtmlWebPackPlugin = require("html-webpack-plugin");
const path = require('path');
module.exports = {
entry: {
main: './src/index.js',
},
output: {
path: path.resolve(__dirname, 'dist'),
filename: '[name].js'
},
module: {
rules: [
{
test: /\.js|jsx$/,
exclude: /node_modules/,
use: {
loader: "babel-loader"
}
},
{
test: /\.html$/,
exclude: /node_modules/,
use: [
{
loader: "html-loader",
options: { minimize: true }
}
]
},
{
test: /\.css$/,
exclude: /node_modules/,
use: [
{
loader: 'style-loader'
},
{
loader: 'css-loader',
query: {
modules: true,
localIdentName: '[name]__[local]___[hash:base64:5]'
}
}
]
}
]
},
plugins: [
new HtmlWebPackPlugin({
template: "./src/index.html",
filename: "index.html"
})
]
};
因为我现在有一个入口点,所以我的整个包都被转换成一个 JS
文件。然而,随着我的 React 应用程序的增长,将捆绑包分成多个块可能会更好,这样它们可以更快地下载(这是正确的术语吧?)。
问题:
- 将应用程序拆分为多个块时需要考虑哪些方面?
- 如何将应用程序拆分成多个块?我是否只输入多个切入点(如果是这种情况,那么什么是战术切入点?)?
您不需要有多个入口点。
您可以基于
分块- 路线
- 块的最大大小
- 为 外部依赖项 提供单独的块
- 在有意义的地方对模块使用动态导入
如果您不确定要使用什么参数,请使用 webpack 的 splitchunk 插件 (https://webpack.js.org/plugins/split-chunks-plugin/) 的默认值。
然后您可以尝试自己的自定义设置,找出最适合您的应用的设置。