feat(deps)!: Update dependency yarn to v4 (main) #424
Merged
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:
1.22.22
->4.1.1
Release Notes
yarnpkg/berry (yarn)
v4.1.1
v4.1.0
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.2
v4.0.1
v4.0.0
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 set version
will prefer usingpackageManager
rather thanyarnPath
when possible.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.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.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
.v3.8.1
v3.8.0
v3.7.0
v3.6.4
v3.6.3
v3.6.2
v3.6.1
v3.6.0
v3.5.1
v3.5.0
v3.4.1
yarn init
.v3.4.0
Node.js parity
--conditions
flag.--watch
flag on Node 18 (it previously only supported it on Node 19).Bugfixes
pnpapi
) can now be imported from ESM modules.ZipFS.prototype.getBufferAndClose
will not error on empty archives resulting from an unlink after write.YN0000
) fromyarn workspaces foreach
.Compatibility
v3.3.1
v3.3.0
Installs
hardlinks-global
node-modules
linker mode by 1.5xCompatibility
v3.2.4
Compatibility
v3.2.3
Bugfixes
Compatibility
v3.2.2
Compatibility
ftruncate
.fchmod
.throwIfNoEntry
.npm_package_json
environment variable is now set by Yarn.v3.2.1
Installs
node_modules
directory, whennode-modules
linker is activesupportedArchitectures
Bugfixes
v3.2.0
Various improvements have been made in the core to improve performance. Additionally:
Commands
yarn workspaces foreach run
command is now able to run binaries.yarn npm info
command now supports displaying information about a tagged version of a package (e.g.yarn npm info vue@next
).yarn explain
command has been added. It can be used to explain an error code, or list all available error codes.yarn explain YN0002
.yarn npm publish
command now accepts a new--otp
option, to set the One-Time Password from the CLI.yarn upgrade-interactive
now has improved paging:Installs
node_modules
is a symbolic link, and doesn't recreate it.cpu
andarch
fields, Yarn now support a newlibc
field which can be used in tandem withoptionalDependencies
to avoid downloading packages that have been linked against incompatible standard libraries (we currently support two values:glibc
andmusl
).node_modules/.store
andnode_modules
folders if they are empty.node_modules/@​yarnpkg
) if they are empty or after removing a scoped dependency..pnp.cjs
files with inlined data will now store the data in a JSON string literal instead of an object literal to improve startup performance.Compatibility
${FOO:+}
.read
andreadSync
using options.path
property on streams created bycreateReadStream()
and obtained from zip archives.ERR_REQUIRE_ESM
error when attempting to require an ES Module, matching the default Node.js behaviour.Bugfixes
@yarnpkg/pnpify
now escapes paths correctly.node
field inside thenpm_config_user_agent
Yarn sets will now include a leadingv
.platform
isn't set to Node.YARN_IGNORE_NODE
environment variable will now be parsed using the same mechanism as env variable configuration settings (i.e. both1
/0
andtrue
/false
will be accepted)ZipFS Extension
Miscellaneous Features
wrapNetworkRequest
hook now lets you wrap network requests (for example to log them).v3.1.1
v3.1.0
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
VirtualFS.mapToBase
to preserve.
characters (was converting them to empty strings).v3.0.1
readdir
withnull
as second parameter (instead ofundefined
).v3.0.0
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
v2.4.2
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), 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.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate. View repository job log here.