1.基本使用
首先电脑得有node。node-v查看版本
1.初始化包环境 yarn init
2.安装依赖包
yarn add webpack webpack-cli -D
npm install webpack webpack-cli --save-dev
3.在文件夹中建立一个src文件夹,其中加入index.js 里面写个console.log就行。
4.建立一个配置文件与 src 同一级,webpack.config.js。里面写的代码是CommonJS语法。
//CommonJS语法
const path = require('path')//首先我们要先引入node.js的path包,专门管理路径相关的模块
module.exports = {
mode: 'development', //定义模式,这里是‘开发模式’,
//‘生产环境’是production
//定义打包的入口,path.join()方法拼接路径
entry: path.join(__dirname,'src','index.js'),
//__dirname指的是当下这个文件所位于的目录
//定义打包好的文件 位置 文件名
output:{
path: path.join(__dirname,'dist'),//一般设置在dist文件,他会自动生成
filename: 'bundle.js'//文件名
}
}
5.在package.json里面配置一条脚本
{
...
"scripts":{
"build":"webpack"
},
...
}
6.执行命令
yarn build或者npm run build。
2.使用HtmlWebpackPlugin
第一节讲的是打包js文件,这里将打包html文件,那么在src下建立一个index.html文件
1.安装这个插件
yarn add html-webpack-plugin -D
npm install html-webpack-plugin --save-dev
2.在webpack.config.js文件中,添加新的配置项
//CommonJS语法
const path = require('path')
const HtmlWebpackPlugin = require('html-webpack-plugin')
module.exports = {
mode: 'development',
entry: path.join(__dirname,'src','index.js'),
output:{
path: path.join(__dirname,'dist'),
filename: 'bundle.js'
},
plugins:[ //是一个数组
new HtmlWebpackPlugin({ //实例化
//1.选择html模板文件
template:path.join(__dirname,'src','index.html'),
filename:'index.html',
})
]
}
3.执行命令
现在执行命令呢,dist里面就会多出一个index.html文件了。并且它会自动的引入我们打包的bundle.js文件。
3.使用webpack-dev-server
在之前的基础上呢,如果我们临时地对里面的文件进行修改,是需要重新打包,才能让我们的页面发生改变的。非常不方便嗷。所以就需要我们这个新的工具来帮忙。
1.安装工具
yarn add webpack-dev-server -D
npm install webpack-dev-server --save-dev
2.在webpack.config.js文件中,添加新的配置项
//CommonJS语法
const path = require('path')
const HtmlWebpackPlugin = require('html-webpack-plugin')
module.exports = {
mode: 'development',
entry: path.join(__dirname,'src','index.js'),
output:{
path: path.join(__dirname,'dist'),
filename: 'bundle.js'
},
plugins:[
new HtmlWebpackPlugin({
template:path.join(__dirname,'src','index.html'),
filename:'index.html',
})
],
devServer:{
//定义端口,像vue的脚手架是运行在8080
port:8000,
//devServer要使用的静态资源的目录位置,dist里面的内容
static: path.join(__dirname,'dist'),
progress:true, //打包时显示进度条
open:true, //启动服务器后,自动打开浏览器
compress:true //开启gzip压缩
}
}
3.到package.json里面配置脚本
"scripts":{
"build":"webpack",
"dev":"webpack-dev-server"
}
4.执行脚本
yarn dev
npm run dev
这样一来每次修改代码就可以实时编译了。但是这里要知道,使用这个方式生成的文件,它会存在内存里面 ,而不会生成一个真正的dist文件。所以即便是没有dist文件夹,依旧是可以到8000端口去看到的。
4.编译ES6代码
我们在js文件中,写入一段es6代码,比如一段箭头函数。那么编译以后的代码我们去查看,会发现同样是箭头函数。那么就会导致在一些低版本的浏览器上看是无法解析的。
所以我们需要工具把es6代码转换成所有浏览器都能运行的es5代码。
它就是 babel。
1.首先安装三个babel相关的依赖
yarn add @babel/core @babel/preset-env babel-loader
npm install @babel/core @babel/preset-env babel-loader
2.在根目录底下,创建一个babel的配置文件。
.babelrc
{
//预设:babel一系列插件的集合
"presets":["@babel/preset-env"]
}
这些插件,就能帮我们把es6代码转换成es5代码。
光写一个配置文件是不够的,还需要有地方使用这个配置。
3.在webpack.config.js文件中,添加新的配置项module
//CommonJS语法
const path = require('path')
const HtmlWebpackPlugin = require('html-webpack-plugin')
module.exports = {
mode: 'development',
entry: path.join(__dirname,'src','index.js'),
output:{
path: path.join(__dirname,'dist'),
filename: 'bundle.js'
},
module:{ //module让我们配置我们解析模块的一些规则
rules:[
{
//使用正则表达式进行检查 如果是一个js文件的话
test: /.js$/,
//那么就会使用babel-loader对js代码进行编译
//它会把刚才的配置文件使用上
loader:['babel-loader'],
//规定处理js文件的范围
include: path.join(__dirname,'src'),
//排除哪些范围里的代码,因为node_modules的代码
//已经编译好了,所以要把它排除在外
exclude: /node_modules/
}
]
}
plugins:[
new HtmlWebpackPlugin({
template:path.join(__dirname,'src','index.html'),
filename:'index.html',
})
],
devServer:{
port:8000,
static: path.join(__dirname,'dist')
}
}