yarn前端不可缺少的包管理工具
简介
Yarn 是一个用于管理 JavaScript 项目依赖关系的包管理工具。它是由 Facebook、Google、Exponent 和 Tilde 团队共同开发的,并且在开源社区中得到广泛支持和使用。
Yarn 的目标是解决 npm(Node Package Manager)在性能和可靠性方面的一些问题。它提供了更快的下载速度、更一致的依赖关系解析、更好的缓存管理以及更简洁的命令行界面。
以下是 Yarn 的一些主要特点和功能:
- 快速和可靠的依赖关系解析:Yarn 使用一个锁定文件(yarn.lock)来确保在不同环境中安装相同的依赖项版本。这消除了开发人员之间由于依赖项版本不一致而引起的问题。
- 并行安装:Yarn 支持并行下载和安装依赖项,可以显著加快项目的构建速度。
- 离线模式:Yarn 允许在没有网络连接的情况下进行安装和构建,只要之前已经下载过依赖项并缓存在本地。
- 自动版本解决:Yarn 可以自动解决依赖项之间的版本冲突,并生成一个满足所有依赖项版本要求的解决方案。
- 可选择的网络源:Yarn 允许开发人员选择使用不同的网络源来下载依赖项,包括官方源、镜像源或私有源。
安装
npm install yarn -g常用命令
yarn init创建package.json,yarn init --yes、yarn init -y跳过会话直接生成package.json
yarn install安装所有依赖包,目录中存在 yarn.lock 文件,Yarn 将根据该文件中的锁定信息来确保安装的依赖项版本与先前安装的一致,不存在yarn.lock 则根据 package.json 文件中的依赖项信息来确定要安装的包的版本,并生成一个新的 yarn.lock 文件
yarn add <foo>添加依赖包,默认开发环境,依赖会记录在package.json的dependencies下
yarn add <foo> --dev添加依赖包,生产环境,依赖会记录在package.json的devDependencies下
yarn add <foo>@<version>添加指定版本依赖包
yarn global add <foo>全局添加依赖包
yarn upgrade更新所有依赖包
yarn upgrade <foo>更新指定包
yarn remove <foo>移除指定包
yarn start <script>运行脚本,package.json中的scripts
yarn list列出所有安装的依赖包
yarn info <script>查看某个包信息
yarn config list显示当前配置
yarn config set <key> <value>设置配置
yarn config get <key>获取某个配置
yarn config delete <key>删除某个配置
yarn cache list列出已缓存的每个包
yarn cache dir返回 全局缓存位置
yarn cache clean清除缓存
yarn命令选项
--cache-folder指定用于存储Yarn缓存的自定义文件夹路径
--check-files在安装过程中验证包的文件树以确保一致性。
--cwd指定要使用的工作目录路径(默认为当前用户的主目录)
--disable-pnp禁用Plug’n’Play安装。
--emoji [bool]启用输出中的表情符号(默认为false)
--enable-pnp—pnp:启用Plug’n’Play安装
--flat只允许一个版本的包存在
--focus通过安装其兄弟工作区的远程副本,将焦点集中在单个工作区上
--force即使之前已构建过,也安装和构建包,覆盖锁定文件
--frozen-lockfile不生成锁定文件,并在需要更新时失败
--global-folder指定用于存储全局包的自定义文件夹路径
--har保存网络流量的HAR输出
--ignore-engines忽略引擎检查
--ignore-optional忽略可选依赖项
--ignore-platform忽略平台检查
--ignore-scripts不运行生命周期脚本
--json将Yarn日志消息格式化为JSON行(参见jsonlines.org)
--link-duplicates在node_modules中创建对重复模块的硬链接
--link-folder指定用于存储全局链接的自定义文件夹路径
--modules-folder将模块输出到指定的文件夹路径,而不是相对于当前工作目录的node_modules文件夹中
--mutex [:specifier]使用互斥锁确保只有一个Yarn实例在执行
--network-concurrency并发网络请求的最大数量
--network-timeout网络请求的TCP超时时间
--no-bin-links在设置包时不生成二进制链接
--no-default-rc防止Yarn自动检测yarnrc和npmrc文件
--no-lockfile不读取或生成锁定文件
--non-interactive不显示交互提示
--no-node-version-check在使用可能不受支持的Node版本时不发出警告
--no-progress禁用进度条
--offline如果本地缓存中没有所需的依赖项,则触发错误
--otp用于双因素身份验证的一次性密码
--prefer-offline仅在本地缓存中没有依赖项时使用网络
--preferred-cache-folder指定可用时用于存储Yarn缓存的自定义文件夹路径
--prod—production [prod]:仅安装生产依赖项
--proxy设置代理服务器
--pure-lockfile不生成锁定文件
--registry覆盖配置中的注册表URL
-s, --silent跳过Yarn的控制台日志,但会打印其他类型的日志(如脚本输出)
--scripts-prepend-node-path [bool]在脚本中将Node可执行文件目录添加到PATH中
--skip-integrity-check在运行安装时跳过检查node_modules是否已安装
--strict-semver使用严格的语义版本控制
--update-checksums从当前存储库更新包的校验和
--use-yarnrc指定Yarn应使用的yarnrc文件路径(仅限.yarnrc,不包括.npmrc)
-v, --version输出Yarn的版本号
--verbose输出内部操作的详细消息
-h, --help输出使用信息。
yarn相关命令,可通过yarn [command] -h 获取帮助信息
access:管理包的访问权限。add:添加一个或多个包到项目的依赖项中。audit:检查项目的依赖项是否存在安全漏洞。autoclean:自动清理项目中未使用的依赖项。bin:显示或运行项目中的二进制文件。cache:管理Yarn的缓存。check:检查项目的依赖项是否已安装并且与 yarn.lock 文件一致。config:配置Yarn的设置。create:创建新的Yarn项目。exec:在项目上下文中执行命令。generate-lock-entry / generateLockEntry:生成 yarn.lock 文件的条目。global:管理全局安装的包。help:获取有关Yarn命令的帮助信息。import:将包从其他包管理工具导入到Yarn。info:获取有关包的信息。init:在当前目录中初始化一个新的Yarn项目。install:安装项目的依赖项。licenses:列出项目依赖项的许可证信息。link:将本地包链接到项目中。list:列出项目的依赖项。login:登录到Yarn的注册表。logout:注销Yarn的注册表。node:在指定的Node版本下运行命令。outdated:检查项目的依赖项是否已过时。owner:管理包的所有者。pack:将包打包为压缩文件。policies:管理项目的策略。publish:发布包到注册表。remove:从项目的依赖项中移除一个或多个包。run:运行项目中定义的自定义脚本。tag:管理包的标签。team:管理包的团队。unlink:取消链接本地包。unplug:将包从Plug’n’Play安装模式中解除。upgrade:升级项目的依赖项。upgrade-interactive / upgradeInteractive:以交互方式升级项目的依赖项。version:显示Yarn的版本号。versions:显示包的可用版本。why:解释为什么某个包被安装。workspace:在工作区中执行命令。workspaces:管理Yarn工作区。
镜像源
yarn config set registry <registry>设置镜像源
- npm 官方原始镜像网址是:https://registry.npmjs.org/
- 淘宝 NPM 镜像:https://registry.npm.taobao.org
- 阿里云 NPM 镜像:https://npm.aliyun.com
- 腾讯云 NPM 镜像:https://mirrors.cloud.tencent.com/npm/
- 华为云 NPM 镜像:https://mirrors.huaweicloud.com/repository/npm/
- 网易 NPM 镜像:https://mirrors.163.com/npm/
- 中科院大学开源镜像站:http://mirrors.ustc.edu.cn/
- 清华大学开源镜像站:https://mirrors.tuna.tsinghua.edu.cn