Yarn是JavaScript的依赖管理工具,它与npm类似,但提供了一些额外的性能优化和一致性保证。
Yarn的使用:
-
初始化项目:
yarn init
此命令会引导您创建一个新的
package.json
文件,用于记录项目的元信息和依赖。 -
添加依赖:
yarn add <package-name>
添加一个依赖包到项目的
dependencies
字段,并将其下载到node_modules
目录中。例如:yarn add lodash
若要指定版本或标签:
yarn add <package-name>@<version> # 指定版本 yarn add <package-name>@next # 使用下一个预发布版本
若要添加到开发依赖(devDependencies):
yarn add --dev <package-name>
-
全局安装:
yarn global add <package-name>
将包安装到全局环境中,使得任何项目都可以访问该命令行工具。
-
升级依赖:
yarn upgrade <package-name>
升级指定的依赖包至最新版本,并更新
package.json
和yarn.lock
文件。若要升级所有依赖:
yarn upgrade
-
卸载依赖:
yarn remove <package-name>
从项目中删除指定的依赖包,并从
package.json
和yarn.lock
中移除相应条目。 -
列出已安装依赖:
yarn list [-depth=n | --pattern=<regex>] [--json]
列出所有已安装的依赖及其版本信息,可以选择递归列出指定深度的子依赖或按照正则表达式筛选。
-
清理缓存:
yarn cache clean [<package-name>]
清除Yarn的缓存数据,如果不指定包名,则清空所有缓存。
-
检查依赖树:
yarn why <package-name>
显示为什么某个包存在于项目中,即哪个或哪些包依赖于它。
-
安装项目依赖:
yarn install
安装
package.json
中列出的所有依赖项,并根据yarn.lock
文件锁定版本,确保项目环境的一致性。 -
检查Yarn版本:
yarn --version
显示当前安装的Yarn版本。
-
设置镜像源:
yarn config set registry <registry-url>
更改默认的npm注册表地址,例如设置为淘宝npm镜像:
yarn config set registry https://registry.npm.taobao.org
还有很多其他命令和选项在使用时可以参考Yarn的官方文档进行使用。
Yarn在使用中常见的问题及解决方案
-
问题: 网络问题导致的包下载失败
示例:
error An unexpected error occurred: "https://registry.yarnpkg.com/@types/react/-/react-17.0.35.tgz: Request failed \"404 Not Found\"".
解决办法:
-
检查网络连接,或尝试更改npm/yarn的registry源至国内镜像源,如淘宝npm镜像:
yarn config set registry https://registry.npm.taobao.org
-
清理缓存后再尝试:
yarn cache cleanyarn install
-
-
问题: 版本冲突
示例:
warning Resolution field "@typescript-eslint/eslint-plugin@4.29.0" is incompatible with requested version "4.29.3"
解决办法:
-
查看
yarn.lock
文件,手动调整版本以解决冲突。 -
删除
yarn.lock
文件并重新安装,让Yarn自动解决版本冲突:rm yarn.lockyarn install
-
-
问题: 全局安装的包找不到
示例: 在终端中无法运行通过
yarn global add
安装的命令。解决办法:
-
确保全局包的路径已被添加到系统的PATH环境变量中。在某些系统中,可能需要手动添加路径,例如在Unix系统中:
echo 'export PATH="$HOME/.yarn/bin:$PATH"' >> ~/.bashrcsource ~/.bashrc
-
或者检查Yarn的全局安装路径,并将其加入PATH。
-
-
问题: Yarn权限不足
示例:
EACCES: permission denied, access '/usr/local/lib/node_modules'
解决办法:
-
使用管理员权限运行命令(Unix/Linux/MacOS):
sudo yarn add <package>
-
或者将包安装到用户主目录而不是全局目录:
yarn global add --prefix ~/path/to/global/folder <package>
-
-
问题: 已安装的依赖与lock文件不符
示例: 在团队合作时,当你拉取别人的代码并运行
yarn install
时,发现本地安装的依赖与yarn.lock
文件中的不匹配。解决办法:
-
使用
yarn install --frozen-lockfile
强制Yarn按照yarn.lock
中的确切版本安装依赖。
-
-
问题: 离线模式下安装新包失败
示例:
error An unexpected error occurred: "http://localhost:4873/<package>: connect ECONNREFUSED 127.0.0.1:4873"
(假设你在使用私有仓库并且在离线状态下)解决办法:
-
在非离线模式下先下载所需的包,然后再进入离线模式。
-
或者确保缓存中有所需包的离线版本。
-