简写:
npm add === npm install
-D === --save-dev
-S === --save
需要安装的相关插件:
创建package.json依赖文件
npm init -y
安装 webpack-cli:
npm install webpack webpack-cli --save-dev
插件-自动生成html文件:
npm add html-webpack-plugin -D
加载器 - 处理html中图片路径:
npm install -S html-withimg-loader
加载器 - 处理css文件:
npm add style-loader css-loader -D
加载器 - 处理less文件:
npm add less less-loader -D
加载器 - 处理高版本js语法:
让webpack配合babel-loader 对js语法做处理
@babel/core是babel的核心库,所有的核心Api都在这个库里,这些Api供babel-loader调用*
@babel/preset-env:这是一个预设的插件集合,包含了一组相关的插件,Bable中是通过各种插件来指导如何进行代码转换。该插件包含所有es6转化为es5的翻译规则
npm add -D babel-loader @babel/core @babel/preset-env
webpack开发服务器:
npm add webpack-dev-server -D
目录结构 [src目录默认放置源代码]
- .gitignore文件配置
忽略依赖包/其他文件
node_modules/
dist/
// 其他配置...
- html文件配置
注释引入的 css、js 文件
// 其他配置...
<head>
<meta charset="UTF-8">
<title>标题</title>
<link href="./images/xxx.jpg" rel="shortcut icon" type="image/x-icon">
<!-- <link rel="stylesheet" href="./css/index.css"> -->
<!-- <script type="text/javascript" src="./js/index.js"></script> -->
</head>
// 其他配置...
- js文件配置
引入css样式
import '../css/index.css'
// 其他配置...
- package.json文件配置
添加打包指令:“build”: “webpack”
{
// 其他配置...
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "webpack"
},
// 其他配置...
}
- webpack.config.js文件配置
const path = require("path")
// 引入自动生成 html 的插件
const HtmlWebpackPlugin = require('html-webpack-plugin')
module.exports = {
// mode: "development" | "production" | "none", // 配置开发模式: '开发' | '打包' | '无'
mode: 'production',
// devServer: {
// port: 3000, // 端口号
// open: true
// }
entry: "./src/index.js", // 单入口
output: {
path: path.join(__dirname, "dist"), // 出口路径
filename: "index.js" // 出口文件名
},
// plugins: [
// new HtmlWebpackPlugin()
// ],
plugins: [
new HtmlWebpackPlugin({
template: './index.html', // 引用的html路径
filename: 'index.html' // 输出的html名称
})
],
module: {
rules: [ // loader的规则
{
test: /\.css$/, // 匹配所有的css文件
// use数组里从右向左运行
// 先用 css-loader 让webpack能够识别 css 文件的内容并打包
// 再用 style-loader 将样式, 把css插入到dom中
use: ["style-loader", "css-loader"]
// 有less文件另安装less
// test: /\.less$/
// use: ["style-loader", "css-loader", 'less-loader']
},
{
test: /\.(png|svg|jpg|jpeg|gif)$/i,
type: 'asset', // 使用内部的loader,所以使用type
},
{
test: /\.(html|htm)$/i,
loader: 'html-withimg-loader'
},
{
test: /\.js$/,
exclude: /(node_modules)/,
use: {
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env'] // 预设:转码规则(用bable开发环境本来预设的)
}
}
}
]
}
}