一、核心概念
Entry| 代码的入口,打包的入口。Output| 打包文件的(bundle)所在的目录Loader| 可以处理非js文件Plugins| 可以参与打包的整个过程,打包优化压缩mode| development/production
1 生成package.json的文件
cnpm init -yyarn init -y
2 新建.gitignore文件
3 安装webpack 和 webpack-cli
cnpm i webpack webpack-cli -S
yarn add webpack webpack-cli
4 新建webpack.config.js文件,新建src文件夹新建main.js文件
4-1 webpack.config.js
const webpack = require("webpack");
const path = require("path");
const config = {
entry:path.resolve(__dirname,'src/main.js'),//入口文件
output:{//出口文件
path:path.resolve(__dirname,'dist'),
filename:'bundle.js'
},
mode:'development'//模式
}
module.exports = config
4-2 src/main.js
console.log("hello world");
5 配置package.json文件
{
"scripts": {
"build": "webpack --config webpack.config.js"
}
}
6 npm run build
npm run build
6-1自动在之前新建的出口dist文件夹生成bundle.js文件
7 新建public文件夹并新建index.html文件导入
<script src="../dist/bundle.js"></script>
8 npm run build
8-1此时会报错,则需要配置style-loader css-loader(在webpack.config.js的module)
二、loader
wepack自身只能处理js和json文件,加上loader后,能让wepack去处理非js(css)的文件。
loader可以将所有类型的文件转换为webpack能够处理的有效模块。
项目加载css
Tips:loader是配置在module中的
1 安装style-loader css-loader依赖
cnpm i style-loader css-loader -S
style-loader在前 css-loader在后
2 webpack.config.js
加上
module:{
rules:[
{
test:/\.css$/i,
use:['style-loader','css-loader']
}
]
},
变成
const webpack = require("webpack");
const path = require("path");
const config = {
entry:path.resolve(__dirname,'src/main.js'),//入口文件
output:{//出口文件
path:path.resolve(__dirname,'dist'),
filename:'bundle.js'
},
module:{
rules:[
{
test:/\.css$/i,
+ use:['style-loader','css-loader']
}
]
},
mode:'development'//模式
}
module.exports = config
4 新建public/index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="../dist/bundle.js"></script>
</head>
<body>
<div>dethbf</div>
</body>
</html>
5 src/main.js
import './assets/index.css';
console.log("hello world");
6 npm run build
三、plugin
1 在dist文件夹下自动生成index.html文件
cnpm i html-webpack-plugin -S
2 webpack.config.js文件
加上
const HtmlWebpackPlugin = require('html-webpack-plugin');
plugins:[
new HtmlWebpackPlugin({
title:"webpack-vue"
}),
<!-- new CleanWebpackPlugin() -->//清除dist目录下需要的文件需要再安装依赖
],
2-1 安装clean-webpack-plugin依赖
cnpm i clean-webpack-plugin -S
2-1-1修改webpack.config.js文件中的filename
filename:'[hash]-[name]-bundle.js'
,dist文件夹中会新增js文件
2-2完整webpack.config.js文件
const {CleanWebpackPlugin} = require("clean-webpack-plugin")
plugins:[
new HtmlWebpackPlugin({
title:"webpack-vue",
template:path.join(__dirname,"public/index.html")
}),
new CleanWebpackPlugin()
],
const webpack = require("webpack");
const path = require("path");
const HtmlWebpackPlugin = require('html-webpack-plugin');
const {CleanWebpackPlugin} = require("clean-webpack-plugin")
const config = {
entry:path.resolve(__dirname,'src/main.js'), //入口文件
output:{ //出口文件
path:path.resolve(__dirname,'dist'),
filename:'[hash]-[name]-bundle.js'
},
module:{
rules:[
{
test:/\.css$/i,
use:['style-loader','css-loader']
}
]
},
plugins:[
new HtmlWebpackPlugin({
title:"webpack-vue"
}),
new CleanWebpackPlugin()
],
mode:'development' //模式
}
module.exports = config;


