官方概念:是一个现代JavaScript应用程序的静态模块打包器
静态:文件资源
模块:node环境,引入文件,遵循模块化语法
除了合并代码,还能翻译和压缩代码
作用:
注意:
npm i webpack webpack-cli -D
npx webpack -v
const updateDom = (id, content) => {
window.document.getElementById(id).innerHTML = content
}
//导出
module.exports = {
updateDom
}
//导入
const { updateDom } = require('./tool.js')
updateDom('app', 'index.html')
由于现在在index.js使用了require这种模块化的处理方式,所以它无法直接在浏览器中使用,如果直接在index.html中引用,浏览器会报错
命令如下
npx webpack 文件名
如果没有错误,会生成一个dist的文件夹,里面有一个main.js的文件,说明打包已经操作成功
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G3CSYhz2-1656592111914)(https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/af9880ddacf04fba8ec3170e9c08a447~tplv-k3u1fbpfcp-zoom-in-crop-mark:1956:0:0:0.image?)]
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>index</title>
</head>
<body>
<div id="app">
</div>
<!-- 引入打包后的js文件 -->
<script src="./dist/main.js"></script>
</body>
</html>
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CXqLnB4O-1656592111914)(https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/8380029b1c6247d6855446a123bea1e0~tplv-k3u1fbpfcp-zoom-in-crop-mark:1956:0:0:0.image?)]
内容如下:
module.exports = {
mode: 'development', // 打包方式
}
作用:导出一个配置项,用来对webpack的打包行为做设置
入口文件:指定了webpack从哪个文件开始工作,在它的内部会引入其他的模块
出口文件:指定了最后打包之后的文件
在webpack中的默认出口和入口是:
如果直接在根目录下运行webpack,它会直接去找.src下的index.js,并把打包之后的代码放在dist/main.js下 直接省略入口文件,直接打包npx webpack
entry: './src/js/main.js'
1、引入nodejs中的path模块
2、在output项中,设置出口文件的绝对路径和文件名称
output: {
//设置路径
path: path.join(__dirname, '/build'),
// 设置名称(默认情况下叫main.js)
filename: 'bundle.js'
}
mode项用来设置打包的方式,如果不设置默认为production
development:开发模式(代码不会混淆,压缩)
production:生产模式(压缩、混淆、加密 不可读)
自己创建一个webpack.dev.js的文件,用来做配置文件
内容如下:
module.exports = {
output:{
filename:'boundle.js'
}
}
我们希望使用我们配置的文件来设置打包
格式如下: npx webpack --config webpack的配置文件
定制script
在package.json中添加script命令来快速启动webpack
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d1wVcJWX-1656592111915)(https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/b3a4ff1bfb2047bb94138da36ea14a8c~tplv-k3u1fbpfcp-zoom-in-crop-mark:1956:0:0:0.image?)] 在script中不需要再添加npx,它会自动在node_modules/.bin中去找命令
这样我们就得到了两个命令,dev和build
可以在小黑窗中运行: npm run build,npm run dev来运行
在webpack看来,一切皆模块