webpack入门(webpak4)
webpack 基础知识
需要用到的包介绍
- webpack - webpack 的核心包
- webpack-cli - webpack 的命令行工具
- webpack-dev-server - webpack 的开发服务器 (热更新)
webpack-cil 命令参考
https://webpack.js.org/api/cli/
webpack 的打包过程

webpack 初体验
- webpack 将 ES6 的模块化编译成浏览器能够识别的模块化
- webpack 默认只能打包 js 和 json 文件
- 生产环境和开发环境的区别 ,开发环境是经过压缩的代 码
使用命令行设置打包入口出口和 mode
webpack --entry ./src/index.js -o ./dist --mode=development #开发模式
webpack --entry ./src/index.js -o ./dist --mode=production #生产模式
webpack.config.js
指示 webpack 来干那些活 当运行 webpack 指令时 会加载里面的配置
打包样式资源
下载插件
npm i css-loader style-loader less-loader less -D
修改配置
普通 css 文件
// webpack.config.js
const { resolve } = require("path");
module.exports = {
//入口
entry: "./src/index.js",
//出口
output: {
filename: "bundle.js",
path: resolve(__dirname, "dist"),
},
//模式 development 、 production
mode: "development",
// loader
module: {
rules: [
{
test: /\.css$/,
// 执行顺序由右到左
use: ["style-loader", "css-loader"],
},
],
},
// plugins 插件 (数组)
plugins: [],
};
//index.js 中引入样式 webpack 会通过import加载css 再通过 css-loader ->style-loader 转换为style标签放在head中
import "./index.css";
引入 less 或 sass 样式处理文件
// rules 中 添加 less 或 sass 的处理规则
{
test:/\.less$/,
use:[
//转化为style
"style-loader",
// 处理css
"css-loader",
// 转化为css
"less-loader"
]
}
注意事项
less 和 sass 不光要下对应的 loader 还需要 less 或 sass 包
ps:node-sass 安装起来比较麻烦 可以参照 https://www.cnblogs.com/zhishaofei/p/12712937.html
打包 HTML 资源
下载插件
npm install --save-dev html-webpack-plugin
tip: html-webpack-plugin 和 html-loader 的不同
- html-loader 是用来解析入口文件中关联的 html 中的 image 图片的引入
- html-webpack-plugin 是用来自动生成最后 dist 目录下的 index.html (并自动导入打包好的 js)
html-webpack-plugin 插件的更多配置见官网 :https://github.com/jantimon/html-webpack-plugin
修改配置
// webpack.config.js
const { resolve } = require("path");
const HtmlWebpackPlugin = require("html-webpack-plugin");
module.exports = {
entry: "./src/index.js",
output: {
filename: "bundle.js",
path: resolve(__dirname, "dist"),
},
mode: "development",
module: {
rules: [],
},
plugins: [
// HtmlWebpackPlugin 会自动在output目录下生成index.html
// 并自动引入打包好的 bundle.js
new HtmlWebpackPlugin({
// 以./src/index.html 为模板 生成最后打包好的html
template: "./src/index.html",
}),
],
};