npm 与 yarn 常用命令对比
有所区别的命令
| Npm | Yarn | 功能描述 |
|---|---|---|
| npm install(npm i) | yarn install(yarn) | 根据 package.json 安装所有依赖 |
| npm i –save [package] | yarn add [package] | 添加依赖包 |
| npm i –save-dev [package] | yarn add [package] –dev | 添加依赖包至 devDependencies |
| npm i -g [package] | yarn global add [package] | 进行全局安装依赖包 |
| npm update –save | yarn upgrade [package] | 升级依赖包 |
| npm uninstall [package] | yarn remove [package] | 移除依赖包 |
相同操作的命令
| Npm | Yarn | 功能描述 |
|---|---|---|
| npm run | yarn run | 运行 package.json 中预定义的脚本 |
| npm config list | yarn config list | 查看配置信息 |
| npm config set registry 仓库地址 | yarn config set registry 仓库地址 | 更换仓库地址 |
| npm init | yarn init | 互动式创建/更新 package.json 文件 |
| npm list | yarn list | 查看当前目录下已安装的node包 |
| npm login | yarn login | 保存你的用户名、邮箱 |
| npm logout | yarn logout | 删除你的用户名、邮箱 |
| npm outdated | yarn outdated | 检查过时的依赖包 |
| npm link | yarn link | 开发时链接依赖包,以便在其他项目中使用 |
| npm unlink | yarn unlink | 取消链接依赖包 |
| npm publish | yarn publish | 将包发布到 npm |
| npm test | yarn test | 测试 = yarn run test |
| npm bin | yarn bin | 显示 bin 文件所在的安装目录 |
| yarn info | yarn info | 显示一个包的信息 |
对于以上还须对于,还须做如下补充性说明:
-
在 npm 中,可以使用 npm config set save true 设置 —-save 为默认行为,但这对多数开发者而言,并非显而易见的。而使用 yarn,在package.json 中添加(add)和移除(remove)等行为是默认的。
-
对于要添加或升级的包,npm 与 yarn 都可以指定具体的版本,或者 Tag;如:
yarn add [package]@[version]
yarn add [package]@[tag] -
在国内,使用 npm,最好还是替换成淘宝的镜像,如此网络影响减小到最低,这样安装依赖包的速度,可以得到蛮大的改善:
npm config set registry registry.npm.taobao.org
yarn config set registry registry.npm.taobao.org当然也可以设置别名
cnpm:1alias cnpm="npm --registry=http://registry.cnpmjs.org --cache=$HOME/.npm/.cache/cnpm"
Yarn 独有的命令
我跳过了一些提醒我们不要使用的内容,如 yarn clean。
yarn licenses ls
# 允许您检查您的依赖的许可证
yarn licenses generate-disclaimer
# 自动创建您的许可证免责声明
yarn why taco
# 确定为什么安装了 taco 检查为什么会安装 taco,详细列出依赖它的其他包(感谢 Olivier Combe).
Emojis ⬆️
速度 🏃⌁
通过 yarn lockfile 自动实现 shrinkwrap 功能
以安全为中心的设计
yarn upgrade-interactive
# 允许您自己选择升级指定的包
关于 package-lock.json 和 yarn.lock
关于 yarn.lock
有时候一个项目周期很长,在不断开发的同时,而依赖的库也会有很大改变;有时候你可能只想运行 npm i 更新没有下载的插件,却不想偶尔会将依赖的一些其他插件更到最新,导致各种奇葩问题;package-lock.json 和 yarn.lock 就是为解决这种问题而设定的存在。