Yarn2 Yarnrc文件

Yarn2 Yarnrc文件

Yarnrc文件(之所以这样命名是因为必须调用它们.yarnrc.yml),是可以配置Yarn内部设置的地方。虽然Yarn会在父目录中自动找到它们,但通常应将它们保存在项目的根目录(通常是您的存储库)中。从v2开始,它们必须使用有效的Yaml编写并且具有正确的扩展名(简单地调用您的文件.yarnrc不会这样做)。

这些设置也可以通过环境变量定义(至少对于较简单的设置;尚不支持数组和对象)。为此,只需在名称前面加上蛇形名称即可:YARN_CACHE_FOLDER将设置缓存文件夹(此类值将覆盖RC文件中可能已定义的任何内容-谨慎使用)。

该设置定义了bstate文件的存储位置。bstate文件包含在您的依赖项中具有构建要求的每个软件包的当前构建状态。删除bstate文件很安全,但是会导致所有软件包都被重建。

bstatePath:"./.yarn/build-state.yml"

下载的软件包在系统上的存储路径。它们将被标准化,压缩并以具有标准化名称的zip存档形式保存。即使多个Yarn实例在不同项目上同时运行,也可以认为该缓存相对安全,可以由多个项目共享。

cacheFolder:"./.yarn/cache"

如果throw(默认值),则Yarn yarn install如果检测到程序包与锁文件中存储的校验和不匹配,则会引发异常。如果为update,则将更新锁文件校验和以匹配新值。如果为ignore,则不会进行校验和检查。

checksumBehavior:“throw"

约束文件的路径。

ConstraintsPath:"constraints.pro"

程序包不提供任何见解时应使用的默认语言模式。

defaultLanguageName:“node"

Yarn是一个模块化的程序包管理器,可以解析来自各种来源的程序包。这样,semver范围和标签名称不仅适用于npm注册表-只需将默认协议更改为其他协议,您的semver范围就会从您选择的任何来源中获取。

defaultProtocol:"npm:"

语义版本依赖性范围的默认前缀,用于安装到清单的新依赖性。可能的值为"^"(默认值)"~"或""。

defaultSemverRangePrefix:"^"

存储版本控制文件的文件夹。

deferredVersionFolder:"./.yarn/versions"

如果为true,则虚拟符号链接将在需要时使用绝对路径[不可移植!]

enableAbsoluteVirtuals:false

如果为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

如果启用(默认设置),则Yarn将使用全局文件夹作为网络和实际缓存之间的间接访问。对于尚未从“零安装"中受益的项目,这可以使安装更快。

enableMirror:true

如果禁用,则Yarn将永远不会单独向网络发出任何请求,并且将引发异常而不是让其发生。对于CI来说,这是一个非常有用的设置,CI通常希望确保它们不会错误地从网络加载其依赖项。

enableNetwork:true

如果为true,则Yarn将显示长时间运行事件的进度条。对于CI环境,默认情况下禁用此功能。

enableProgressBars:true

如果禁用,则Yarn将postInstall在安装项目时不执行脚本。请注意,由于有了,您现在还可以基于每个软件包禁用脚本dependenciesMeta。

enableScripts:false

如果为true,则Yarn将打印运行各种命令时花费在运行每个子步骤上的时间。当您希望每个执行都具有与先前执行完全相同的输出时,通常出于测试目的需要禁用此功能。

enableTimers:true

如果禁用,则Yarn将不再链接工作区,因为它们的版本恰好匹配一个semver范围。使用此设置将要求所有工作空间访问均通过workspace:协议进行。通常仅在某些非常特殊的情况下才需要这样做。

enableTransparentWorkspaces:false

存储所有系统全局文件(例如,通过注册的所有软件包的列表yarn link)的路径。

globalFolder:"./.yarn/global"

定义在发出HTTP请求时要使用的代理。请注意,目前Yarn仅支持HTTP代理(欢迎使用!)。

httpProxy:"http://proxy:4040"

定义发出HTTPS请求时要使用的代理。请注意,目前Yarn仅支持HTTP代理(欢迎使用!)。

httpsProxy:"http://proxy:4040"

如果为true,则在使用全局可执行文件时将忽略本地可执行文件。

ignorePath: false

通过init命令创建软件包时使用的许可证。

initLicense:"MIT"

通过init命令创建软件包时使用的范围。

initScope:"yarnpkg"

通过init命令创建软件包时使用的版本。

initVersion:"0.0.1"

安装状态将被持久保存的文件的路径。

installStatePath:"./.yarn/install-state.gz"

定义将由Yarn生成的锁定文件的名称。

lockfileFilename:“yarn.lock"

定义用于安装Node软件包的链接器(用于启用node-modules插件),其中之一pnp,node-modules。

nodeLinker:"pnp"

如果为true,则Yarn将在向注册表提出请求时始终发送身份验证凭据。通常不需要。

npmAlwaysAuth:true

定义在访问注册表时默认使用的身份验证凭据(相当于_authv1)。强烈建议不要使用此设置npmAuthToken。

npmAuthIdent:“用户名:密码"

定义在访问注册表时默认使用的身份验证凭据(相当于_authTokenv1)。如果您npmScopes用于定义多个注册表,则该npmRegistries词典可让您基于每个注册表覆盖这些凭据。

npmAuthToken:"ffffffff-ffff-ffff-ffff-ffffffffffff"

定义将程序包发布到npm注册表时使用的默认访问权限。有效值为public和restricted,但restricted通常需要注册付费计划(这取决于您使用的注册表)。

npmPublishAccess:“公共"

定义推送程序包时必须使用的注册表。不需要定义,在这种情况下npmRegistryServer将使用的值。被覆盖publishConfig.registry。

npmPublishRegistry:"https://npm.pkg.github.com"

在全局配置之上,可以基于每个范围配置注册表(例如,指示Yarn在从给定范围访问程序包时使用您的私有注册表)。支持以下属性:

npmRegistries:

此项表示嵌套对象中定义的设置所涵盖的注册表。该协议是可选的(使用https://npm.pkg.github.com也可以)。

//npm.pkg.github.com:
请参阅npmAlwaysAuth。
npmAlwaysAuth:true
请参阅npmAuthIdent。
npmAuthIdent:“用户名:密码"
请参阅npmAuthToken。
npmAuthToken:"ffffffff-ffff-ffff-ffff-ffffffffffff"

定义远程服务器的主机名,Yarn在查询npm注册表时应从中获取元数据和存档。如果要为不同的范围定义不同的注册表,请参见npmScopes。要为您的服务器定义身份验证方案,请参阅npmAuthToken。主机名必须使用HTTPS协议,但是可以通过将其添加到来更改unsafeHttpWhitelist。

npmRegistryServer:"https://registry.yarnpkg.com"

在全局配置之上,可以基于每个范围配置注册表(例如,指示Yarn在从给定范围访问程序包时使用您的私有注册表)。支持以下属性:

npmScopes:

此项表示嵌套对象中定义的设置所覆盖的范围。请注意,它不能以@字符开头。

我的公司:

请参阅npmPublishRegistry。

npmPublishRegistry:"https://registry.yarnpkg.com"

请参阅npmRegistryServer。

npmRegistryServer:"https://npm.pkg.github.com"

请参阅npmAlwaysAuth。

npmAlwaysAuth:true

请参阅npmAuthIdent。

npmAuthIdent: "username:password"
请参阅npmAuthToken。
npmAuthToken:"ffffffff-ffff-ffff-ffff-ffffffffffff"

某些软件包的依赖关系可能未正确指定-例如,缺少一个依赖关系,导致Yarn拒绝对其进行访问。这些packageExtensions字段提供了一种扩展现有软件包定义以及其他信息的方法。如果使用它,请考虑向上游发送PR并将扩展扩展到plugin-compat数据库。

packageExtensions:

每个键都是一个覆盖一个semver范围的描述符。扩展将应用于其版本与指定范围匹配的任何软件包。无论软件包来自何处,都是如此,因此,例如,它们是否来自git或注册表都没有区别。仅版本很重要。

webpack@*:
dependencies:
lodash: "^4.15.0"
peerDependencies:
webpack-cli: "*"

Yarn将读取和写入.pnp.meta.json文件的位置。

pnpDataPath: "./.pnp.meta.json"

如果为true(默认设置),则Yarn将生成一个.pnp.js文件,其中包含项目正常运行所需的所有数据。如果禁用此选项,则Yarn还将生成.pnp.data.json要由@yarnpkg/pnp程序包使用的文件。

pnpEnableInlining:true

枚举,其值(none,dependencies-only,all)定义其容量应即插即用钩允许包依靠内置的回退机制。在dependencies-only模式(默认)下,不允许您的工作区使用它。

pnpFallbackMode: "dependencies-only"

匹配以下位置的文件(相对于与生成的.pnp.js文件相比的相对路径)将不被PnP覆盖,并且将使用常规的Node分辨率。通常仅在子项目还不属于工作空间树的情况下才需要。

pnpIgnorePattern: "^\\./subdir/.*"

如果为strict,则Yarn不允许模块要求它们未在其依赖项中明确列出的软件包。如果为loose,则Yarn将允许访问在1.x安装下已提升到顶层的软件包。请注意,即使在宽松模式下,此类调用也不安全(吊装规则不可预测),因此不建议使用。

pnpMode: "strict"

将在生成的.pnp.js文件之前添加标题。您可以写多行,但是对此有些皱眉。

pnpShebang: "#!/usr/bin/env node"

拔出的软件包将存储在磁盘上的路径。

pnpUnpluggedFolder: "./.yarn/unplugged"

如果为true,则--deferred在运行yarn version系列命令时,默认情况下,Yarn将使用延迟版本控制()。通过手动设置该--immediate标志,可以按命令推翻此规则。

preferredDeferredVersions:false

如果为true,则当通过消除歧义改善某些操作时,Yarn会要求您提供指导。启用此设置还会解锁某些功能(例如,该yarn add命令建议与相关的其他工作区重用相同的依赖项)。

preferInteractive: true

应该使用哪种样式的进度条(仅在启用进度条时)。有效值可在此处找到。

progressBarStyle: "default"

此设置定义解析rc文件时Yarn查找的文件的名称。出于明显的原因,无法在rc文件中设置此设置,而必须在环境中使用YARN_RC_FILENAME变量进行定义。

rcFilename: ".yarnrc.yml"

此设置列出了允许使用HTTP协议的主机名。改用HTTPS将需要任何其他主机名。做出此决定的原因和更多细节可以在此处找到。

支持glob模式。

unsafeHttpWhitelist:
- 
"*.example.org"
- 
"example.org"

由于Yarn如何安装列出对等依赖性的软件包的特殊性,某些软件包将被映射到文件系统上实际上不存在的多个虚拟目录。此设置告诉Yarn将它们放在哪里。请注意,文件夹名称必须为$$virtual。

virtualFolder: "./.yarn/$$virtual"

Yarn二进制文件的路径,对于rc文件覆盖的目录中运行的任何命令,它将代替任何其他命令(包括全局命令)执行。如果文件扩展名以.js它结尾,则将是必需的,并且在任何其他情况下都将生成该文件扩展名。

yarnPath: "./scripts/yarn-2.0.0-rc001.js"

如果设置,该yarn set version命令会将下载的文件存储在此位置,而不是所引用的文件yarnPath。如果您希望引用的文件yarnPath是包装程序,而真正的Yarn二进制文件存储在其他位置,则此设置很有用。

yarnUpgradePath: "./scripts/yarn-2.0.0-rc001.js"