webpack5 多页面打包配置
webpack5 多页面打包配置
John Doewebpack5 多页面打包配置
确定页面结构
1 | ├── package-lock.json |
1 | src |
1 | src/pages |
步骤
1. 安装 webpack
1 | npm install webpack webpack-cli -D |
配置package.json.
-mode是webpack的环境。 webpack
中文文档 (docschina.org)
是为了后续打包配置判断环境需要的。 可以安装cross-env 替代
1 | {"scripts": { "build": "webpack --progress --mode=production", // |
2. 配置多页面
配置入口文件
入口和上下文
| webpack 中文文档 (docschina.org)
我这里的代码会变成这样的形式, 自行自定义配置
1 | { |
1 | const srcPagePath = path.resolve(__dirname, 'src/pages');/** 获取所有页面文件夹 */function generatePages() { |
配置Output, 也是自定义的。 默认应当是dist文件夹
1 | // 编译后放置的文件夹output: { |
3. html 页面配置
template 是要渲染的html,
filename 是打包出来的文件名
chunks 是上面entry的键。
1 | const HtmlWebpackPlugin = require('html-webpack-plugin');plugins: [ |
这样基本上就可以运行了。
可选
ts文件配置
为了可以编写ts文件。 需要安装 typescript 和ts-loader
ts-loader 是为了让webpack识别ts文件。 但是ts-loader
会进行类型检查。 速度会比较慢, 这里用 babel-loader
配置.然后在提交git前执行 tsc --noEmit 检查类型。
为了自动化的话可以用git的pre-commit 自动执行检查
1 | module: { |
scss 文件处理
MiniCssExtractPlugin 和 style-loader 会冲突。 看个人选择
1 | const MiniCssExtractPlugin = require('mini-css-extract-plugin');{ |
图片处理
webpack5 自带静态文件处理loader。配置一下就行
1 | { |
html 里面的图片如何处理
html-webpack-plugin 支持ejs 语法, 可以通过require处理
1 | <img src="<%= require('./phone.png')%>" alt=""> |
或者通过js进行引入
1 | const picEl = require('../xx.png)document.querySelector('img').src = picEl |
或者当背景图用
1 | background: url('@/assets/images/phone.png'); |
eslint
这个没有什么好说的, 搜eslint相关教程
babel 配置
如果需要coreJs,可以配置corejs。 babel 还需要browsetlist
文件进行辅助来按需引入
1 | { "presets": [ "@babel/preset-typescript", "@babel/preset-env", // ["@babel/preset-env", { // "useBuiltIns": "usage", // "corejs": { // "version": 3 // } // }] ]} |
完整配置文件
1 | /* eslint-disable @typescript-eslint/no-var-requires *//* eslint-disable import/no-extraneous-dependencies */const path = require('path');const fs = require('fs');const HtmlWebpackPlugin = require('html-webpack-plugin');const { CleanWebpackPlugin } = require('clean-webpack-plugin');const MiniCssExtractPlugin = require('mini-css-extract-plugin');const srcPagePath = path.resolve(__dirname, 'src/pages');/** 获取所有页面文件夹 */function generatePages() { |







