webpack学习
webpack介绍
用于现代 JavaScript 应用程序的静态模块打包工具,将高版本的代码打包成低版本能使用的代码(兼容低版本)
webpack共分为四个部分* 入口 * 出口 * 加载器 * 插件
根据入口文件的依赖,加载所有模块js,然后合并成一个js;标准且纯粹的模块化打包工具 : 依赖一个文件为入口打包所有依赖为当前浏览器可用的代码。
webpack安装
webpack4之后的版本,需要全局安装webpack
和webpack-cli
,命令如下:
node -v ##确定已安装node
npm config get registry##确定npm镜像是淘宝镜像
##全局安装webpack和webpack-cli
npm i webpack -g
npm i webpack-cli -g
##还需要局部安装
npm i webpack-cli -D
##-D 可以替换成 --save-dev 意思是安装到编译时环境,在package.json中查看,是安装到devDependences里
webpack -v
##能查看到webpack和webpack-cli版本号即可认定安装成功。
新建项目(文件夹)
新建文件夹命名为:webpack-study
,并初始化npm init -y
在项目中新建文件和文件夹:src,dist,index.html
webpack-study
----src //这里面是程序员写的代码,即webpack入口
--------index.js
--------b.js
----dist //这里面是webpack生成的代码,即出口
----index.html
----package.json
b.js
代码
function add(a,b){
return a+b
}
module.exports=add
index.js
const add=require('./b')
console.log(add(1,2)) //3
配置webpack.config.js
,
在项目根目录下新建webpack.config.js
const path=require('path')//webpack是基于node,在这里引入node的path模块
module.exports={
entry:'./src/index.js',//指定入口
output:{
path:path.resolve(__dirname,'dist'),
//这里必须是绝对路径(C:XX/yy/zz/index.js),则采用path模块中的方法,对路径做剪切
//相对路径长这样(../aaa/bbb/ccc/index.js)
filename:'bundle.js'
},
mode:'development'//开发环境 改成production则为 产品环境(发布环境)
}
开发环境生成的bundle.js,里面包含了大量的注释和其他冗杂代码
产品环境即对外发布上线的版本,则非常精简,空格,分号等都被去掉,只有一行代码
运行
webpack
即可在dist文件夹下生成bundle.js
配置package.json
{
"name": "webpack-study",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1", //别忘了这个逗号
"build":"webpack" -------配置这一行
},
"keywords": [],
"author": "",
"license": "ISC"
}
则后续每次编译,执行以下代码
npm run build
引入到index.html中
index.html
浏览器打开后,查看控制台,即可看到执行结果。
配置css
在src
文件夹下,新建css/normal.css
div{color:red}
index.html
<body>
<div>
变色的内容
</div>
</body>
注意:我们并不是要把normal.css直接引入到index.html中,而是将其打包到
bundle.js
,再被引入到index.html中
引入两个loader来配置css,其中css-loader
是引入css,style-loader
是解析css
安装方式
npm i css-loader style-loader -D
配置方式
在webpack-config.js
中添加module字段
const path=require('path')//webpack是基于node,在这里引入了node的path模块
module.exports={
entry:'./src/index.js',//指定入口
output:{
path:path.resolve(__dirname,'dist'),
//必须是绝对路径
filename:'bundle.js'
},
mode:'production',
module:{
rules:[
{
test:/\.css$/,
use:[
{loader:'style-loader'},
{
loader:'css-loader',
options:{
modules:true
}
}
]
}
]
}
}
注意:loader 从右到左(或从下到上)地取值(evaluate)/执行(execute)。
所以一定要保证先配置
style-loader
,再配置css-loader
,这样才能保证webpack从下往上,先引入(css-loader),后解析(style-loader)。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?