Simonzhangs' blog Simonzhangs' blog
首页
  • 前端文章

    • HTML
    • CSS
    • JavaScript
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • JS设计模式总结
  • 《Vue》
  • 《React》
  • 《TypeScript 从零实现 axios》
  • TypeScript
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • apple music
  • extension
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Simonzhangs

前端学习探索者
首页
  • 前端文章

    • HTML
    • CSS
    • JavaScript
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • JS设计模式总结
  • 《Vue》
  • 《React》
  • 《TypeScript 从零实现 axios》
  • TypeScript
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • apple music
  • extension
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 技术文档

    • Git使用手册
    • Markdown使用教程
    • npm常用命令
    • npm packageJson属性详解
    • yaml语言教程
    • npm、yarn、pnpm包管理工具
    • ni包管理工具
      • 基本原理
      • 常用命令
        • 1. ni - install
        • 2. nr - run
        • 3. nx - execute
        • 4. nun - uninstall
      • 总结
  • GitHub技巧

  • Nodejs

  • 博客搭建

  • Ajax

  • 计算机网络

  • 计算机编译原理

  • 涨知识

  • 技术
  • 技术文档
simonzhangs
2022-05-30
目录

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
ni axios

# npm i axios
# yarn add axios
# pnpm i axios
1
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
nr -

# 重新执行最后一次执行的命令
# rerun the last command
1
2
3
4

# 3. nx - execute

nx jest

# npx jest
# yarn dlx jest
# pnpm dlx jest
1
2
3
4
5

# 4. nun - uninstall

nun axios

# npm uninstall axios
# yarn remove axios
# pnpm remove axios
1
2
3
4
5

# 总结

ni包管理工具主要做了以下三件事:

  1. 根据锁文件猜测用哪个包管理器 npm/yarn/pnpm - detect 函数;
  2. 抹平不同的包管理器的命令差异 - parseNi 函数;
  3. 最终运行相应的脚本 - execa 工具。

antfu大神在开发中发现多种工具包混用的情况,用ni的话直接不用记那么多命令了,也不会搞混命令。很佩服在实践过程中发现问题,从业务中提炼出来技术的能力。

编辑 (opens new window)
上次更新: 2022/06/16, 10:52:37
npm、yarn、pnpm包管理工具
GitHub高级搜索技巧

← npm、yarn、pnpm包管理工具 GitHub高级搜索技巧→

最近更新
01
一些有意思的类比
06-16
02
the-super-tiny-compiler解析
06-06
03
计算机编译原理总概
06-06
更多文章>
Theme by Vdoing | Copyright © 2021-2022
蜀ICP备2021023197号-2
Simonzhans | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
  • 飙升榜
  • 新歌榜
  • 云音乐民谣榜
  • 美国Billboard榜
  • UK排行榜周榜