# demo-webpack5 **Repository Path**: franky57/demo-webpack5 ## Basic Information - **Project Name**: demo-webpack5 - **Description**: 🛠 webpack@5的demo - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-08-13 - **Last Updated**: 2024-10-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: 前端工程化webpack, webpack, TypeScript, Eslint, Prettier ## README # demo-webpack@5 This demo should help you practice webpack@5


### notes(欢迎掘友点评 🎉🎉🎉) https://juejin.cn/post/7402549800547860491#heading-6

### Installation and usage steps - clone: ```bash # gitee git clone https://gitee.com/franky57/demo-webpack5.git # github git clone https://github.com/FC57/demo-webpack5.git ``` - install: ```bash pnpm install ``` - run: ```bash # env development 运行开发环境 pnpm start # env production 打包并执行预览生产环境 # 用到 cross-env、serve、open、open-cli,自动打包后链接到预览地址 pnpm preview ``` - build: ```bash # env production 保留了部分注释并执行自定义插件 file-list-plutin # 打包文件多生成打包资源文件清单 fileList.md pnpm build # env production 代码极度压缩 pnpm build:prod ``` - commit ```bash # 提交代码时,会自动触发 eslint 校验和 prettier 格式化 pnpm commit ``` - preview:

### Project Tree ```text demo-webpack ├─ .env # 在webpack.config.ts中通过dotenv注入到process.env ├─ .env.development # 开发环境环境变量 ├─ .env.production # 生产环境的环境变量(同样通过dotenv注入到process.env) ├─ .eslintignore ├─ .eslintrc.js # 格式校验规则文件 ├─ .husky # 定义在git提交的指定钩子中额外执行脚本 │ ├─ commit-msg # git commit 时触发的钩子(校验提交信息规范性) │ ├─ pre-commit # git commit 时触发,优先于commit-msg(校验代码格式和规范) │ └─ _ │ └─ husky.sh ├─ .prettierignore ├─ .prettierrc.js # 文件格式化规则 ├─ .vscode │ └─ settings.json # 解决 Vscode 中当前使用的 typescript 版本与项目不一致问题 ├─ babel.config.js # babel 配置文件(js兼容或处理jsx等文件) ├─ build │ ├─ index.ts # 打包构建区分环境的方法 │ ├─ package.json # 辅助 ts 模块化解析 │ ├─ typing.d.ts │ ├─ webpack.dev.ts # 开发环境 webpack 额外配置 │ └─ webpack.prod.ts # 生产环境 webpack 额外配置 ├─ commitlint.config.js # commitlint、cz-git 配置文件(规范和校验提交信息) ├─ env.d.ts # 各类模块文件定义,防止 ts 报错 ├─ LICENSE ├─ lint-staged.config.js ├─ package.json # 包管理配置文件 ├─ pnpm-lock.yaml # pnpm 下载包版本锁定 ├─ postcss.config.js # postcss 配置文件 ├─ public # 除 index.html ,均为静态资源不参与编译 │ ├─ assets │ │ └─ imgs │ │ └─ webpack.svg │ ├─ index.html # 模板html │ └─ script │ └─ index.js ├─ README.md # 说明文档 ├─ src │ ├─ assets │ │ ├─ css │ │ │ ├─ index.pcss # postcss-loader测试样式文件 │ │ │ ├─ one.module.css # css-loader测试css module,style-loader引入样式 │ │ │ └─ two.module.css │ │ ├─ images │ │ │ ├─ note.jpg # 自定义插件 img-loader.js 测试图片 │ │ │ ├─ preview.png # 《鬼灭之刃-柱》 │ │ │ └─ webpack-notes.png # 掘金笔记 │ │ └─ index.css # 自定义loader style-loader.ts测试样式 │ ├─ cssModule.ts │ ├─ index.ts # 模块变量,不会污染全局 │ ├─ loaders │ │ ├─ img-loader.ts # 自定义loader,处理图片成base64或为资源路径 │ │ └─ style-loader.ts # 自定义loader,处理样式文件并加入页面 │ ├─ main.ts # 入口文件(该demo为单入口) │ ├─ module1.ts # 测试js兼容转换生成器和async await 语法 │ ├─ plugins │ │ └─ file-list-plugin # 自定义插件,使用emit钩子,生成打包资源文件清单 │ │ ├─ index.ts │ │ ├─ package.json # 指定该自定义插件类型文件和入口文件(辅助ts模块化解析) │ │ └─ typing.d.ts │ ├─ showImgs.ts # 使用自定义插img-loader.ts转换图片资源后测试 │ └─ types │ ├─ global.d.ts # 全局ts类型,扩展 Window 等类型 │ ├─ style.d.ts # 定义样式模块类型 │ ├─ tool.d.ts # 自定义类型工具 │ └─ webpack.d.ts # 解决在 webpack.config.ts 中书写 CommonJS 规范代码导致类型丢失 ├─ tsconfig.json # ts 配置文件,typescript及ts-node 会用 └─ webpack.config.ts # webpack 配置文件 ```