安装

现在学习的是 ​​webpack4​​​ 的最新版,新建文件夹,​​npm init -y​​​ 初始化一下,然后执行下面命令进行安装,需要同时安装 ​​webpack​​​ 和 ​​webpack-cli​​。

npm install webpack@4.43.0 webpack-cli@3.3.12 -D复制代码

不建议全局安装 ​​webpack​​​, 因为全局安装会锁定版本,多个项目之间可能依赖的 ​​webpack​​ 版本不同, 所以还是建议项目内安装。

可以根目录下新建 ​​.npmrc​​ 文件,指定当前项目安装依赖的源地址

registry=https://registry.npm.taobao.org复制代码

webpack 的零配置

​webpack​​ 宣传的一个噱头就是零配置构建, 也就是什么配置都不写就可以进行打包,虽然确实是可以执行,但其实是满足不了实际开发需要的。

先来随便跑一下,新建 ​​src/index.js​​​ 文件。我们在 ​​index.js​​ 中 只写一行

console.log("hello, webpack !")复制代码

然后执行

npx webpack -v复制代码

​npx​​​ 在当前项目下查找并启动 ​​webpack​​​ 。可以看到根目录下生成 ​​dist/main.js​​ 文件。

建议在 ​​package.json​​ 文件中,添加构建命令,便于添加构建参数,也更加易读。

"scripts": {    "dev": "webpack"  },复制代码

【webpack】入门(1)_根目录

虽然我只写了一行代码,但是打包出来却有这么多字符,看下面的进度条就知道后面还有很多了。

是因为 ​​webpack​​ 默认给做了很多兼容,这也是相对于其他构建工具,出现了很多的冗余代码。

但其实问题不大, ​​webpack5​​ 进行了一些优化,但是当模块变的越来越多时候,就没有什么太大改变了。

构建信息

看一下构建时都输出了什么信息

【webpack】入门(1)_bundle_02

打包出来的文件内容有很多,但是主结构很简单,其实就是一个自执行函数,如下

(function(modules) {// todo})({  "./src/login.js": (function(module, exports) {    eval("xxxxx")  })})复制代码

在这个结构中,可以看到自执行函数的参数是一个对象,对象的每个 ​​key​​​ 的 ​​value​​​ 都包含一个 ​​chunk​​,也就是 ​代码片段​。

也可以包含多个 ​​chunk​​​ , 被称为 ​​chunks​​​, ​​chunk组​​​ ,还可以被称为 ​​chunk Names​​ 。

这一整个对象中可以包含多个 ​​key:value​​,被称为依赖图谱。

构建后产生的资源文件, 称呼为 ​​bundle​​ 文件 。

几者遵循以下关系:

  • 一个​​bundle​​​ 对应至少一个​​chunks​
  • 一个​​chunks​​​ 对应至少一个​​module​
  • 一个​​module​​​ 对应至少一个​​chunk​

一句话总结:

​module​​​,​​chunk​​​ 和 ​​bundle​​ 其实就是同一份逻辑代码在不同转换场景下的取了三个名字:

我们直接写出来的是 ​​module​​​,​​webpack​​​ 处理时是 ​​chunk​​​,最后生成浏览器可以直接运行的 ​​bundle​​。