.yarnrc.yml
是可以配置Yarn内部设置的地方。虽然Yarn会在父目录中自动找到它们,但通常应将它们保存在项目的根目录(通常是您的存储库)中。从v2开始,它们必须使用有效的Yaml编写并且具有正确的扩展名(简单地调用您的文件.yarnrc不会这样做)。
这些设置也可以通过环境变量定义(至少对于较简单的设置;尚不支持数组和对象)。为此,只需在名称前面加上蛇形名称即可:YARN_CACHE_FOLDER将设置缓存文件夹(此类值将覆盖RC文件中可能已定义的任何内容-谨慎使用)。
- // 下载的软件包存储在系统中的路径。
- // 它们将被规范化、压缩,并以标准化名称的zip档案的形式保存。
- // 缓存被认为是相对安全的,可以由多个项目共享,即使多个Yarn实例在不同的项目上同时运行。
- // 要设置全局缓存文件夹,应改用enableGlobalCache。
- cacheFolder: "./.yarn/cache",
- // 包含一个或多个证书颁发机构签名证书的文件的路径
- httpsCaFilePath: "./exampleCA.pem",
- // 在版本插件中,当前HEAD所对照的基础git refs。
- // 覆盖了默认的与master、origin/master、upstream/master、main、origin/main和upstream/main进行比较的行为
- // 支持git分支、标记和提交。
- changesetBaseRefs:
- - "master"
- - "origin/master"
- - "upstream/master"
- - "main"
- - "origin/main"
- - "upstream/main"
- // glob 模式。匹配以下模式的文件(相对于项目根目录的相对路径)将被命令忽略yarn version check
- changesetIgnorePatterns:
- - "**/*.test.{js,ts}"
- // throw(默认值): yarn install如果检测到程序包与锁文件中存储的校验和不匹配,则会引发异常
- // update: 则将更新锁文件校验和以匹配新值
- // ignore: 则不会进行校验和检查
- checksumBehavior: "throw"
- // 定义允许同时运行多少git克隆操作.默认为2
- cloneConcurrency: 8
- // zip存档采用的压缩级别
- // 0表示“无压缩,更快”,
- // 9表示“重压缩,更慢”。
- // 默认值是“mixed”,这是9的一个变体,
- // 如果内置的libzip启发式算法认为这将导致更合理的结果,则文件可以未压缩存储。
- compressionLevel: "mixed"
- // 约束文件的路径
- constraintsPath: "./constraints.pro"
- // 不提供任何见解时应使用的默认语言模式
- defaultLanguageName: "node"
- // Yarn是一个模块化的程序包管理器,可以解析来自各种来源的程序包。
- // 这样,semver范围和标签名称不仅适用于npm注册表-只需将默认协议更改为其他协议,
- // 您的semver范围就会从您选择的任何来源中获取
- defaultProtocol: "npm:"
- // 可能的值为"^"(默认值)"~"或""。依赖性范围的默认前缀,用于安装到清单的新依赖性。
- defaultSemverRangePrefix: "^"
- // 存储版本控制文件的文件夹
- deferredVersionFolder: "./.yarn/versions"
- // 如果为true,Yarn将通过使用颜色区分其消息的重要部分来格式化其漂亮打印输出。
- enableColors: true
- // 如果为true,Yarn将忽略cacheFolder设置,并将缓存文件存储到共享相同配置的所有本地项目共享的文件夹中。
- enableGlobalCache: false
- // 如果为true,允许 CLI 在其输出中使用超链接
- enableHyperlinks: true
- // 如果为 true,Yarn 在运行时将拒绝以任何方式更改缓存(无论是添加文件还是删除文件)yarn install。
- enableImmutableCache: false
- // 如果为true,则Yarn将在运行安装时拒绝更改安装工件(除了缓存)。
- // 该标志是非常侵入性的,通常只应通过手动将--immutable标志传递给来在CI上进行设置yarn install。
- enableImmutableInstalls: false
- // 如果为true,则Yarn将直接在终端内打印构建输出,而不是将其缓冲在日志文件中。这是CI环境的默认设置
- enableInlineBuilds: false
- // 如果为true,Yarn将打印任何无法成功应用于终端的补丁部分(hunks)。默认为false。
- enableInlineHunks: true
- // 如果为 true,Yarn 将在大多数消息前加上适合搜索引擎的代码
- enableMessageNames: true
- // 如果启用(默认设置),则Yarn将使用全局文件夹作为网络和实际缓存之间的间接访问。
- // 对于尚未从"Zero-Installs"中受益的项目,这可以使安装更快
- enableMirror: true
- // 如果为 false,Yarn 将永远不会自己向网络发出任何请求,并且会抛出异常而不是让它发生。
- // 对于 CI 来说,这是一个非常有用的设置,CI 通常希望确保它们不会错误地从网络加载依赖项
- enableNetwork: true
- // 如果为true(CI环境之外的默认值),Yarn将显示长时间运行事件的进度条
- enableProgressBars: true
- // 如果false,则Yarn将postInstall在安装项目时不执行脚本。
- // 请注意,由于dependenciesMeta,您现在还可以基于每个软件包禁用脚本。
- enableScripts: true
- // 如果为false,SSL证书错误将被忽略
- enableStrictSsl: true
- // 如果为true(CI环境之外的默认值),Yarn将定期向我们的服务器发送匿名数据,跟踪一些使用信息,如项目中的依赖项数量、运行的安装次数等
- enableTelemetry: true
- // 如果为false,Yarn将不会打印运行各种命令时运行每个子步骤所花费的时间。
- // 当您希望每次执行都具有与前一次完全相同的输出时,这通常是出于测试目的而需要的。
- enableTimers: true
- // 如果为false,Yarn将不会仅仅因为工作区的版本恰好匹配一个semver范围而链接工作区
- // 禁用此设置将要求通过工作区:协议进行所有工作区访问
- // 这通常只在一些非常特殊的情况下才需要。
- enableTransparentWorkspaces: true
- // 存储所有系统全局文件的路径
- globalFolder: "./.yarn/global"
- // 定义在发出HTTP请求时要使用的代理
- // Yarn目前只支持HTTP代理
- httpProxy: "http://proxy:4040"
- // http 失败时的重试次数
- httpRetry: 3
- // 每个 http 请求的超时时间(以毫秒为单位)
- httpTimeout: 60000
- // 包含 PEM 格式证书链的文件路径
- httpsCertFilePath: "./exampleCert.pem"
- // 包含 PEM 格式私钥的文件路径
- httpsKeyFilePath: "./exampleKey.pem"
- // 定义发出 HTTPS 请求时要使用的代理(目前仅支持 HTTP 代理)
- httpsProxy: "http://proxy:4040"
- // 如果为true,则该--cwd标志将被忽略
- ignoreCwd: false
- // 如果为真,则在使用全局可执行文件时将忽略本地可执行文件
- ignorePath: false
- // 在运行安装时不允许更改的文件和目录模式数组,其中设置了 `--immutable` 标志
- immutablePatterns:
- - .pnp.*
- - **/.pnp.*
- // 通过命令创建包时使用的范围init
- initScope: "yarnpkg"
- // 通过 init 命令创建包时要设置的其他字段
- // 所有属性将被逐字添加到生成的package.json中
- initFields:
- bugs:
- url: "https://github.com/facebookresearch/Mephisto/issues"
- homepage: "https://github.com/facebookresearch/Mephisto.git"
- license: MIT
- main: build/bundle.js
- repository:
- type: git
- url: "git+https://github.com/facebookresearch/Mephisto.git"
- source: src/index.js
- // 安装状态将被持续保存的文件的路径。
- installStatePath: "./.yarn/install-state.gz"
- // 定义了消息名称或消息文本的日志级别的重写。
- // 通过这个设置,你可以隐藏特定的消息或给它们一个更重要的可见度
- logFilters:
- // 选择所有具有给定代码的信息。
- - code: YN0005
- // info 、 warning 、 error 或 discard 之一,将指定的日志级别应用于所有选定的消息。
- level: discard
- // 选择一条必须与给定文本匹配的消息。
- // 如果消息都匹配 code 为基础的和 text 为基础的过滤器,该 text 为基础的的将优先于 code 为基础的人。
- - text: "lorem-ipsum@npm:1.2.3 lists build scripts, but its build has been explicitly disabled through configuration"
- // info 、 warning 、 error 或 discard 之一,将指定的日志级别应用于所有选定的消息。
- level: discard
- // 只选择一条必须与给定 glob 模式匹配的消息。
- // 如果消息同时匹配基于 pattern 和基于 code 的过滤器
- // 则基于 pattern 的过滤器将优先于其他过滤器。
- // 通过使用优先于 pattern 的 text 过滤器,可以逐案覆盖模式。
- - pattern: "lorem-ipsum@* lists build scripts, but its build has been explicitly disabled through configuration"
- // info 、 warning 、 error 或 discard 之一,将指定的日志级别应用于所有选定的消息。
- level: discard
- // 定义将由Yarn生成的锁定文件的名称
- lockfileFilename: "yarn.lock"
- // 定义允许多少个请求在同一时间运行。
- // Yarn默认为50个并发请求,但当在不能处理大量并发请求的代理后面工作时,可能需要更多限制。
- networkConcurrency: 8
- // 额外的网络设置,每个主机名
- networkSettings:
- // 要覆盖设置的主机名(支持glob模式)
- *.example.com:
- // 下面几个配置在上文中皆可找到
- httpsCaFilePath: "./exampleCA.pem"
- enableNetwork: true
- httpProxy: "http://proxy:4040"
- httpsCertFilePath: "./exampleCert.pem"
- httpsKeyFilePath: "./exampleKey.pem"
- httpsProxy: "http://proxy:4040"
- // 值: workspaces , dependencies,或 none(默认值)。
- // 可以通过package.json 中 installConfig.hoistingLimits 字段按工作区覆盖此设置。
- nmHoistingLimits: "none"
- // 可以通过package.json 中 installConfig.selfReferences 字段按工作区覆盖此设置。
- nmSelfReferences: true
- // 如果设置为 hardlinks-local Yarn 将利用硬链接来减少当前项目中 node_modules 目录中的磁盘空间消耗
- // 使用 hardlinks-global Yarn 将使用全局内容可寻址存储来减少使用此选项的所有项目的 node_modules 大小
- nmMode: "classic"
- // pnp 、 pnpm 和 node-modules.定义应该使用什么链接器来安装 Node 包(用于启用 node-modules 插件)
- nodeLinker: "pnp"
- // 仅适用于Windows。
- // junctions: Yarn将在将工作区链接到node_modules目录时使用Windows junctions(这些目录始终是绝对路径)
- // symlinks: Yarn将使用符号链接,这将使用相对路径,并且与Yarn在非Windows平台上的行为一致
- // 要创建symlinks,运行Yarn的Windows用户必须具有创建符号链接权限。因此,Yarn默认使用连接。
- winLinkType: "junctions"
- //如果为true,Yarn在向注册中心发出请求时,将始终发送认证凭证。这通常不需要。
- npmAlwaysAuth: false
- // 定义审计依赖项时必须使用的注册表。
- // 不需要定义,在这种情况下将使用 npmRegistryServer 的值。
- npmAuditRegistry: "https://npm.pkg.github.com"
- // 定义访问注册表时默认使用的身份验证凭据(相当于v1 中的 _auth )。
- // 强烈建议不要使用此设置,而是使用 npmAuthToken 。
- npmAuthIdent: "username:password"
- // 定义访问注册表时默认使用的身份验证凭据(相当于v1 中的 _authToken )。
- // 如果您使用 npmScopes 定义多个注册表,则 npmRegistries 字典允许您在每个注册表的基础上覆盖这些凭据。
- npmAuthToken: "ffffffff-ffff-ffff-ffff-ffffffffffff"
- // 定义将包发布到 npm 注册表时使用的默认访问权限。
- // 有效值是 public 和 restricted ,但 restricted 通常需要注册付费计划(这取决于您使用的注册表)。
- npmPublishAccess: "public"
- // 定义推送包时必须使用的注册表。
- // 不需要定义,在这种情况下将使用 npmRegistryServer 的值。
- // 由 publishConfig.registry 覆盖。
- npmPublishRegistry: "https://npm.pkg.github.com"
- // 在全局配置的基础上,注册表可以在每个范围的基础上进行配置(例如,指示Yarn在访问特定范围的包时使用你的私有注册表)。支持以下属性。
- npmRegistries:
- // 此项表示嵌套对象中定义的设置所涵盖的注册表。该协议是可选的(使用 https://npm.pkg.github.com 也可以)。
- //npm.pkg.github.com:
- // 上文中 npmAlwaysAuth
- npmAlwaysAuth: false
- // 上文中 npmAuthIdent
- npmAuthIdent: "username:password"
- // 上文中 npmAuthToken
- npmAuthToken: "ffffffff-ffff-ffff-ffff-ffffffffffff"
- // 定义远程服务器的主机名,Yarn 在查询 npm 注册表时应从其中获取元数据和存档。
- // 如果您想为不同的范围定义不同的注册表,请参阅 npmScopes 。
- // 要为您的服务器定义身份验证方案,请参阅 npmAuthToken 。
- // 主机名必须使用 HTTPS 协议,但这可以通过将其添加到下文的 unsafeHttpWhitelis 来更改。
- npmRegistryServer: "https://registry.yarnpkg.com"
- // 此设置列出了允许使用 HTTP 协议的主机名。
- // 使用 HTTPS 需要任何其他主机名
- // 支持全局模式。
- unsafeHttpWhitelist:
- - "*.example.org"
- - "example.org"
- //在全局配置的基础上,注册表可以在每个范围的基础上进行配置(例如,指示Yarn在访问特定范围的包时使用你的私有注册表)。支持以下属性。
- npmScopes:
- // 此键表示嵌套对象中定义的设置所涵盖的范围。请注意,它不能以 @ 字符开头
- my-company:
- // 上文中可以查找一下字段
- npmPublishRegistry: "https://registry.yarnpkg.com"
- npmRegistryServer: "https://registry.yarnpkg.com"
- npmAlwaysAuth: false
- npmAuthIdent: "username:password"
- npmAuthToken: "ffffffff-ffff-ffff-ffff-ffffffffffff"
- // 某些包的依赖项可能被错误地指定 -
- // 例如,缺少一个依赖项,导致 Yarn 拒绝它访问。
- // 该 packageExtensions 领域提供了一种额外的信息扩展现有的包定义。
- // 注意:这个字段是用来添加依赖的;如果您需要重写现有的,请到package.json中的 resolutions 字段。
- packageExtensions:
- // 每个键都是涵盖一个semver范围的描述符。
- // 扩展将被应用于任何版本与指定范围相匹配的软件包。
- // 无论软件包来自哪里,这都是真的,所以不区分它们是来自git还是注册表,比如说。只有版本是重要的。
- webpack@*:
- dependencies:
- lodash: "^4.15.0"
- peerDependencies:
- webpack-cli: "*"
- peerDependenciesMeta:
- webpack-cli:
- optional: true
- // Yarn 将读取和写入 .pnp.meta.json 文件的位置
- pnpDataPath: "./.pnp.data.json"
- // 如果为 true,Yarn 将生成一个实验性 ESM 加载器 ( .pnp.loader.mjs )。
- // Yarn 尝试自动检测是否需要 ESM 支持。
- pnpEnableEsmLoader: false
- // 如果为 true(默认值),Yarn 将生成一个 .pnp.cjs 文件,其中包含您的项目正常工作所需的所有数据。
- // 如果off ,Yarn 还将生成一个 .pnp.data.json 文件,供 @yarnpkg/pnp 包使用。
- pnpEnableInlining: true
- // 枚举,其值( none 、 dependencies-only 、 all )定义了 PnP 钩子允许包依赖内置回退机制的容量
- // 在 dependencies-only 模式(默认)下,您的工作区不允许使用它。
- pnpFallbackMode: "dependencies-only"
- // 一组 glob 模式。匹配以下位置的文件(相对于生成的 .pnp.cjs 文件的相对路径)将不会被 PnP 覆盖,并将使用常规的 Node 分辨率。
- // 通常仅当您的子项目还不是工作区树的一部分时才需要。
- pnpIgnorePatterns:
- - "./subdir/*"
- // strict (默认),Yarn 将不允许模块需要它们没有在自己的依赖项中明确列出的包
- // loose ,Yarn 将允许访问在 1.x 安装下会被提升到顶级的包
- // 请注意,即使在松散模式下,此类调用也是不安全的(提升规则不可预测),应避免使用。
- pnpMode: "strict"
- // 将 .pnp.cjs 到生成的.pnp.cjs文件的标头。你可以写多行,但这有点不受欢迎。
- pnpShebang: "#!/usr/bin/env node"
- // 未拔出的程序包将存储在磁盘上的路径
- pnpUnpluggedFolder: "./.yarn/unplugged"
- // 如果为true,Yarn将只打印任何缓存变化的单行报告。
- preferAggregateCacheInfo: false
- // 如果为 true,则 Yarn在运行 yarn version 系列命令时将默认使用延迟版本( --deferred )。
- // 这可以通过手动设置 --immediate 标志在命令的基础上被否决。
- preferDeferredVersions: false
- // 如果为 true,Yarn 会在通过消除歧义来改进某些操作时寻求您的指导。
- // 启用此设置还会解锁一些功能(例如, yarn add 命令会建议在相关时重用与其他工作区相同的依赖项)。
- preferInteractive: false
- // 如果为 true,Yarn将截断超出终端尺寸的行。
- // 如果进度条被禁用,行数将永远不会被截断。可遗忘的行(例如,获取步骤的日志)总是被截断的。
- preferTruncatedLines: false
- // 应该使用哪种风格的进度条(仅当启用进度条时)
- // 有效值:https://github.com/yarnpkg/berry/blob/ac2668904bdcd804e531291c749b9d17b8d3acd7/packages/yarnpkg-core/sources/StreamReport.ts#L40
- progressBarStyle: "default"
- // 此设置定义 Yarn 在解析 rc 文件时查找的文件的名称。
- // 出于显而易见的原因,此设置不能在 rc 文件中设置,必须在环境中使用 YARN_RC_FILENAME 变量进行定义。
- rcFilename: ".yarnrc.yml"
- // 定义Yarn应该为其安装软件包的系统
- supportedArchitectures:
- // 要涵盖的操作系统列表
- os:
- - "current"
- - "darwin"
- - "linux"
- - "win32"
- // 要涵盖的CPU列表
- cpu:
- - "current"
- - "x64"
- - "ia32"
- libc:
- - "current"
- - "glibc"
- - "musl"
- // 此设置定义了两次遥测上传之间的最小时间,以天为单位。
- // 默认情况下,我们每周只发送一个请求,这使得我们无法以较低的粒度来跟踪你的使用情况。
- telemetryInterval: 7
- // 默认情况下,我们在发送的遥测数据中不分配唯一的ID,所以我们没有办法知道哪些数据来自于哪个项目。
- // 这个设置可以用来强制向我们的遥测服务器发送一个用户ID。
- // 坦率地说,它只在一些非常特殊的用例中有用。
- // 例如,我们在Yarn资源库上使用它,以便将我们自己的使用情况排除在公共仪表板之外
- // 因为我们在这里运行Yarn的频率一定比其他地方高,所以得到的数据会有偏差
- telemetryUserId: "yarnpkg/berry"
- // 由于 Yarn 安装列出对等依赖项的包的方式的特殊性,一些包将被映射到文件系统上实际上并不存在的多个虚拟目录。
- // 这个设置告诉 Yarn 把它们放在哪里。请注意,文件夹名称必须是 __virtual__ 。
- virtualFolder: "./.yarn/__virtual__"
- // Yarn 二进制文件的路径,对于在 rc 文件覆盖的目录中运行的任何命令,它将被执行而不是任何其他(包括全局的)。
- // 如果文件扩展名以 .js 结尾,它将是必需的,并且会在任何其他情况下生成。
- // yarnPath设置目前是在项目中安装Yarn的首选方式,
- // 因为它可以确保您的整个团队使用完全相同的Yarn版本,而无需单独更新。
- yarnPath: "./scripts/yarn-2.0.0-rc001.js"