返回顶部

.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"