# mini-webpack
**Repository Path**: liu-zhengfeng-yyy/mini-webpack
## Basic Information
- **Project Name**: mini-webpack
- **Description**: 通过实现简易的前端 EsModule 打包功能 学习打包器的基本原理
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2023-04-13
- **Last Updated**: 2024-09-17
## Categories & Tags
**Categories**: Uncategorized
**Tags**: 前端, Nodejs, ast, webpack
## README
# mini-webpack
> 通过实现简易的前端 EsModule 打包功能 学习打包器的基本原理
## Feature
- [x] 根据入口文件 读取文件内容 通过ast解析转换收集依赖
- [x] 根据依赖图 使用ejs template 生成可执行的bundle.js
- [x] 指定配置文件 对打包进行配置 ---minipack.config.js
- [x] 支持配置 entry: 入口模块路径(required)
- [x] 支持配置 outputDir: 打包文件输出路径(default:'./dist')
- [x] 支持配置打包生成的js文件名 outputFile
- [x] 打包过程计时功能
- [x] 实现已导入包的缓存 (代码已经实现此功能 但是babel在ast转换过程中也会自己处理多次导入同一模块的情况`function _getRequireWildcardCache`)
- [x] 支持配置 loader 实现非js代码转换 功能(实现jsonLoader)
- [x] 实现在loader中 通过this.getOptions 获取当前loader配置的options
- [x] 实现css-loader
- [x] 支持配置graph(default:true) 是否在打包输出路径 生成依赖图文件
- [x] 实现devServer项 实现开发环境预览(支持[live-server](https://www.npmjs.com/package/live-server)原生配置)(true:开启默认配置,{} 详细配置)
- [x] 实现publicDir配置项 配置静态文件(该配置项地址下的所有文件 会直接原封不动的打包到输出目录)
- [x] 实现alias配置路径别名
- [x] 实现watch配置项 配置监听文件变化 重新打包