webpack学习笔记(1):入门
开始学习webpack打包
快速上手
首先新建一个非常简单的页面,目录如下:
1 | └─ learn |
1 | // ./src/heading.js |
1 | // ./src/index.js |
1 |
|
type=”module” 这种用法是 ES Modules 中提出的标准,用来区分加载的是一个普通 JS 脚本还是一个模块。
因为上面的type="module"
是ES6语法,但是在不支持中这个语法的浏览器可能会出现错误,所以我们使用webpack把按照模块化方式拆分的 JS 代码再次打包到一起。
首先按照webpack
1 | $ npm init --yes //新建package.json文件 |
不过现在因为webpack更新后导致打包结果和视频教学的结果不一样,所以使用这个方法:
- 把package.json里的webpack版本改为4.44.2,cli改成3.3.12
- 删掉
node_modules
,再执行npm install
最后使用npx webpack
即可执行打包
结果会出现在 ./dist/main.js
然后我们就可以删掉 type="module"
:
1 |
|
配置 Webpack 的打包过程
Webpack 4 以后的版本支持零配置的方式直接启动打包,整个过程会按照约定将 src/index.js 作为打包入口,最终打包的结果会存放到 dist/main.js 中。
如果需要自定义打包过程,那就需要在根目录下添加 webpack.config.js
,因为这个是运行在node环境中所以需要按照CommonJS方式编写代码,首先试试修改Webpack 打包的入口文件路径和输出文件的文件名和目录:
1 | // ./webpack.config.js |
webpack.config.js 是运行在 Node.js 环境中的代码,所以直接可以使用 path 之类的 Node.js 内置模块。
全部的配置项可以看Webpack官网
让配置文件支持智能提示
在配置文件中通过import方法导入Webpack中的 Configuration
类型,并通过ts的注解,vs就能提供正确的提示了。
1 | // ./webpack.config.js |
不过由于node不支持import语句,所以打包时要注释掉import语句。不过还有一种更方法的方法,利用vscode对ts的原生支持,在配置文件中使用ts的动态导入方式,实现智能提示
1 | // ./webpack.config.js |
这种 @type 类型注释的方式是基于 JSDoc 实现的。JSDoc 中类型注释的用法还有很多,详细可以参考官方文档中对 @type 标签的介绍。
工作模式
webpack 4新增了工作模式功能,提供了三种预设
- production 模式下,启动内置优化插件,自动优化打包结果,打包速度偏慢;
- development 模式下,自动优化打包速度,添加一些调试过程中的辅助插件;
- none 模式下,运行最原始的打包,不做任何额外处理。
默认情况下使用production模式。
修改 Webpack 工作模式的方式有两种:
- 通过 CLI –mode 参数传入;
- 通过配置文件设置 mode 属性。