@@ -142,7 +142,7 @@ <h1 id="packagejson">package.json</h1>
142142
143143<section id="table_of_contents">
144144<h2 id="table-of-contents">Table of contents</h2>
145- <div id="_table_of_contents"><ul><li><a href="#description">Description</a></li><li><a href="#name">name</a></li><li><a href="#version">version</a></li><li><a href="#description2">description</a></li><li><a href="#keywords">keywords</a></li><li><a href="#homepage">homepage</a></li><li><a href="#bugs">bugs</a></li><li><a href="#license">license</a></li><li><a href="#people-fields-author-contributors">people fields: author, contributors</a></li><li><a href="#funding">funding</a></li><li><a href="#files">files</a></li><li><a href="#main">main</a></li><li><a href="#browser">browser</a></li><li><a href="#bin">bin</a></li><li><a href="#man">man</a></li><li><a href="#directories">directories</a></li><ul><li><a href="#directoriesbin">directories.bin</a></li><li><a href="#directoriesman">directories.man</a></li></ul><li><a href="#repository">repository</a></li><li><a href="#scripts">scripts</a></li><li><a href="#config">config</a></li><li><a href="#dependencies">dependencies</a></li><ul><li><a href="#urls-as-dependencies">URLs as Dependencies</a></li><li><a href="#git-urls-as-dependencies">Git URLs as Dependencies</a></li><li><a href="#github-urls">GitHub URLs</a></li><li><a href="#local-paths">Local Paths</a></li></ul><li><a href="#devdependencies">devDependencies</a></li><li><a href="#peerdependencies">peerDependencies</a></li><li><a href="#peerdependenciesmeta">peerDependenciesMeta</a></li><li><a href="#bundleddependencies">bundledDependencies</a></li><li><a href="#optionaldependencies">optionalDependencies</a></li><li><a href="#engines">engines</a></li><li><a href="#os">os</a></li><li><a href="#cpu">cpu</a></li><li><a href="#private">private</a></li><li><a href="#publishconfig">publishConfig</a></li><li><a href="#workspaces">workspaces</a></li><li><a href="#default-values">DEFAULT VALUES</a></li><li><a href="#see-also">SEE ALSO</a></li></ul></div>
145+ <div id="_table_of_contents"><ul><li><a href="#description">Description</a></li><li><a href="#name">name</a></li><li><a href="#version">version</a></li><li><a href="#description2">description</a></li><li><a href="#keywords">keywords</a></li><li><a href="#homepage">homepage</a></li><li><a href="#bugs">bugs</a></li><li><a href="#license">license</a></li><li><a href="#people-fields-author-contributors">people fields: author, contributors</a></li><li><a href="#funding">funding</a></li><li><a href="#files">files</a></li><li><a href="#main">main</a></li><li><a href="#browser">browser</a></li><li><a href="#bin">bin</a></li><li><a href="#man">man</a></li><li><a href="#directories">directories</a></li><ul><li><a href="#directoriesbin">directories.bin</a></li><li><a href="#directoriesman">directories.man</a></li></ul><li><a href="#repository">repository</a></li><li><a href="#scripts">scripts</a></li><li><a href="#config">config</a></li><li><a href="#dependencies">dependencies</a></li><ul><li><a href="#urls-as-dependencies">URLs as Dependencies</a></li><li><a href="#git-urls-as-dependencies">Git URLs as Dependencies</a></li><li><a href="#github-urls">GitHub URLs</a></li><li><a href="#local-paths">Local Paths</a></li></ul><li><a href="#devdependencies">devDependencies</a></li><li><a href="#peerdependencies">peerDependencies</a></li><li><a href="#peerdependenciesmeta">peerDependenciesMeta</a></li><li><a href="#bundleddependencies">bundledDependencies</a></li><li><a href="#optionaldependencies">optionalDependencies</a></li><li><a href="#overrides">overrides</a></li><li><a href="#engines">engines</a></li><li><a href="#os">os</a></li><li><a href="#cpu">cpu</a></li><li><a href="#private">private</a></li><li><a href="#publishconfig">publishConfig</a></li><li><a href="#workspaces">workspaces</a></li><li><a href="#default-values">DEFAULT VALUES</a></li><li><a href="#see-also">SEE ALSO</a></li></ul></div>
146146</section>
147147
148148<div id="_content"><h3 id="description">Description</h3>
@@ -800,6 +800,88 @@ <h3 id="optionaldependencies">optionalDependencies</h3>
800800</code></pre>
801801<p>Entries in <code>optionalDependencies</code> will override entries of the same name in
802802<code>dependencies</code>, so it's usually best to only put in one place.</p>
803+ <h3 id="overrides">overrides</h3>
804+ <p>If you need to make specific changes to dependencies of your dependencies, for
805+ example replacing the version of a dependency with a known security issue,
806+ replacing an existing dependency with a fork, or making sure that the same
807+ version of a package is used everywhere, then you may add an override.</p>
808+ <p>Overrides provide a way to replace a package in your dependency tree with
809+ another version, or another package entirely. These changes can be scoped as
810+ specific or as vague as desired.</p>
811+ <p>To make sure the package <code>foo</code> is always installed as version <code>1.0.0</code> no matter
812+ what version your dependencies rely on:</p>
813+ <pre lang="json"><code>{
814+ "overrides": {
815+ "foo": "1.0.0"
816+ }
817+ }
818+ </code></pre>
819+ <p>The above is a short hand notation, the full object form can be used to allow
820+ overriding a package itself as well as a child of the package. This will cause
821+ <code>foo</code> to always be <code>1.0.0</code> while also making <code>bar</code> at any depth beyond <code>foo</code>
822+ also <code>1.0.0</code>:</p>
823+ <pre lang="json"><code>{
824+ "overrides": {
825+ "foo": {
826+ ".": "1.0.0",
827+ "bar": "1.0.0"
828+ }
829+ }
830+ }
831+ </code></pre>
832+ <p>To only override <code>foo</code> to be <code>1.0.0</code> when it's a child (or grandchild, or great
833+ grandchild, etc) of the package <code>bar</code>:</p>
834+ <pre lang="json"><code>{
835+ "overrides": {
836+ "bar": {
837+ "foo": "1.0.0"
838+ }
839+ }
840+ }
841+ </code></pre>
842+ <p>Keys can be nested to any arbitrary length. To override <code>foo</code> only when it's a
843+ child of <code>bar</code> and only when <code>bar</code> is a child of <code>baz</code>:</p>
844+ <pre lang="json"><code>{
845+ "overrides": {
846+ "baz": {
847+ "bar": {
848+ "foo": "1.0.0"
849+ }
850+ }
851+ }
852+ }
853+ </code></pre>
854+ <p>The key of an override can also include a version, or range of versions.
855+ To override <code>foo</code> to <code>1.0.0</code>, but only when it's a child of <code>bar@2.0.0</code>:</p>
856+ <pre lang="json"><code>{
857+ "overrides": {
858+ "bar@2.0.0": {
859+ "foo": "1.0.0"
860+ }
861+ }
862+ }
863+ </code></pre>
864+ <p>You may not set an override for a package that you directly depend on unless
865+ both the dependency and the override itself share the exact same spec. To make
866+ this limitation easier to deal with, overrides may also be defined as a
867+ reference to a spec for a direct dependency by prefixing the name of the
868+ package you wish the version to match with a <code>$</code>.</p>
869+ <pre lang="json"><code>{
870+ "dependencies": {
871+ "foo": "^1.0.0"
872+ },
873+ "overrides": {
874+ // BAD, will throw an EOVERRIDE error
875+ // "foo": "^2.0.0"
876+ // GOOD, specs match so override is allowed
877+ // "foo": "^1.0.0"
878+ // BEST, the override is defined as a reference to the dependency
879+ "foo": "$foo",
880+ // the referenced package does not need to match the overridden one
881+ "bar": "$foo"
882+ }
883+ }
884+ </code></pre>
803885<h3 id="engines">engines</h3>
804886<p>You can specify the version of node that your stuff works on:</p>
805887<pre lang="json"><code>{
0 commit comments