<webpack>打包文件相关
打包js
- 命令行:webpack entry
output
1 | webpack index.js bundle.js |
- webpack配置文件
打包ES6
- babel-loader:https://www.webpackjs.com/loaders/babel-loader/
- babel配置:https://crazyaguai.github.io/2018/11/14/Babel%E9%85%8D%E7%BD%AE/
1 | { |
打包ts
处理css
- 处理css并提取公共代码
- style-loader 创建style标签写入html中
- css-loader js可以引入css
- loader
1 | { |
- plugin
1 | new ExtractTextPlugin({ |
处理sass
- 安装依赖
1 | npm install sass-loader node-sass --save-dev |
- loader
1 | { |
- 压缩提取的css并且删除重复内容
1 | new OptimizeCSSPlugin({ |
- css tree-shaking(对于变量css无法使用)
1 | new PurifyCss({ |
PostCss
- 安装
1 | npm install postcss postcss-loader autoprefixer --save-dev |
- Autoprefixer 添加浏览器前缀
- css-nano 压缩css
- css-next 使用css新语法(css Variables\custom selectors\calc)
- postcss-sprites 转换雪碧图
- 在sass-loader和css-loader之间使用
1 | { |
Tree Shaking
js Tree Shaking
- 使用场景:常规优化、使用第三方库的某一个功能
- https://www.webpackjs.com/guides/tree-shaking/
- lodash 需要配置babel babel-plugin-lodash插件
1
new webpack.optimize.UglifyJsPlugin()
css Tree Shaking
- 安装 purifycss-webpack
- glob-all 支持多路径
1 | new PurifyCss({ |
图片处理
- file-loader
- url-loader
- img-loader
- postcss-sprites
1 | { |
字体文件处理
1 | { |
第三方js库
- webpack.providePlugin 不用在文件中import,webpack会注入
1 | webpack.providePlugin({ |
- 使用别名引入非node_modules文件 https://www.webpackjs.com/configuration/resolve/, 然后再配置providePlugin
1 | resolve: { |
- imports-loader
1 | { |
提前加载webpack代码
- 将webpack代码插入html中
- inline-manifest-webpack-plugin 提取manifest文件到html中,减少浏览器请求,与htmlwebpackplugin搭配可能会有BUG,推荐使用下边的
- html-webpack-inline-chunk-plugin
1 | new HtmlInlineChunkPlugin({ |