博客
关于我
由浅及深,从零配置 webpack
阅读量:652 次
发布时间:2019-03-15

本文共 3421 字,大约阅读时间需要 11 分钟。

Webpack 配置与优化指南

1. 安装 Webpack

安装 Webpack 的方式主要有两种:全局安装和项目本地安装。

全局安装

npm install webpack webpack-cli -g

本地安装

npm install webpack webpack-cli -D

指定版本

npm install webpack@4.25.0 webpack-cli -D

检查版本

npm info webpack

2. Webpack 基础配置

创建 webpack.config.js 文件:

const path = require('path');module.exports = {  mode: "production",  entry: './src/index.js',  output: {    filename: 'bundle.js',    path: path.resolve(__dirname, 'dist')  }};

打包命令

npx webpack -v

3. Webpack 核心概念

Loader

Loader 是 Webpack 用于处理文件类型的工具。常见 Loader 包括:

  • raw-loader:加载文件原始内容
  • file-loader:将文件输出到文件夹
  • url-loader:根据文件大小决定加载方式
  • style-loader:加载 CSS 文件
  • css-loader:处理 CSS 模块
  • sass-loader:处理 Sass 文件
  • postcss-loader:扩展 CSS 语法

Plugin

Plugin 可以扩展 Webpack 的功能,常见 Plugin 包括:

  • html-webpack-plugin:生成 HTML 文件
  • clean-webpack-plugin:清理打包目录
  • webpack-dev-server:启动开发服务器
  • mini-css-extract-plugin:提取 CSS 文件

4. 样式文件处理

安装相关 Loader:

npm install style-loader css-loader -D

配置 webpack.config.js

module.exports = {  module: {    rules: [      {        test: /\.css$/,        use: ['style-loader', 'css-loader']      }    ]  }};

5. Sass 文件处理

安装相关插件:

npm install sass-loader sass -D

配置 webpack.config.js

module.exports = {  module: {    rules: [      {        test: /\.scss$/,        use: [          'style-loader',          'css-loader',          'sass-loader',          'postcss-loader'        ]      }    ]  }};

6. 图片处理

安装 file-loaderurl-loader

npm install file-loader -D

配置 webpack.config.js

module.exports = {  module: {    rules: [      {        test: /\.(jpg|png|gif)$/,        use: {          loader: 'file-loader',          options: {            outputPath: 'images/'          }        }      }    ]  }};

7. 开发环境优化

webpack.config.js 中添加开发环境配置:

module.exports = {  mode: "development",  devtool: 'cheap-module-eval-source-map',  devServer: {    contentBase: './dist',    open: true,    hot: true  }};

8. Tree Shaking

package.json 中添加 "sideEffects": false,以便 Webpack 在生产模式下删除无用代码。

9. 模块分割

webpack.config.js 中启用代码分割:

module.exports = {  optimization: {    splitChunks: {      chunks: 'all'    }  }};

10. 按需加载

通过动态导入实现按需加载,优化初始加载时间。

11. 代码优化

使用 terser-webpack-pluginmini-css-extract-plugin 进行代码压缩和 CSS 提取。

12. 浏览器缓存

使用 contenthash 配置,确保浏览器缓存机制正常工作。

13. 第三方库打包

webpack.config.js 中使用 externals 配置,避免将第三方库打包到主 bundle 中。

14. Progressive Web Application (PWA)

安装相关插件:

npm install workbox-webpack-plugin -D

配置 webpack.prod.js

const WorkboxPlugin = require('workbox-webpack-plugin');module.exports = {  plugins: [    new WorkboxPlugin.GenerateSW({      clientsClaim: true,      skipWaiting: true    })  ]};

15. TypeScript 支持

安装必要的依赖:

npm install ts-loader @types/lodash -D

配置 tsconfig.json

{  "compilerOptions": {    "target": "es5",    "module": "es6",    "allowJs": true,    "skipLibCheck": true,    "strict": true,    "forceConsistentCasingInFileNames": true,    "noEmit": true,    "esModuleInterop": true,    "moduleResolution": "node",    "resolveJsonModule": true  }}

16. 请求转发与路由

使用 historyApiFallback 配置,实现单页面应用路由。

17. ESLint 集成

安装相关依赖:

npm install eslint -D

配置 .eslintrc.js

module.exports = {  env: {    browser: true,    es6: true  },  extends: [    'react-app'  ],  parserOptions: {    ecmaVersion: 'latest',    sourceType: 'module'  }};

18. 性能优化

  • 使用高版本的 Webpack 和 Node.js
  • 启用多进程打包工具如 happypack
  • 使用并行压缩工具如 webpack-parallel-uglify-plugin
  • 优化图片处理,使用 image-webpack-loader

19. Loader 编写

Loader 应遵循单一职责原则,使用 loader-utils 提供工具支持。

20. Plugin 编写

通过监听 Webpack 的事件钩子,扩展功能,确保插件有序运行。

转载地址:http://txfmz.baihongyu.com/

你可能感兴趣的文章
Pandas模块,我觉得掌握这些就够用了!
查看>>
Pandas玩转文本处理!
查看>>
SpringBoot 整合 Mybatis Plus 实现基本CRUD功能
查看>>
pandas的to_sql方法中使用if_exists=‘replace‘
查看>>
Springboot ppt转pdf——aspose方式
查看>>
pandas读取csv编码utf-8报错
查看>>
pandas读取parquet报错
查看>>
pandas读取数据用来深度学习
查看>>
pandas读取文件时,不去掉前面的0 保留原有的数据格式
查看>>
Pandas进阶大神!从0到100你只差这篇文章!
查看>>
spring5-介绍Spring框架
查看>>
pandas,python - 如何在时间序列中选择特定时间
查看>>
Spring 框架之 AOP 原理深度剖析
查看>>
Pandas:如何按列元素的组合分组,以指示基于不同列的值的同现?
查看>>
Pandas:将一列与数据帧的所有其他列进行比较
查看>>
PANDA和GLOB:将文件夹中的所有xlsx文件转换为CSV类型错误:__init__()获得意外的关键字参数‘;xfid‘;
查看>>
panda查找想要找的行合并成一个新pd
查看>>
PANDA:基于多列对数据表的行运行计算,并将输出存储在新列中
查看>>
PandoraFMS 监控软件 SQL注入漏洞复现
查看>>
PandoraFMS 监控软件 任意文件上传漏洞复现
查看>>