![Webpack+Babel入门与实例详解](https://wfqqreader-1252317822.image.myqcloud.com/cover/455/47379455/b_47379455.jpg)
1.3.1 Webpack的命令行打包
Webpack的命令行打包是通过在命令行里执行webpack命令来完成的,我们通过一个案例来讲解,配套代码示例是webpack1-1。
在本地新建一个文件夹webpack1-1,在该文件夹下执行以下命令。
![](https://epubservercos.yuewen.com/8065E2/26763944501499406/epubprivate/OEBPS/Images/42472_20_4.jpg?sign=1739137324-WL9gOfpDLgf171NJHzXxmxvG6C3JodL1-0-4e58047f3944a55085fb29ed5435049f)
该命令会初始化一个项目并使用默认参数创建package.json文件。
接下来本地安装Webpack。
![](https://epubservercos.yuewen.com/8065E2/26763944501499406/epubprivate/OEBPS/Images/42472_21_1.jpg?sign=1739137324-c88vIZiec6UxooqPtXVcg0h7OVbtLXTU-0-256a6787627c4e2cc37fa168c4d5f9d6)
该命令安装了指定版本的webpack与webpack-cli包。这两个npm包的作用如下:webpack包是Webpack核心包;webpack-cli包是命令行工具包,在用命令行执行webpack命令的时候需要安装。详细的安装过程已经在1.2节中进行过讲解,请尽量安装与本书中版本一致的包。
我们要打包的JS文件有两个:a.js和b.js。在b.js文件里定义了一个值是2022的变量year,然后在另一个JS文件a.js里引入b.js并把变量内容输出到浏览器控制台上。
项目下的主要文件如下。
![](https://epubservercos.yuewen.com/8065E2/26763944501499406/epubprivate/OEBPS/Images/42472_21_2.jpg?sign=1739137324-Rn5pZbZno5QGYbW4oSl9g0cti5t7yKRD-0-30f99f240246abfccfafb66ad3edee97)
a.js文件的内容如下。
![](https://epubservercos.yuewen.com/8065E2/26763944501499406/epubprivate/OEBPS/Images/42472_21_3.jpg?sign=1739137324-5HVB3gHDRPCNkCKckfR1yQTB4gVWcxwH-0-df40bfd76c7ba46acefc00f01b2cfb63)
b.js文件的内容如下。
![](https://epubservercos.yuewen.com/8065E2/26763944501499406/epubprivate/OEBPS/Images/42472_21_4.jpg?sign=1739137324-dnlcm9eFXb6UOIq8p2poJGHvuyXkpAnI-0-f8c3528cff24175b6c34ed74ffc90557)
HTML文件也很简单,用来引入JS文件,这里我们引入a.js文件。
index.html文件的内容如下。
![](https://epubservercos.yuewen.com/8065E2/26763944501499406/epubprivate/OEBPS/Images/42472_21_5.jpg?sign=1739137324-7kw1uXMfTXgtGtOayk6pVHmdBIXiI0jB-0-9d9ff0380843895bbfd93f11086c7ece)
![](https://epubservercos.yuewen.com/8065E2/26763944501499406/epubprivate/OEBPS/Images/42472_22_1.jpg?sign=1739137324-XwbeyPLHOKVHkLNvc2JRQVSIegZBksvk-0-a778ad5afc066f3ebadfc4e044d10478)
现在我们在本地直接用浏览器打开index.html,打开浏览器控制台,发现报错了。
浏览器会报错,一方面是因为浏览器对原始的ES6模块默认引入方式不支持,另一方面是因为本地JS文件调用外部模块存在安全问题。
这是我们需要解决的问题。
现在,我们尝试用Webpack把这两个文件打包成一个JS文件来解决这个问题。通过Webpack打包成一个文件后,ES6模块语法就被消除了。
执行如下命令,该命令是Webpack 5的命令行打包命令。
![](https://epubservercos.yuewen.com/8065E2/26763944501499406/epubprivate/OEBPS/Images/42472_22_2.jpg?sign=1739137324-RR8V6D8vi8gDIozjwRHNIuv2MNbi39RK-0-0ab1752577d29a6a21ecda67c091c5c3)
上面命令的作用:从a.js文件开始,按照模块引入的顺序把所有代码打包到一个JS文件里,这个文件的默认名称是main.js。Webpack会自动处理打包后代码的顺序与依赖关系。--entry用来指定打包入口文件,-o是out的意思,表示输出目录,这里使用dist目录作为打包后的输出目录。注意,webpack是打包命令,后面的内容是打包参数。
现在我们在HTML文件里引入dist目录下的main.js文件,打开浏览器控制台,发现可以正常输出数字2022了。
上面就是一个最简单的Webpack打包过程,我们观察打包后的main.js文件,其代码如下。
![](https://epubservercos.yuewen.com/8065E2/26763944501499406/epubprivate/OEBPS/Images/42472_22_3.jpg?sign=1739137324-DHWNTUjDkh14OLlzRoinUKJilKIrAKkp-0-b9faebb9d0ed84c26621c3abe8b5987c)