ni包管理工具
ni包管理工具原理是抹平了不同的包管理器的命令差异,最终运行的脚本仍然是对应的npm、yarn、pnpm的命令。
ni 假设您使用锁文件(并且您应该)在它运行之前,它会检测你的 yarn.lock / pnpm-lock.yaml / package-lock.json 以了解当前的包管理器,并运行相应的命令。
# 基本原理
使用 ni
在项目中安装依赖时:
假设你的项目中有锁文件 yarn.lock
,那么它最终会执行 yarn install
命令。
假设你的项目中有锁文件 pnpm-lock.yaml
,那么它最终会执行 pnpm i
命令。
假设你的项目中有锁文件 package-lock.json
,那么它最终会执行 npm i
命令。
假设项目目录下没有锁文件,默认就会让用户从npm、yarn、pnpm选择,然后执行相应的命令。 但如果在~/.nirc文件中,设置了全局默认的配置,则使用默认配置执行对应命令。
# 常用命令
# 1. ni - install
ni
# npm install
# yarn install
# pnpm install
1
2
3
4
5
2
3
4
5
ni axios
# npm i axios
# yarn add axios
# pnpm i axios
1
2
3
4
5
2
3
4
5
# 2. nr - run
nr dev --port=3000
# npm run dev -- --port=3000
# yarn run dev --port=3000
# pnpm run dev -- --port=3000
1
2
3
4
5
2
3
4
5
nr -
# 重新执行最后一次执行的命令
# rerun the last command
1
2
3
4
2
3
4
# 3. nx - execute
nx jest
# npx jest
# yarn dlx jest
# pnpm dlx jest
1
2
3
4
5
2
3
4
5
# 4. nun - uninstall
nun axios
# npm uninstall axios
# yarn remove axios
# pnpm remove axios
1
2
3
4
5
2
3
4
5
# 总结
ni
包管理工具主要做了以下三件事:
- 根据锁文件猜测用哪个包管理器 npm/yarn/pnpm - detect 函数;
- 抹平不同的包管理器的命令差异 - parseNi 函数;
- 最终运行相应的脚本 - execa 工具。
antfu大神在开发中发现多种工具包混用的情况,用ni的话直接不用记那么多命令了,也不会搞混命令。很佩服在实践过程中发现问题,从业务中提炼出来技术的能力。
编辑 (opens new window)
上次更新: 2022/06/16, 10:52:37