学习实现一个简陋的打包流程
随着前端模块化的趋势,知道 webpack 如何打包是很有必要的
简单打包需要 3 个步骤:
- 传入入口文件的路径,返回一个包含文件名,依赖和代码的对象。
- 通过 babel 的 parse 解析生成文件抽象语法树
- 通过 traverse 遍历 AST, 获取依赖
- 通过 transformFromAst 方法,依据你指定的规则生成对应的代码(https://babeljs.io/docs/en/babel-preset-env)
- 分析文件依赖,生成依赖图谱,包含文件路径和对应的依赖以及代码
- 输出浏览器可执行的代码到指定的输出目录下
preparation
1 | const fs = require("fs"); |
step one
1 | const getModule = entryFile => { |
step two
1 | const genDepGraph = entryFile => { |
step three
1 | const genCode = entryFile => { |
按照 webpack 官方文档学习制作简单的 loader 和 plugin
首先是需要安装 webpack, 创建一个 loader 文件夹,创建一个你自己 loader
1 | npm install webpack -D |
配置 webpack config 文件 webpack.config.js
1 | module.exports = { |
最后就是执行 webpack,检查输出的内容。https://webpack.docschina.org/contribute/writing-a-loader/
1 | npx webpack |
关于 plugin, 创建 plugins 目录,创建 CopyrightWebpackPlugin.js
1 | class CopyrightWebpackPlugin { |
配置 webpack
1 | // @ts-nocheck |
执行 webpack,检查生成 dist 目录下的文件
https://webpack.docschina.org/contribute/writing-a-plugin/
1 | npx webpack |