[TOC]
# webpack-merge
https://github.com/survivejs/webpack-merge
我们还是会遵循不重复原则 (Don't repeat yourself - DRY),保留一个 “通用” 配置。为了将这些配置合并在一起,我们将使用一个名为[`webpack-merge`](https://github.com/survivejs/webpack-merge)的工具。通过 “通用” 配置,我们不必在环境特定 (environment-specific) 的配置中重复代码。
安装`webpack-merge`开始,并将之前指南中已经成型的那些代码再次进行分离:
~~~
npm install -D webpack-merge
~~~
```js
const merge = require('webpack-merge');
const base = require('./webpack.base.js');
module.exports = merge(base, {
mode: 'production',
devtool: 'source-map',
output: {
publicPath: '/',
},
});
// 作者:任沫
// 链接:https://juejin.im/post/5e8b3e626fb9a03c546c2e60
```
> [生产环境构建](https://www.webpackjs.com/guides/production/)
# webpack-chain
https://github.com/neutrinojs/webpack-chain
如果webpack 配置很简单或者直接写死一个对象就行,不推荐引入 webpack-chain,如果有多个配置需要合并的需求,可以引入 webpack-merge 。
Vue CLI3 脚手架生成的项目使用这种方式配置 webpack。
[webpack-chain 项目中文翻译](https://segmentfault.com/a/1190000017547171)
# 优化
[An in-depth guide to performance optimization with webpack](https://blog.logrocket.com/guide-performance-optimization-webpack/)
## Happypack
[HappyPack](https://www.npmjs.com/package/happypack)通过并行转换文件来加快初始 Webpack 的构建速度
# 构建分析
## analyse 分析
可以尝试
```
webpack --profile --json > stats.json
```
然后将生成的 json 文件上传到
http://webpack.github.io/analyse/
会有一个直观的认识
[https://huangxsu.com/2018/08/12/webpack-optimization/](https://huangxsu.com/2018/08/12/webpack-optimization/)
[Webpack 打包结果分析工具:Webpack Bundle Analyzer](https://rossta.net/blog/webpacker-output-analysis-with-webpack-bundle-analyzer.html)
## 分析工具
[Webpack Visualizer](https://chrisbateman.github.io/webpack-visualizer/)(比较重)
[Webpack Analyze](https://webpack.github.io/analyse/)
[Source Map Explorer](https://github.com/danvk/source-map-explorer)
[Whybundled](https://github.com/d4rkr00t/whybundled)
[webpack surviveJS-构建分析](https://lvzhenbang.github.io/webpack-book/zh/optimizing/06_build_analysis.html#%E9%85%8D%E7%BD%AEwebpack)
[https://zhuanlan.zhihu.com/p/26710831](https://zhuanlan.zhihu.com/p/26710831)
[使用 source-map-explorer 分析前端打包结果进行包体积优化](https://lzw.me/a/source-map-explorer.html)
- 讲解 Markdown
- 示例
- SVN
- Git笔记
- github 相关
- DESIGNER'S GUIDE TO DPI
- JS 模块化
- CommonJS、AMD、CMD、UMD、ES6
- AMD
- RequrieJS
- r.js
- 模块化打包
- 学习Chrome DevTools
- chrome://inspect
- Chrome DevTools 之 Elements
- Chrome DevTools 之 Console
- Chrome DevTools 之 Sources
- Chrome DevTools 之 Network
- Chrome DevTools 之 Memory
- Chrome DevTools 之 Performance
- Chrome DevTools 之 Resources
- Chrome DevTools 之 Security
- Chrome DevTools 之 Audits
- 技巧
- Node.js
- 基础知识
- package.json 详解
- corepack
- npm
- yarn
- pnpm
- yalc
- 库处理
- Babel
- 相关库
- 转译基础
- 插件
- AST
- Rollup
- 基础
- 插件
- Webpack
- 详解配置
- 实现 loader
- webpack 进阶
- plugin 用法
- 辅助工具
- 解答疑惑
- 开发工具集合
- 花样百出的打包工具
- 纷杂的构建系统
- monorepo
- 前端工作流
- 爬虫
- 测试篇
- 综合
- Jest
- playwright
- Puppeteer
- cypress
- webdriverIO
- TestCafe
- 其他
- 工程开发
- gulp篇
- Building With Gulp
- Sass篇
- PostCSS篇
- combo服务
- 编码规范检查
- 前端优化
- 优化策略
- 高性能HTML5
- 浏览器端性能
- 前后端分离篇
- 分离部署
- API 文档框架
- 项目开发环境
- 基于 JWT 的 Token 认证
- 扯皮时间
- 持续集成及后续服务
- 静态服务器搭建
- mock与调试
- browserslist
- Project Starter
- Docker
- 文档网站生成
- ddd