# webpack-demo **Repository Path**: codezm/webpack-demo ## Basic Information - **Project Name**: webpack-demo - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-08-28 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README [webpack](https://webpack.docschina.org/) 将模块依赖(预编译文件)打包成静态资源。 ----------------- #### 打包初体验 创建并初始化项目 ```bash mkdir webpack-demo cd webpack-demo npm init -y ``` 开发依赖安装 ```bash cnpm install webpack webpack-cli --save-dev ``` 编写项目代码 ```bash mkdir src touch src/data.json src/index.js index.html ``` `src/data.json` 文件内容: ```json { "content": "webpack study" } ``` `src/index.js` 文件内容: ```javascript import data from './data.json' function say() { console.log("Hello World!") } say() console.log(data) ``` 执行 `webpack` 打包命令 ```bash # 开发模式 npx webpack ./src/index.js -o ./dist/bundle.js --mode=development # 生产模式 npx webpack ./src/index.js -o ./dist/bundle.js --mode=production ``` 新建 `index.html` 文件,打开浏览器 console 查看输出信息,内容如下: ```html
```
编辑 `webpack.config.js`
```javascript
let path = require('path')
let htmlWebpackPlugin = require('html-webpack-plugin')
module.exports = {
// 入口文件
entry: "./src/index.js",
output: {
// 输出文件名
filename: "bundle.js",
// 输出路径
path: path.resolve(__dirname, 'dist')
},
// 模式设置: development、production、none
mode: "development",
// loader 的配置
module: {
rules:[
{
test: /\.css$/,
use: [
// use 数组中的 loader 执行顺序: 从下到上, 逆序执行。
// 将 js 的样式内容插入到 style 标签里。
"style-loader",
// 将 css 文件转换为 js
"css-loader"
]
},
{
test: /\.(jpg|png|gif)$/,
loader: 'url-loader',
// 图片小于 8KB, base64 处理,优点:减少网络请求,缺点:体积会更大
options: {
limit: 8*1024,
// 关闭 url-loader 的 es6 模块化解析
esModule: false,
// 文件名处理:取文件hash 前十位,ext 是文件扩展名
name: '[hash:10].[ext]'
}
},
{
test: /\.html$/,
loader: 'html-loader'
}
],
},
plugins: [
new htmlWebpackPlugin({
template: "./src/index.html"
})
]
}
```
安装相关插件
```bash
cnpm install file-loader mime-types url-loader html-loader --save-dev
```
执行打包命令
```bash
npx webpack
```
#### 代码热更新
编辑 `webpack.config.js`
```javascript
let path = require('path')
let htmlWebpackPlugin = require('html-webpack-plugin')
module.exports = {
// 入口文件
entry: "./src/index.js",
output: {
// 输出文件名
filename: "bundle.js",
// 输出路径
path: path.resolve(__dirname, 'dist')
},
// 模式设置: development、production、none
mode: "development",
// loader 的配置
module: {
rules:[
{
test: /\.css$/,
use: [
// use 数组中的 loader 执行顺序: 从下到上, 逆序执行。
// 将 js 的样式内容插入到 style 标签里。
"style-loader",
// 将 css 文件转换为 js
"css-loader"
]
},
{
test: /\.(jpg|png|gif)$/,
loader: 'url-loader',
// 图片小于 8KB, base64 处理,优点:减少网络请求,缺点:体积会更大
options: {
limit: 8*1024,
// 关闭 url-loader 的 es6 模块化解析
esModule: false,
// 文件名处理:取文件hash 前十位,ext 是文件扩展名
name: '[hash:10].[ext]'
}
},
{
test: /\.html$/,
loader: 'html-loader'
}
],
},
plugins: [
new htmlWebpackPlugin({
template: "./src/index.html"
})
],
devServer: {
// 项目构建路径
contentBase: path.resolve(__dirname, 'dist'),
// 端口号
port: 3000,
// 启用 gzip 压缩
compress: true,
// 自动打开浏览器
open: true
}
}
```
安装依赖插件:
```bash
cnpm install webpack-dev-server --save-dev
```
执行以下命令,将自动打包、打开浏览器。
```bash
npx webpack-dev-server
```
尝试修改 `src/index.html` ,即可实时编译并刷新浏览器,查看编辑、打包后效果。
#### 参考
本项目是学习自视频: https://www.bilibili.com/video/BV1gA411B7M2