You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
√ How would you like to use ESLint?
· To check syntax and find problems
√ What type of modules does your project use?
· JavaScript modules (import/export)
√ Which framework does your project use?
· none
√ Does your project use TypeScript?
· Yes
√ Where does your code run?
· node
√ What format do you want your config file to be in?
· JSON
√ Would you like to install them now?
· Yes
√ Which package manager do you want to use?
· pnpm
如果报错,再执行下面的代码,手动安装这两个包和 typescript:
pnpm i -D -w @typescript-eslint/eslint-plugin, @typescript-eslint/parser, typescript
1. 选择项目结构
选择 Multi-repo 还是 Mono-repo?
很多大型项目都使用 Mono-repo 结构管理,比如 Vue,Bable,我们也选择 Mono-repo。
2. 选择 Mono-repo 工具
简单工具:
专业工具:
我们选择
pnpm
,因为它相比其它打包工具,依赖安装更快,更规范(处理幽灵依赖问题)。安装
pnpm
初始化
pnpm
在根目录新增
pnpm-workspace.yaml
文件,并初始化,写入下面的代码:pnpm-workspace.yaml
文件定义了工作空间的根目录,也就是说,packages 目录下的文件就是 Mono-repo 的子项目。3. 配置代码规范
代码规范检查与修复,使用
eslint
。安装:
新增
.gitignore
文件,忽略node_modules
目录下的文件:初始化 eslint:
选项选择如下:
如果报错,再执行下面的代码,手动安装这两个包和 typescript:
此时,自动生成了一个
.eslintrc.json
文件,它是对 eslint 的一些配置,将.eslintrc.json
文件配置如下:安装 ts 的
eslint
插件:安装代码风格检查
prettier
:新建
.prettierrc.json
配置文件,添加配置:将
prettier
集成到eslint
中,避免它和eslint
冲突,其中:eslint-config-prettier
:覆盖eslint
本身的规则配置eslint-plugin-prettier
:用prettier
来接管修复代码,即eslint --fix
在
package.json
的"scripts"
中增加 lint 对应的执行脚本:4. 配置 commit 规范检查
安装
husky
,用于拦截 commit 命令:初始化
huaky
:将刚才实现的格式化命令
pnpm lint
纳入 commit 时husky
将执行的脚本:使用
commitlint
堆 git 提交信息进行检查:新建配置文件
.commitlintrc.js
,指定规范集:把
commitlint
集成到husky
中:这样之后所有的 commit 都必须符合规范集的格式:提交的类型: 摘要信息,即
<type>: <subject>
,例如:git commit -m "feat: project init"
常见的 type 值如下:
feat
: 新功能fix
: 修复docs
: 文档变更style
: 代码格式refactor
: 重构perf
: 性能优化test
: 增加测试revert
: 回退build
: 打包chore
: 构建过程或辅助工具的变动5. 配置 typescript
新建配置文件
tsconfig.json
,并添加以下配置:6. 选择打包工具
有一个比较权威的网站https://bundlers.tooling.report/,比较了不同的打包工具的区别。
可以看到
webpack
是比较大而全的,但是我们要开发的是一个库,而不是业务代码,希望工具尽可能简洁,打包产物可读性高,所以选择rollup
。安装
rollup
:新建文件夹
scripts/rollup
,用于放所有的打包脚本。至此,我们的项目框架就搭建完成了。
相关代码可在
git tag v1.1
查看,地址:https://github.com/2xiao/my-react/tree/v1.1The text was updated successfully, but these errors were encountered: