Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
4.0.0-rc.42
->4.2.0
2.0.0-rc.22
->2.0.4
3.0.0-rc.25
->3.1.1
3.0.0-rc.25
->3.1.0
4.0.0-rc.42
->4.0.5
3.0.0-rc.42
->3.0.2
Release Notes
yarnpkg/berry (@yarnpkg/core)
v4.2.0
Compare Source
v4.1.6
Compare Source
v4.1.5
Compare Source
v4.1.4
Compare Source
v4.1.3
Compare Source
v4.1.2
Compare Source
v4.1.1
Compare Source
v4.1.0
Compare Source
Tweaks
-,--verbose
inyarn workspaces foreach
;-v
will now only print the prefixes,-vv
will be necessary to also print the timings.Adds a new
--json
option toyarn run
when called without script nameFixes
node-modules
linkerlink:
dependencies mistreatment as inner workspaces, when they point to a parent folder of a workspaceFixes spurious "No candidates found" errors
Fixes missing executable permissions when using
nodeLinker: pnpm
Fixes packages being incorrectly flagged as optional
Fixes cache key corruptions due to uncontrolled git merges
Fixes
yarn version apply --all --dry-run
making unexpected changesFixes
yarn npm login
when the remote registry is Verdacciov4.0.5
Compare Source
v4.0.4
Compare Source
v4.0.3
Compare Source
v4.0.2
Compare Source
v4.0.1
Compare Source
node-modules
linker when inner workspace depends on outer workspaceyarn npm audit --ignore NUM
which didn't apply to deprecationsyarn npm audit --json
which didn't print the right output format@yarnpkg/core
yarn explain peer-requirements
commandv4.0.0
Compare Source
Major Changes
With Node.js 16's now being End of Life'd, we dropped support for Node.js versions lower than 18.12.
Some important defaults have changed:
yarn init
andyarn set version
will prefer usingpackageManager
rather thanyarnPath
when possible (when they detectCOREPACK_ROOT
in your environment variables).yarn init
will no longer use zero-install by default. You still can enable it, but it should make it easier to start one-of projects without having to rewrite the configuration afterwards.enableGlobalCache
now defaults totrue
. If your project uses Zero-Installs, the firstyarn install
you run after migrating to 4.0 will automatically setenableGlobalCache: false
in your local.yarnrc.yml
.yarn workspaces foreach
now requires one of--all
,--recursive
,--since
, or--worktree
to be explicitly specified; the previous default was--worktree
, but it was rarely what users expected.compressionLevel
now defaults to0
rather thanmixed
. It's been proved significantly faster on installs, and the size impact was reasonable enough to change the default. Note that it benefits you even if you use Zero-Installs: as per our tests, a zero-compression is actually easier to handle for Git (you can see by yourself with those examples usingcompressionLevel: 0
vscompressionLevel: mixed
).yarn install
after migrating from 3.6 to 4.0. If you do, it will automatically set the old default (compressionLevel: mixed
) in your.yarnrc.yml
file. You can then remove it whenever you feel ready to actually change the compression settings.All official Yarn plugins are now included by default in the bundle we provide. You no longer need to run
yarn plugin import
for official plugins (you still need to do it for third-party plugins, of course).Yarn's UI during installs has been greatly improved:
node-gyp
and transitive peer dependency errors) have been removed.yarn rebuild
calls.yarn npm audit
.Some settings were renamed or removed:
caFilePath
is nowhttpsCaFilePath
preferAggregateCacheInfo
has been removed (it's now always on)pnpDataPath
has been removed to adhere to our new PnP specification. For consistency, all PnP files will now be hardcoded to a single value so that third-party tools can implement the PnP specification without relying on the Yarn configuration.The
yarn npm audit
command has been reimplemented:/-/npm/v1/security/advisories/bulk
endpoint.npmAuditRegistry
can be used to temporarily route audit queries to the npm registry.yarn npm audit ! --no-deprecations
.Some legacy layers have been sunset:
.pnp.js
file when migrating.--assume-fresh-project
flag ofyarn init
has been removed.API Changes
The following changes only affect people writing Yarn plugins:
The
ZipFS
andZipOpenFS
classes have been moved from@yarnpkg/fslib
to@yarnpkg/libzip
. They no longer need or accept thelibzip
parameter.open
,ZIP_CREATE
, andZIP_TRUNCATE
bindings are no longer needed forZipFS
and have also been removed.The
dependencies
field sent returned byResolver#resolve
must now be the result of aConfiguration#normalizeDependencyMap
call. This change is prompted by a refactoring of how default protocols (ienpm:
) are injected into descriptors. The previous implementation caused various descriptors to never be normalized, which made it difficult to know what were the descriptors each function should expect.Similarly, the descriptors returned by
Resolve#getResolutionDependencies
are now expected to be the result ofConfiguration#normalizeDependency
calls.Note that this only applies to the
dependencies
field; thepeerDependencies
field is unchanged, as it must only contains semver ranges without any protocol (with an exception forworkspace:
, but that's not relevant here).The
Resolve#getResolutionDependencies
function must now return an object of arbitrary string keys and descriptor values (instead of a map withDescriptorHash
keys). Those descriptors will be resolved and assigned to the same keys as the initial object. This change allows resolvers to wrap resolution dependencies from other resolvers, which wasn't possible before since it'd have caused the key to change.The
generateLoader
function in@yarnpkg/pnp
no longer generates the$$SETUP_STATE
function, it now needs to be present in theloader
passed to the function.The
getCustomDataKey
function inInstaller
from@yarnpkg/core
has been moved toLinker
.renderForm
'soptions
argument is now required to enforce that custom streams are always specified.npmConfigUtils.getAuditRegistry
no longer takes aManifest
as its first argument.The
FetchOptions.skipIntegrityCheck
option has been removed. UseFetchOptions.cacheOptions.skipIntegrityCheck
instead.MapConfigurationValue
has been removed. UsemiscUtils.ToMapValue
instead.Manifest.isManifestFieldCompatible
andManifest.prototype.isCompatibleWith{OS,CPU}
have been removed. UseManifest.prototype.getConditions
andstructUtils.isPackageCompatible
instead.versionUtils.{fetchBase,fetchRoot,fetchChangedFiles}
have been moved from@yarnpkg/plugin-version
to@yarnpkg/plugin-git
. UsegitUtils.{fetchBase,fetchRoot,fetchChangedFiles}
instead.For consistency reasons:
Link{Resolver,Fetcher}
have been renamed toPortal{Resolver,Fetcher}
RawLink{Resolver,Fetcher}
have been renamed toLink{Resolver,Fetcher}
FakeFS
classes are now required to implementlutimes{Sync,Promise}
.workspace.dependencies
has been removed. Useworkspace.anchoredPackage.dependencies
instead.The
Installer
class must now returnBuildRequest
structures instead ofBuildDirective[]
. This lets you mark that the build must be skipped, and the reason why.startCacheReport
has been removed, and is now part of the output generated byfetchEverything
.forgettableNames
&forgettableBufferSize
have been removed (the only messages using them have been removed, making the forgettable logs implementation obsolete).workspace.locator
has been removed. You can instead use:workspace.anchoredLocator
to get the locator that's used throughout the dependency tree.workspace.manifest.version
to get the workspace version.configuration.{packageExtensions,refreshPackageExtensions}
have been removed. Useconfiguration.getPackageExtensions
instead.configuration.normalizePackage
now requires apackageExtensions
option.ProjectLookup
has been removed. BothConfiguration.find
andConfiguration.findProjectCwd
now always do a lockfile lookup.Installs
pnpm
linker avoids creating symlinks that lead to loops on the file system, by moving them higher up in the directory structure.pnpm
linker no longer reports duplicate "incompatible virtual" warnings.Features
enableOfflineMode
is a new setting that, when set, will instruct Yarn to only use the metadata and archives already stored on the local machine rather than download them from the registry. This can be useful when performing local development under network-constrained environments (trains, planes, ...).yarn run bin
now injects the environment variables defined in.env.yarn
when spawning a process. This can be configured using theinjectEnvironmentFiles
variable.yarn workspaces foreach
now automatically enables theyarn workspaces foreach ! --verbose
flag in interactive terminals.Bugfixes
yarn dlx
will no longer report false-positiveUNUSED_PACKAGE_EXTENSION
warningsyarn workspace
will now set$INIT_CWD
to the CLI working directory rather than the workspace root.Shell
Compatibility
FileHandle.readLines
.v4.0.0-rc.53
Compare Source
v4.0.0-rc.52
Compare Source
v4.0.0-rc.51
Compare Source
v4.0.0-rc.50
Compare Source
v4.0.0-rc.49
Compare Source
v4.0.0-rc.48
Compare Source
v4.0.0-rc.47
Compare Source
v4.0.0-rc.46
Compare Source
v4.0.0-rc.45
Compare Source
v4.0.0-rc.44
Compare Source
v4.0.0-rc.43
Compare Source
yarnpkg/berry (@yarnpkg/extensions)
v2.0.4
Compare Source
v2.0.3
Compare Source
v2.0.2
Compare Source
v2.0.1
Compare Source
v2.0.0
Compare Source
Remember that a migration guide is available to help you port your applications to Yarn 2.
Notable fixes
Using
yarn link
will now properly resolve peer dependencies based on the package that requires the linked package rather than the dependencies installed in the linked project folder.Packages will now only be built when one of their dependencies is changed in some way. Note that this includes both direct dependencies and transitive dependencies, which might trigger unintuitive rebuilds in some case (for example, since
node-sass
depends onlodash.assign
, upgradinglodash.assign
will trigger a rebuild). This will be improved in a later release by introducing a newruntime
field for thedependenciesMeta
object that will exclude the package from the build key computation (feel free to start setting this flag as of now, even if it won't have any effect until then).Registry hostnames finally aren't part of the lockfile anymore. It means that you can switch the registry at any time by changing the
npmRegistryServer
settings. One unfortunate limitation is that this doesn't apply to registries that use non-standard paths for their archives (ie/@​scope/name/-/name-version.tgz
). One such example is NPM Enterprise, which will see the full path being stored in the lockfile.The
--immutable
option (new name for--frozen-lockfile
) will now properly report when the lockfile would be changed because of entry removals (it would previously only reject new entries, not removals).Notable changes
We dropped support for Node 8, which has reached its end of life in December.
Accessing registries through http is now forbidden by default (Yarn will throw an exception and require to use https instead). This can be overruled on a per-hostname basis by using
unsafeHttpWhitelist
.The meaning of
devDependencies
is slightly altered. Until then dev dependencies were described as "dependencies we only use in development". Given that we now advocate for all your packages to be stored within the repository (in order to guarantee reproducible builds), this doesn't really make sense anymore. As a result, our description of dev dependencies is now "dependencies that aren't installed by the package consumers". It doesn't really change anything else than the name, but the more you know.Running
yarn link <package>
now has a semi-permanent effect in that<package>
will be added as a dependency of your active workspace (using the newportal:
protocol). Apart from that the workflow stays the same, meaning that runningyarn link
somewhere will add the local path to the local registry, andyarn link <package>
will add a dependency to the previously linked package.resolution
entry and runyarn install
again.The Yarn configuration has been revamped and will not read the
.npmrc
files anymore. This used to cause a lot of confusion as to where the configuration was coming from, so the logic is now very simple: Yarn will look in the current directory and all its ancestors for.yarnrc.yml
files..yarnrc.yml
and thus are expected to be valid YAML. The available settings are listed here.The lockfiles now generated should be compatible with Yaml, while staying compatible with old-style lockfiles. Old-style lockfiles will be automatically migrated, but that will require some round-trips to the registry to obtain more information that wasn't stored previously, so the first install will be slightly slower.
The cache files are now zip instead of tgz. This has an impact on cold install performances, because the currently available registries don't support it, which requires us to convert it on our side. Zero-Install is one way to offset this cost, and we're hoping that registries will consider offering zip as an option in the future.
Package manifests (
package.json
)To see a comprehensive documentation about each possible field, please check our documentation.
Two new fields are now supported in the
publishConfig
key of your manifests: themain
,bin
, andmodule
fields will be used to replace the value of their respective top-level counterparts in the manifest shipped along with the generated file.typings
andtypes
fields will also be replaced if you use the TypeScript plugin.Two new fields are now supported at the root of the manifest:
dependenciesMeta
andpeerDependenciesMeta
(peerDependenciesMeta
actually was supported in Yarn 1 as well, butdependenciesMeta
is a new addition). These fields are meant to store dependency settings unique to each package.Both of these new fields, and all settings the support, are entirely optional. Yarn will keep doing what you expect if they're not there - they're just a mechanism to expose more fine-grained settings.
Some of those settings can only be declared in the project top-level manifest and will be ignored anywhere else (for example
built
), while others will have a per-package effect (for exampleoptional
). As a rule of thumb,dependenciesMeta
settings are always project-wide (and thus are only taken into account in the top-level package.json) whilepeerDependenciesMeta
settings are package-specific.The
dependenciesMeta
field covers dependencies declared in either of thedependencies
anddevDependencies
fields.The
dependenciesMeta
field accepts two types of keys: either a generic package name (lodash
), or a specialized package version ([email protected]
). This later syntax only works for the top-level manifest and will thus be ignored when seen in a dependency / transitive dependency.The
dependenciesMeta[].comment
field is expected to be a string field. Even though it isn't actually used anywhere at the moment, we suggest you to write comments regarding the reason why some packages are used here rather than anywhere else. This might prove useful for plugin authors.The
dependenciesMeta[].built
field is a boolean flag; setting it tofalse
will cause the package manager to ignore this package when considering the list of packages that need to be built. If the project usesenable-scripts: false
, the warning that would have traditionally been emitted will be downgraded into a simple notice. This settings is project-wide.The
peerDependenciesMeta[].optional
field is a boolean flag; setting it totrue
will stop the package manager from emitting a warning when the specified peer dependency is missing (you typically want to use it if you provide optional integrations with specific third-party packages and don't want to pollute your users' installs with a bunch of irrelevant warnings). This settings is package-specific.The
resolutions
field no longer support the glob syntax within its patterns, as it was redundant with its own glob-less syntax and caused unnecessary confusion.Workspaces
Workspaces can now be referenced using the special
workspace:
protocol. This protocol accepts either a relative path to the workspace, or a semver range that will be compared against theversion
fields from candidate workspaces.Workspaces don't have to specify a version anymore. If referenced through the
workspace:
resolver, the engine will assume that they have the version0.0.0
(which makesworkspace:*
a good way to say "shut up and take my workspace").workspace:
protocol will see their referenced changed at pack-time if the target workspace defines a version. An error will be thrown otherwise and the package won't be packable.Workspaces can now contain sub-workspaces. This follow the same restriction than before, meaning that any workspace that wishes to expose sub-workspaces must be declared
private: true
.CLI
The npm-specific commands (such as
yarn login
oryarn publish
) have been moved into a specific namespace (yarn npm login
/yarn npm publish
). This doesn't affect theyarn pack
command which is considered generic enough for the top-level.Running
yarn <path> add ...
will run theadd
command into the location pointed by<path>
. This is true for any command. The only limitation is that<path>
must be either be.
,..
, or must contain a slash (in order to disambiguate with script and command names).Running
yarn add -P <package>
will use*
by default instead of resolving a new range for<package>
. This change only affects peer dependencies (-P
), and can be disabled by manually specifying the range (yarn add -P lodash@^4.0.0
).Running
yarn add <package> -i
will now make suggestions based on the dependencies from your other workspaces. This behavior can be made a default by settingpreferInteractive
totrue
in your settings.Running
yarn foo:bar
will run thefoo:bar
script regardless of what workspace declares it as long as only one workspace declares it. This change only affects scripts whose names contains at least one colon.Running
yarn remove -A <package>
will remove<package>
from all the dependency sets from all your workspaces, regardless of what your cwd is.Running
yarn set resolution <package> <resolution>
will force the resolver to use a specific resolution for the given package descriptor. Note that the descriptor passed as parameter must be exactly the same as the one you want to override. This command is a handy tool to manually optimize some ranges that could benefit from overlapping.Running
yarn up <package>
will upgrade<package>
in all of your workspaces at once (only if they already use the specified package - those that don't won't see it being added). Adding the-i
flag will also cause Yarn to ask you to confirm for each workspace.Running
yarn config --why
will tell you the source for each value in your configuration. We recommend using it when you're not sure to understand why Yarn would have a particular settings.Running
yarn pack
will no longer always include nested README, CHANGELOG, LICENSE or LICENCE files (note that those files will still be included if found at the root of the workspace being packed, as is usually the case). If you rely on this (somewhat unintended) behavior you can add those files manually to thefiles
field of yourpackage.json
.The
yarn upgrade-interactive
command has been moved into a plugin that needs to be installed throughyarn plugin import interactive-tools
. It's also been rewritten, and we'll keep improving over time.Miscellaneous
A new protocol is now supported,
portal:
. Portals are very much likelink:
in that they directly point to a location on the disk, but unlike links they also take into account the dependencies of the target location (whereas links don't care about these). To give you a better idea, portals are what you use when you want to target a package, whereas links are what you use when you want to target a non-package folder (for example yoursrc
directory, or similar).A new protocol is now supported,
patch:
. The patch protocol can be used to automatically apply changes to the sources of a package. It's very similar topatch-package
, but is directly integrated within Yarn (including its cache and checksum systems).v2.0.0-rc.35
Compare Source
v2.0.0-rc.34
Compare Source
v2.0.0-rc.33
Compare Source
v2.0.0-rc.32
Compare Source
v2.0.0-rc.31
Compare Source
v2.0.0-rc.30
Compare Source
v2.0.0-rc.29
Compare Source
v2.0.0-rc.28
Compare Source
v2.0.0-rc.27
Compare Source
v2.0.0-rc.26
Compare Source
v2.0.0-rc.25
Compare Source
v2.0.0-rc.24
Compare Source
v2.0.0-rc.23
Compare Source
yarnpkg/berry (@yarnpkg/fslib)
v3.1.1
Compare Source
v3.1.0
Compare Source
Commands
yarn workspaces list
andyarn workspaces foreach
commands now both support a new--since
option that lets you filter the workspace list by changes (only workspaces that changed since the specified commit will be iterated on). This feature is still a little experimental, especially when used with-R,--recursive
.yarn workspaces foreach
command now handles the fact that a script containing:
only becomes global if it exists in exactly one workspace.yarn workspaces foreach
command now supports--jobs 1
and--jobs unlimited
.yarn init -2
command will now add thepackageManager
field to your project manifest.Settings
pattern
matcher fromlogFilters
will now match any part of the log entry.Installs
nodeLinker: pnpm
mode will let you install packages using the pnpm install strategy, where packages are stored flat and referenced by each others through symlinks. This mode is still a little experimental, so please send our way bugs you might find.supportedArchitectures
field to manually enforce the presence of specific architectures.nmMode: hardlinks-global
setting will now be automatically downgraded tonmMode: hardlinks-local
when global caches and install folders are kept on different devices, thus letting the install continue normally. A warning will still be produced explaining this behaviour.node_modules
linker maximizes chances to end-up with only one top-level node_modules in the case of using workspacesnmSelfReferences
setting has been added to the nm linker to control whether workspaces are allowed to require themselves - results in creation of self-referencing symlinks.yarn workspaces focus
will not create self-referencing symlinks for excluded workspaces anymore.node_modules
installs.Miscellaneous Features
workspace:^
andworkspace:~
. When published, those markers will turn into the actual version (just like what used to happen withworkspace:*
), except that they'll be prefixed with the relevant semver prefix (respectively^
and~
).npmAuditRegistry
setting will let you define which registry to use when running audits. If unset, we'll fallback to the currently configured publish registry (we'll likely change this behavior in Yarn 4 to rather use the fetch registry).Bugfixes
node_modules
installs will now be given priority during hoisting, preventing cases when indirect regular dependencies would block the way for direct portal dependencies.pnpify
binary can now be used from inside directories containing spaces.--version
string.node-modules
linker.node-modules
linker, since they cannot be used from the code anyway.fs
module, allowing users to patch it.require.resolve('pnpapi')
will be handled correctly even when usingexports
.yarn run
immediately after adding or removing dependencies inside large monorepos.@types
version. This matches the behaviour for peer dependencies.Compatibility
pnpEnableEsmLoader
.resolve
will no longer resolve missing modules to a file with the same name that would happen to be located next to the issuer.v3.0.2
Compare Source
VirtualFS.mapToBase
to preserve.
characters (was converting them to empty strings).v3.0.1
Compare Source
readdir
withnull
as second parameter (instead ofundefined
).v3.0.0
Compare Source
Breaking Changes
yup
anymore (we migrated to Typanion as part of Clipanion v3).workspace-tools
, remove it from your.yarnrc.yml
, upgrade, then import it back.enableImmutableInstalls
will now default totrue
on CI (we still recommend to explicitly use--immutable
on the CLI).YARN_ENABLE_IMMUTABLE_INSTALLS=false
in your environment variables.initVersion
andinitLicense
configuration options have been removed.initFields
should be used instead..pnp.cjs
files (instead of.pnp.js
) when using PnP, regardless of what thetype
field inside the manifest is set to.$$virtual
into__virtual__
.-a
alias flag ofyarn workspaces foreach
got removed; use-A,--all
instead, which is strictly the same..vscode/pnpify
) won't be cleaned up anymore.--skip-builds
flag fromyarn install
got renamed into--mode=skip-build
.bstatePath
configuration option has been removed. The build state (.yarn/build-state.yml
) has been moved into the install state (.yarn/install-state.gz
)@yarnpkg/pnpify
has been refactored into 3 packages:@yarnpkg/sdks
now contains the Editor SDKs@yarnpkg/pnpify
now contains the PnPify CLI compatibility tool that creates in-memorynode_modules
@yarnpkg/nm
now contains thenode_modules
tree builder and hoister@yarnpkg/plugin-node-modules
has been renamed to@yarnpkg/plugin-nm
--clipanion=definitions
commands supported by our CLIs will now expose the definitions on the entry point (rather than on.command
)API
structUtils.requirableIdent
got removed; usestructUtils.stringifyIdent
instead, which is strictly the same.configuration.format
got removed; useformatUtils.pretty
instead, which is strictly the same, but type-safe.httpUtils.Options['json']
got removed; usehttpUtils.Options['jsonResponse']
instead, which is strictly the same.PackageExtension['description']
got removed, useformatUtils.json(packageExtension, formatUtils.Type.PACKAGE_EXTENSION)
instead, which is strictly the same.Project.generateBuildStateFile
has been removed, the build state is now inProject.storedBuildState
.Project.tryWorkspaceByDescriptor
andProject.getWorkspaceByDescriptor
now match on virtual descriptors.Installs
Workspaces now get self-references even when under the
node-modules
linker (just like how it already worked with thepnp
linker). This means that a workspace calledfoo
can now safely assume that calls torequire('foo/package.json')
will always work, removing the need for absolute aliases in the majority of cases.The node-modules linker now does its best to support the
portal:
protocol. This support comes with two important limitations:--preserve-symlinks
Node option if they wish to access their dependencies.portal:
must be hoisted outside of the portal. Failing that (for example if the portal package depends on something incompatible with the version hoisted via another package), the linker will produce an error and abandon the install.The node-modules linker can now utilize hardlinks. The new setting
nmMode: classic | hardlinks-local | hardlinks-global
specifies whichnode_modules
strategy should be used:classic
- standardnode_modules
layout, without hardlinkshardlinks-local
- standardnode_modules
layout with hardlinks inside the project onlyhardlinks-global
- standardnode_modules
layout with hardlinks pointing to global content storage across all the projects using this optionBugfixes
node-modules
linker will now ensure that the generated install layouts are terminal, by doing several rounds when needed.node-modules
linker will no longer print warnings about postinstall scripts when a workspace depends on another workspace listing install scripts.${ENV_VAR}
syntax.preinstall
,install
,postinstall
fail, the remaining scripts will be skipped.git:
protocol will now default to fetchingHEAD
(rather than the hardcodedmaster
).SIGTERM
signal will now be propagated to child processes.yarn config unset
will now correctly unset non-nested propertiesSettings
initFields
edge cases have been fixed.preferAggregateCacheInfo
flag will now also aggregate cleanup reports.enableMessageNames
flag can be set tofalse
to exclude theYNxxxx
from the output.Commands
yarn init
can now be run even from within existing projects (will create missing files).yarn init
andyarn set version
will set thepackageManager
field.yarn set version
now downloads binaries from the official Yarn website (rather than GitHub).yarn set version from sources
will now upgrade the builtin plugins as well unless--skip-plugins
is set.yarn version apply
now supports a new--prerelease
flag which replaces how prereleases were previously handled.yarn run
should be significantly faster to boot on large projects.yarn workspaces foreach --verbose
will now print when processes start and end, even if they don't have an output.yarn workspaces foreach
now supports a--from <glob>
flag, which when combined with-R
will target workspaces reachable from the 'from' glob.yarn patch-commit
can now be used as many times as you want on the same patch folder.yarn patch-commit
now supports a new-s,--save
flag which will save the patch instead of just printing it.yarn up
now supports a new-R,--recursive
flag which will upgrade the specified package, regardless where it is.yarn config unset
is a new command that will remove a setting from the local configuration (or home if-H
is set).yarn exec
got support for running shell scripts using Yarn's portable shell.yarn plugin import
can now install specific versions of the official plugins.yarn plugin import
will now download plugins compatible with the current CLI by default.yarn unlink
has been added which removes resolutions previously set byyarn link
.Builtin Shell
Compatibility
yarn install
inside a Yarn v1 project will now automatically enable thenode-modules
linker. This should solve most of the problems people have had in their migrations. We still recommend to keep the default PnP for new projects, but the choice is yours.bigint
, andfstat
.@yarnpkg/esbuild-plugin-pnp
. We use it to bundle Yarn itself!exports
field - regardless of the Node version.node:
protocol (new in Node 16)plugins
configuration property.Miscellaneous
v3.0.0-rc.53
Compare Source
v3.0.0-rc.52
Compare Source
v3.0.0-rc.51
Compare Source
v3.0.0-rc.50
Compare Source
v3.0.0-rc.49
Compare Source
v3.0.0-rc.48
Configuration
📅 Schedule: Branch creation - "on Friday,every weekend" (UTC), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.