前言
从零搭一个极简版webpack+React工程(四)
书接上文,在之前章节作者现已完成完成webpack的一些装备,包含支持react、Typescript、样式引进、打包代码压缩
本章讲述一些其他好用的webpack装备
webpackbar
当时工程在履行npm run build
或许 npm start
时只能默默的等候终端控制台输出,抱负的控制台作者期望能够看到webpack履行进度。所以这儿作者运用了webpackbar这个插件,能够在履行npm run build
或许 npm start
时让终端控制台显现当时进度
装置
npm i webpackbar -D
修正 webpack.common.js
- 引进webpackbar
- plugins 运用 WebpackBar
// other
const WebpackBar = require("webpackbar")
module.exports = {
// other
plugins: [
// other
new WebpackBar(),
],
// other
}
作用
从头履行 npm run build
能够看到下图作用
webpack-bundle-analyzer
这是一个打包文件剖析东西,让每个文件巨细可视化,这样就能够在优化相关文件时快速找到需要优化的模块
装置
npm i webpack-bundle-analyzer -D
修正 webpack.prod.js
由于只要打包出产代码时才需要知道哪些需要优化,所以我们只需要修正webpack.prod.js即可
// other
const CssMinimizerWebpackPlugin = require("css-minimizer-webpack-plugin")
const BundleAnalyzerPlugin =
require("webpack-bundle-analyzer").BundleAnalyzerPlugin
module.exports = merge(common, {
mode: "production",
plugins: [
// other
new BundleAnalyzerPlugin(),
],
})
作用
从头履行 npm run build
浏览器 http://localhost:8888/ 能够看到下图作用
注意:这儿的端口号和开发发动的端口号一致
终端控制台
减小出产包体积
经过 webpack-bundle-analyzer 这个插件能够看到,当时出产包占用体积最大的事react-dom.production.min.js这个文件;这个文件是react-dom文件且现已压缩过了,代码还能如何减小呢?
Externals
严格来说运用 Externals 并不是优化代码,而是将一些代码从输出的 bundle 中扫除。由于 bundle 将代码扫除,所以bundle体积会变小,可是bundle代码时需要这些依靠的。这些依靠包需要经过 script 标签的局势引进到 html 文件中。否则 bundle 将不能正常运转
修正 webpack.common.js
module.exports = {
// other
externals: {
react: "React",
"react-dom": "ReactDOM",
},
}
修正 tempate.html
新增两个script标签,引进 react和react-dom
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<div id="root"></div>
</body>
<script src="https://cdn.staticfile.org/react/16.4.0/umd/react.development.js"></script>
<script src="https://cdn.staticfile.org/react-dom/16.4.0/umd/react-dom.development.js"></script>
</html>
作用
从头履行 npm run build
浏览器 http://localhost:8888/ 能够看到下图作用
终端控制台
打包后的 index.js 从 127k 降低到 1k 一下;当然这是由于作者在react中代码比较简单,实际开发过程中打包后文件必定不止这些;这儿仅仅演示如何扫除一些经过script标签引进的依靠包。
不仅仅 react 和 react-dom ;还有 react-redux 、bizCharts 等这些包