本文共 3421 字,大约阅读时间需要 11 分钟。
安装 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
创建 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
Loader 是 Webpack 用于处理文件类型的工具。常见 Loader 包括:
raw-loader:加载文件原始内容file-loader:将文件输出到文件夹url-loader:根据文件大小决定加载方式style-loader:加载 CSS 文件css-loader:处理 CSS 模块sass-loader:处理 Sass 文件postcss-loader:扩展 CSS 语法Plugin 可以扩展 Webpack 的功能,常见 Plugin 包括:
html-webpack-plugin:生成 HTML 文件clean-webpack-plugin:清理打包目录webpack-dev-server:启动开发服务器mini-css-extract-plugin:提取 CSS 文件安装相关 Loader:
npm install style-loader css-loader -D
配置 webpack.config.js:
module.exports = { module: { rules: [ { test: /\.css$/, use: ['style-loader', 'css-loader'] } ] }}; 安装相关插件:
npm install sass-loader sass -D
配置 webpack.config.js:
module.exports = { module: { rules: [ { test: /\.scss$/, use: [ 'style-loader', 'css-loader', 'sass-loader', 'postcss-loader' ] } ] }}; 安装 file-loader 或 url-loader:
npm install file-loader -D
配置 webpack.config.js:
module.exports = { module: { rules: [ { test: /\.(jpg|png|gif)$/, use: { loader: 'file-loader', options: { outputPath: 'images/' } } } ] }}; 在 webpack.config.js 中添加开发环境配置:
module.exports = { mode: "development", devtool: 'cheap-module-eval-source-map', devServer: { contentBase: './dist', open: true, hot: true }}; 在 package.json 中添加 "sideEffects": false,以便 Webpack 在生产模式下删除无用代码。
在 webpack.config.js 中启用代码分割:
module.exports = { optimization: { splitChunks: { chunks: 'all' } }}; 通过动态导入实现按需加载,优化初始加载时间。
使用 terser-webpack-plugin 和 mini-css-extract-plugin 进行代码压缩和 CSS 提取。
使用 contenthash 配置,确保浏览器缓存机制正常工作。
在 webpack.config.js 中使用 externals 配置,避免将第三方库打包到主 bundle 中。
安装相关插件:
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 }) ]}; 安装必要的依赖:
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 }} 使用 historyApiFallback 配置,实现单页面应用路由。
安装相关依赖:
npm install eslint -D
配置 .eslintrc.js:
module.exports = { env: { browser: true, es6: true }, extends: [ 'react-app' ], parserOptions: { ecmaVersion: 'latest', sourceType: 'module' }}; happypackwebpack-parallel-uglify-pluginimage-webpack-loaderLoader 应遵循单一职责原则,使用 loader-utils 提供工具支持。
通过监听 Webpack 的事件钩子,扩展功能,确保插件有序运行。
转载地址:http://txfmz.baihongyu.com/