Tips:每改变一次webpack.config.js的内容后,都需要重新启动一次serve
1. 起步
1. cnpm init -y 生成package.json文件
2. 生成.gitignore包,将不想上传的文件放在里面,如:node_modules
3. 安装依赖 cnpm i webpack -S
2. 构建
1. 构建一个webpack.config.js文件
const webpack = require("webpack");
const path = require("path"); //解决路径问题
//配置项
const config = {
//__dirname 当前目录
# // resolve不行就换成join
evtry:path.resolve(__dirname,'/src/main.js'), //入口文件
//evtry:path.join(__dirname,'/src/main.js') join方法也可以
output:{ // 出口文件
path:path.resolve(__dirname,"/dist"),
// filename 打包的文件名
filename:"bundle.js"
},
mode:'development'
}
module.exports = config;
2-1. 配置package.json文件
"scripts": {
"build": "webpack --config webpack.config.js"
},
2-2. 启动build
1. 安装依赖 cnpm i webpack-cli -S
2. 启动build npm run build
3. Loader
可以打包非js文件
可以将所有类型的文件转化为webpack能够处理的模块文件
3-1. 处理CSS
安装模块:cnpm i style-loader css-loader -S
# webpack.config.js
const config = {
...
moudle:{
rules:[
{
test:/\.css$/i,
use:['style-loader',css-loader]
}
]
},
...
}
//启动build
npm run build / yarn build
4. plugin
# // 可以参与打包的整个过程,打包优化压缩
安装依赖: cnpm i html-webpack-plugin -S // 自动生成index.html文件
1. const HtmlWebpackPlugin = require("html-webpack-plugin");
2. # webpack.config.js
const config = {
...
plugins:[
new HtmlWebpackPlugin({
title:"webpack-vue"
})
],
...
}
打包的文件:dist/index.html
4-1. 清除无用打包文件
安装依赖 cnpm i clean-webpack-plugin -S
1. const {CleanWebpackPlugin} = require("clean-webpack-plugin");
2. # webpack.config.js
const config = {
...
plugins:[
...
new CleanWebpackPlugin(),
],
...
}
5. 配置webpack-server
1. 安装依赖 cnpm i webpack-dev-server -S
2. # webpack.config.js
const config = {
...
devServer:{
contentBase:"/dist"
port:"8000" //修改端口
host:"localhost" //修改主地址
},
...
}
# package.json
"scripts": {
"serve":"webpack serve --open"
},
// 启动serve
npm run serve / yarn serve
5-1. 追踪错误
devtool:"inline-source-map", // 追踪错误
6. 实现Vue
安装依赖 cnpm i vue vue-loader vue-template-compiler -S
6-1. 引入文本
# webpack.config.js
1. // 导入vue-loader
const {VueLoaderPlugin} = require("vue-loader");
2. // 导入模块
const config = {
...
module:{
rules:[
{
test:/\.vue$/,
loader:'vue-loader'
}
]
},
plugins:[
new VueLoaderPlugin(),
]
...
}
1. # public index.html //挂载点(模板文件)
<body>
<div id="app">
</div>
</body>
2. # App.vue
<template>
<div>
{{msg}}
</div>
</template>
<script>
export default {
data(){
return {
msg:"good"
}
}
}
</script>
<style scoped>
</style>
3. # main.js // 入口文件
import App from './App.vue';
import Vue from 'vue'
new Vue({
render:h =>h(App)
}).$mount("#app");
6-2. 引入图片
# webpack.config.js
const config = {
module:{
rules:[
{
test:/\.(png|jpg|svg|gif|jpeg)$/i,
type:"asset/resource"
}
]
}
}
# App.vue
<template>
<div>
{{msg}}
<img src="./assets/123.jpg" alt="">
</div>
</template>
7. 错误
重新安装依赖 cnpm i webpack -S
7-2. 报错显示在页面上
# webpack.config.js
const config = {
...
plugins:[
devServer:{
...
overlay:{
errors:true
}
}
]
...
}
