v9.0.0
9.0.0 (2022-10-19)
⚠️ BREAKING CHANGES
npmis now compatible with the following semver range for node:^14.17.0 || ^16.13.0 || >=18.0.0npmwill no longer attempt to modify ownership of files it creates- the presence of auth related settings that are not scoped to a specific registry found in a config file is no longer supported and will throw errors
login,adduser, andauth-typechanges- legacy auth types
sso,saml&legacyhave been consolidated into"legacy" auth-typedefaults to"web"loginandadduserare now separate commands that send different data to
the registry.auth-typeconfig valueswebandlegacyonly try
their respective methods, npm no longer tries them all and waits to see
which one doesn't fail.
- legacy auth types
npm packnow follows a strict order of operations when applying ignore rules. If afilesarray is present in thepackage.json, then rules in.gitignoreand.npmignorefiles from the root will be ignored.- links generated from git urls will now use
HEADinstead ofmasteras the default ref timingandloglevelchangestiminghas been removed as a value for--loglevel--timingwill show timing information regardless of
--loglevel, except when--silent
--timingfile changes:- When run with the
--timingflag,npmnow writes timing data to a
file alongside the debug log data, respecting thelogs-diroption and
falling back to<CACHE>/_logs/dir, instead of directly inside the
cache directory. - The timing file data is no longer newline delimited JSON, and instead
each run will create a uniquely named<ID>-timing.jsonfile, with the
<ID>portion being the same as the debug log. - Finally, the data inside the file now has three top level keys,
metadata,timers, andunfinishedTimersinstead of everything being
a top level key.
- When run with the
npmnow outputs some json errors on stdout. Previouslynpmwould output all json formatted errors on stderr, making it difficult to parse as the stderr stream usually has logs already written to it. In the future,npmwill differentiate between errors and crashes. Errors, such asE404andERESOLVE, will be handled and will continue to be output on stdout. In the case of a crash,npmwill log the error as usual but will not attempt to display it as json, even in--jsonmode. Moving a case from the category of an error to a crash will not be considered a breaking change. For more information see npm/rfcs#482.- deprecate boolean install flags in favor of
--install-strategy- deprecate
--global-style,--globalnow sets--install-strategy=shallow - deprecate
--legacy-bundling, now sets--install-strategy=nested
- deprecate
npm config setwill no longer accept deprecated or invalid config optionsinstall-linksconfig defaults to"true"node-versionconfig has been removednpm-versionconfig has been removednpm accesssubcommands have been renamednpm birthdayhas been removednpm set-scripthas been removednpm binhas been removed (usenpxornpm execto execute binaries)
Features
a09e19d#5696 introduce thenpm config fixcommand (@nlf)d2963c6explicitly validate config within the cli (@nlf)a5fec08rewrite: docs generation (@lukekarrys)9609e9e#5605 use v3 lockfiles by default (@fritzy)3ae796dimplement newnpm-packlistbehavior (@lukekarrys)e64d69a#5581 write eresolve error files to the logs directory (@lukekarrys)3445da0timings are now written alongside debug log files (@lukekarrys)66ed584#5551 defaultauth-typeto"web"(@wraithgar)6ee5b32query: displayqueryContextin results (@nlf)314311c#5550 separatelogin/adduser& remove unnecessary auth types (@wraithgar)9c32c6crewrite:npm access(@wraithgar)854521brewrite:libnpmaccess(@wraithgar)e95017a#5485 feat(workspaces): update supported node engines inpackage.json(@lukekarrys)de2d33fadd--install-strategy=hoisted|nested|shallow, deprecate--global-style,--legacy-bundling(#5709) (@fritzy)49bbb2f#5455 removenpm birthday(@wraithgar)926f0ad#5456 removenpm set-script(@wraithgar)2a8c2fc#5458 defaultinstall-linksto"true"(@wraithgar)2e92800#5459 removenpm bin(@wraithgar)457d388#5475 update supported node engines in package.json (@wraithgar)46d038f#5716 output json formatted errors onstdout(@lukekarrys)0a69db4#5719 refuse to set deprecated/invalid config (@wraithgar)6e4961fseparate configs for--timingand--loglevel(@lukekarrys)6a27a7b#5712 deprecatedkey,certconfig options and updated registry scoped auth docs (@fritzy)
Bug Fixes
c3d7549add tag to publish log message (@wraithgar)a35c784#5691 config: removenode-versionandnpm-version(@wraithgar)e4e8ae2libnpmpack: obeyforegroundScripts(@winterqt)07fabc9#5633npm linkshould override--install-links(@fritzy)02fcbb6#5634 ensureArboristconstructor gets passed around everywhere forpacote(@nlf)0d90a01#5480 audit: add a condition to allow third-party registries returning E400 (@juanheyns, Juan Heyns)41481f8#5475 attempt more graceful failure in older node versions (@wraithgar)fc82298#5295npm hook lsduplicates hook name prefixes (@gennadiygashev)3f1fcf0account for newnpm-package-argbehavior (@wraithgar)353b5bb#5710 removechownrandmkdirp-infer-owner(@nlf)
Documentation
285b39f#5324 add documentation for expanded:semverselector (@nlf)fd0eebeupdate registry docs header (@hughlilly)542efdbupdatefolderspage for modern npm (@shalvah)f37caad#5606 accurately describeinstall-linkseffect on relative paths (@lukekarrys)130bc9f#5626 remove circular reference (#5626) (@giovanniPepi)f0e7584#5601 update docs/logging for new--accessdefault (@wraithgar)2d756cb#5527 add instruction to query objects withnpm view(@moonith)8743366#5519 add hash to "tag" config link (@mrienstra, @lukekarrys)5645c51#5521 link mentions of config parameters (@mrienstra)19762b4#5529 modify misleading doc about bins (@Hafizur046)19762b4#5529 modify misleading doc about package.json:bin (@Hafizur046)8402fd8#5547 add:outdatedpseudo selector to docs (@nlf)
Dependencies
df77a1f #5707 Update Major Versions of Dependencies
Updated:
@npmcli/[email protected]@npmcli/[email protected]@npmcli/[email protected]@npmcli/[email protected]@npmcli/[email protected]@npmcli/[email protected]@npmcli/[email protected]@npmcli/[email protected]@npmcli/[email protected]@npmcli/[email protected]@npmcli/[email protected]@npmcli/[email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected]
Removed:
@npmcli/fs