Removed the Requirement to Install Python and NodeJS (Now Bundled with Borealis)
This commit is contained in:
152
Dependencies/NodeJS/node_modules/npm/man/man5/folders.5
generated
vendored
Normal file
152
Dependencies/NodeJS/node_modules/npm/man/man5/folders.5
generated
vendored
Normal file
@ -0,0 +1,152 @@
|
||||
.TH "FOLDERS" "5" "December 2024" "NPM@10.9.2" ""
|
||||
.SH "NAME"
|
||||
\fBfolders\fR - Folder Structures Used by npm
|
||||
.SS "Description"
|
||||
.P
|
||||
npm puts various things on your computer. That's its job.
|
||||
.P
|
||||
This document will tell you what it puts where.
|
||||
.SS "tl;dr"
|
||||
.RS 0
|
||||
.IP \(bu 4
|
||||
Local install (default): puts stuff in \fB./node_modules\fR of the current package root.
|
||||
.IP \(bu 4
|
||||
Global install (with \fB-g\fR): puts stuff in /usr/local or wherever node is installed.
|
||||
.IP \(bu 4
|
||||
Install it \fBlocally\fR if you're going to \fBrequire()\fR it.
|
||||
.IP \(bu 4
|
||||
Install it \fBglobally\fR if you're going to run it on the command line.
|
||||
.IP \(bu 4
|
||||
If you need both, then install it in both places, or use \fBnpm link\fR.
|
||||
.RE 0
|
||||
|
||||
.SS "prefix Configuration"
|
||||
.P
|
||||
The \fB\fBprefix\fR config\fR \fI\(la/using-npm/config#prefix\(ra\fR defaults to the location where node is installed. On most systems, this is \fB/usr/local\fR. On Windows, it's \fB%AppData%\[rs]npm\fR. On Unix systems, it's one level up, since node is typically installed at \fB{prefix}/bin/node\fR rather than \fB{prefix}/node.exe\fR.
|
||||
.P
|
||||
When the \fBglobal\fR flag is set, npm installs things into this prefix. When it is not set, it uses the root of the current package, or the current working directory if not in a package already.
|
||||
.SS "Node Modules"
|
||||
.P
|
||||
Packages are dropped into the \fBnode_modules\fR folder under the \fBprefix\fR. When installing locally, this means that you can \fBrequire("packagename")\fR to load its main module, or \fBrequire("packagename/lib/path/to/sub/module")\fR to load other modules.
|
||||
.P
|
||||
Global installs on Unix systems go to \fB{prefix}/lib/node_modules\fR. Global installs on Windows go to \fB{prefix}/node_modules\fR (that is, no \fBlib\fR folder.)
|
||||
.P
|
||||
Scoped packages are installed the same way, except they are grouped together in a sub-folder of the relevant \fBnode_modules\fR folder with the name of that scope prefix by the @ symbol, e.g. \fBnpm install @myorg/package\fR would place the package in \fB{prefix}/node_modules/@myorg/package\fR. See npm help scope for more details.
|
||||
.P
|
||||
If you wish to \fBrequire()\fR a package, then install it locally.
|
||||
.SS "Executables"
|
||||
.P
|
||||
When in global mode, executables are linked into \fB{prefix}/bin\fR on Unix, or directly into \fB{prefix}\fR on Windows. Ensure that path is in your terminal's \fBPATH\fR environment to run them.
|
||||
.P
|
||||
When in local mode, executables are linked into \fB./node_modules/.bin\fR so that they can be made available to scripts run through npm. (For example, so that a test runner will be in the path when you run \fBnpm test\fR.)
|
||||
.SS "Man Pages"
|
||||
.P
|
||||
When in global mode, man pages are linked into \fB{prefix}/share/man\fR.
|
||||
.P
|
||||
When in local mode, man pages are not installed.
|
||||
.P
|
||||
Man pages are not installed on Windows systems.
|
||||
.SS "Cache"
|
||||
.P
|
||||
See npm help cache. Cache files are stored in \fB~/.npm\fR on Posix, or \fB%LocalAppData%/npm-cache\fR on Windows.
|
||||
.P
|
||||
This is controlled by the \fB\fBcache\fR config\fR \fI\(la/using-npm/config#cache\(ra\fR param.
|
||||
.SS "Temp Files"
|
||||
.P
|
||||
Temporary files are stored by default in the folder specified by the \fB\fBtmp\fR config\fR \fI\(la/using-npm/config#tmp\(ra\fR, which defaults to the TMPDIR, TMP, or TEMP environment variables, or \fB/tmp\fR on Unix and \fBc:\[rs]windows\[rs]temp\fR on Windows.
|
||||
.P
|
||||
Temp files are given a unique folder under this root for each run of the program, and are deleted upon successful exit.
|
||||
.SS "More Information"
|
||||
.P
|
||||
When installing locally, npm first tries to find an appropriate \fBprefix\fR folder. This is so that \fBnpm install foo@1.2.3\fR will install to the sensible root of your package, even if you happen to have \fBcd\fRed into some other folder.
|
||||
.P
|
||||
Starting at the $PWD, npm will walk up the folder tree checking for a folder that contains either a \fBpackage.json\fR file, or a \fBnode_modules\fR folder. If such a thing is found, then that is treated as the effective "current directory" for the purpose of running npm commands. (This behavior is inspired by and similar to git's .git-folder seeking logic when running git commands in a working dir.)
|
||||
.P
|
||||
If no package root is found, then the current folder is used.
|
||||
.P
|
||||
When you run \fBnpm install foo@1.2.3\fR, then the package is loaded into the cache, and then unpacked into \fB./node_modules/foo\fR. Then, any of foo's dependencies are similarly unpacked into \fB./node_modules/foo/node_modules/...\fR.
|
||||
.P
|
||||
Any bin files are symlinked to \fB./node_modules/.bin/\fR, so that they may be found by npm scripts when necessary.
|
||||
.SS "Global Installation"
|
||||
.P
|
||||
If the \fB\fBglobal\fR config\fR \fI\(la/using-npm/config#global\(ra\fR is set to true, then npm will install packages "globally".
|
||||
.P
|
||||
For global installation, packages are installed roughly the same way, but using the folders described above.
|
||||
.SS "Cycles, Conflicts, and Folder Parsimony"
|
||||
.P
|
||||
Cycles are handled using the property of node's module system that it walks up the directories looking for \fBnode_modules\fR folders. So, at every stage, if a package is already installed in an ancestor \fBnode_modules\fR folder, then it is not installed at the current location.
|
||||
.P
|
||||
Consider the case above, where \fBfoo -> bar -> baz\fR. Imagine if, in addition to that, baz depended on bar, so you'd have: \fBfoo -> bar -> baz -> bar -> baz ...\fR. However, since the folder structure is: \fBfoo/node_modules/bar/node_modules/baz\fR, there's no need to put another copy of bar into \fB.../baz/node_modules\fR, since when baz calls \fBrequire("bar")\fR, it will get the copy that is installed in \fBfoo/node_modules/bar\fR.
|
||||
.P
|
||||
This shortcut is only used if the exact same version would be installed in multiple nested \fBnode_modules\fR folders. It is still possible to have \fBa/node_modules/b/node_modules/a\fR if the two "a" packages are different versions. However, without repeating the exact same package multiple times, an infinite regress will always be prevented.
|
||||
.P
|
||||
Another optimization can be made by installing dependencies at the highest level possible, below the localized "target" folder (hoisting). Since version 3, npm hoists dependencies by default.
|
||||
.SS "Example"
|
||||
.P
|
||||
Consider this dependency graph:
|
||||
.P
|
||||
.RS 2
|
||||
.nf
|
||||
foo
|
||||
+-- blerg@1.2.5
|
||||
+-- bar@1.2.3
|
||||
| +-- blerg@1.x (latest=1.3.7)
|
||||
| +-- baz@2.x
|
||||
| | `-- quux@3.x
|
||||
| | `-- bar@1.2.3 (cycle)
|
||||
| `-- asdf@*
|
||||
`-- baz@1.2.3
|
||||
`-- quux@3.x
|
||||
`-- bar
|
||||
.fi
|
||||
.RE
|
||||
.P
|
||||
In this case, we might expect a folder structure like this (with all dependencies hoisted to the highest level possible):
|
||||
.P
|
||||
.RS 2
|
||||
.nf
|
||||
foo
|
||||
+-- node_modules
|
||||
+-- blerg (1.2.5) <---\[lB]A\[rB]
|
||||
+-- bar (1.2.3) <---\[lB]B\[rB]
|
||||
| +-- node_modules
|
||||
| +-- baz (2.0.2) <---\[lB]C\[rB]
|
||||
+-- asdf (2.3.4)
|
||||
+-- baz (1.2.3) <---\[lB]D\[rB]
|
||||
+-- quux (3.2.0) <---\[lB]E\[rB]
|
||||
.fi
|
||||
.RE
|
||||
.P
|
||||
Since foo depends directly on \fBbar@1.2.3\fR and \fBbaz@1.2.3\fR, those are installed in foo's \fBnode_modules\fR folder.
|
||||
.P
|
||||
Even though the latest copy of blerg is 1.3.7, foo has a specific dependency on version 1.2.5. So, that gets installed at \[lB]A\[rB]. Since the parent installation of blerg satisfies bar's dependency on \fBblerg@1.x\fR, it does not install another copy under \[lB]B\[rB].
|
||||
.P
|
||||
Bar \[lB]B\[rB] also has dependencies on baz and asdf. Because it depends on \fBbaz@2.x\fR, it cannot re-use the \fBbaz@1.2.3\fR installed in the parent \fBnode_modules\fR folder \[lB]D\[rB], and must install its own copy \[lB]C\[rB]. In order to minimize duplication, npm hoists dependencies to the top level by default, so asdf is installed under \[lB]A\[rB].
|
||||
.P
|
||||
Underneath bar, the \fBbaz -> quux -> bar\fR dependency creates a cycle. However, because bar is already in quux's ancestry \[lB]B\[rB], it does not unpack another copy of bar into that folder. Likewise, quux's \[lB]E\[rB] folder tree is empty, because its dependency on bar is satisfied by the parent folder copy installed at \[lB]B\[rB].
|
||||
.P
|
||||
For a graphical breakdown of what is installed where, use \fBnpm ls\fR.
|
||||
.SS "Publishing"
|
||||
.P
|
||||
Upon publishing, npm will look in the \fBnode_modules\fR folder. If any of the items there are not in the \fBbundleDependencies\fR array, then they will not be included in the package tarball.
|
||||
.P
|
||||
This allows a package maintainer to install all of their dependencies (and dev dependencies) locally, but only re-publish those items that cannot be found elsewhere. See \fB\fBpackage.json\fR\fR \fI\(la/configuring-npm/package-json\(ra\fR for more information.
|
||||
.SS "See also"
|
||||
.RS 0
|
||||
.IP \(bu 4
|
||||
\fBpackage.json\fR \fI\(la/configuring-npm/package-json\(ra\fR
|
||||
.IP \(bu 4
|
||||
npm help install
|
||||
.IP \(bu 4
|
||||
npm help pack
|
||||
.IP \(bu 4
|
||||
npm help cache
|
||||
.IP \(bu 4
|
||||
npm help config
|
||||
.IP \(bu 4
|
||||
npm help npmrc
|
||||
.IP \(bu 4
|
||||
npm help config
|
||||
.IP \(bu 4
|
||||
npm help publish
|
||||
.RE 0
|
57
Dependencies/NodeJS/node_modules/npm/man/man5/install.5
generated
vendored
Normal file
57
Dependencies/NodeJS/node_modules/npm/man/man5/install.5
generated
vendored
Normal file
@ -0,0 +1,57 @@
|
||||
.TH "INSTALL" "5" "December 2024" "NPM@10.9.2" ""
|
||||
.SH "NAME"
|
||||
\fBinstall\fR - Download and install node and npm
|
||||
.SS "Description"
|
||||
.P
|
||||
To publish and install packages to and from the public npm registry, you must install Node.js and the npm command line interface using either a Node version manager or a Node installer. \fBWe strongly recommend using a Node version manager to install Node.js and npm.\fR We do not recommend using a Node installer, since the Node installation process installs npm in a directory with local permissions and can cause permissions errors when you run npm packages globally.
|
||||
.SS "Overview"
|
||||
.RS 0
|
||||
.IP \(bu 4
|
||||
\fBChecking your version of npm and Node.js\fR \fI(Checking your version of npm and Node.js)\fR
|
||||
.IP \(bu 4
|
||||
\fBUsing a Node version manager to install Node.js and npm\fR \fI(Using a Node version manager to install Node.js and npm)\fR
|
||||
.IP \(bu 4
|
||||
\fBUsing a Node installer to install Node.js and npm\fR \fI(Using a Node installer to install Node.js and npm)\fR
|
||||
.RE 0
|
||||
|
||||
.SS "Checking your version of npm and Node.js"
|
||||
.P
|
||||
To see if you already have Node.js and npm installed and check the installed version, run the following commands:
|
||||
.P
|
||||
.RS 2
|
||||
.nf
|
||||
node -v
|
||||
npm -v
|
||||
.fi
|
||||
.RE
|
||||
.SS "Using a Node version manager to install Node.js and npm"
|
||||
.P
|
||||
Node version managers allow you to install and switch between multiple versions of Node.js and npm on your system so you can test your applications on multiple versions of npm to ensure they work for users on different versions. You can \fBsearch for them on GitHub\fR \fI\(lahttps://github.com/search?q=node+version+manager+archived%3Afalse&type=repositories&ref=advsearch\(ra\fR.
|
||||
.SS "Using a Node installer to install Node.js and npm"
|
||||
.P
|
||||
If you are unable to use a Node version manager, you can use a Node installer to install both Node.js and npm on your system.
|
||||
.RS 0
|
||||
.IP \(bu 4
|
||||
\fBNode.js installer\fR \fI\(lahttps://nodejs.org/en/download/\(ra\fR
|
||||
.IP \(bu 4
|
||||
\fBNodeSource installer\fR \fI\(lahttps://github.com/nodesource/distributions\(ra\fR. If you use Linux, we recommend that you use a NodeSource installer.
|
||||
.RE 0
|
||||
|
||||
.SS "OS X or Windows Node installers"
|
||||
.P
|
||||
If you're using OS X or Windows, use one of the installers from the \fBNode.js download page\fR \fI\(lahttps://nodejs.org/en/download/\(ra\fR. Be sure to install the version labeled \fBLTS\fR. Other versions have not yet been tested with npm.
|
||||
.SS "Linux or other operating systems Node installers"
|
||||
.P
|
||||
If you're using Linux or another operating system, use one of the following installers:
|
||||
.RS 0
|
||||
.IP \(bu 4
|
||||
\fBNodeSource installer\fR \fI\(lahttps://github.com/nodesource/distributions\(ra\fR (recommended)
|
||||
.IP \(bu 4
|
||||
One of the installers on the \fBNode.js download page\fR \fI\(lahttps://nodejs.org/en/download/\(ra\fR
|
||||
.RE 0
|
||||
|
||||
.P
|
||||
Or see \fBthis page\fR \fI\(lahttps://nodejs.org/en/download/package-manager/\(ra\fR to install npm for Linux in the way many Linux developers prefer.
|
||||
.SS "Less-common operating systems"
|
||||
.P
|
||||
For more information on installing Node.js on a variety of operating systems, see \fBthis page\fR \fI\(lahttps://nodejs.org/en/download/package-manager/\(ra\fR.
|
152
Dependencies/NodeJS/node_modules/npm/man/man5/npm-global.5
generated
vendored
Normal file
152
Dependencies/NodeJS/node_modules/npm/man/man5/npm-global.5
generated
vendored
Normal file
@ -0,0 +1,152 @@
|
||||
.TH "FOLDERS" "5" "December 2024" "NPM@10.9.2" ""
|
||||
.SH "NAME"
|
||||
\fBfolders\fR - Folder Structures Used by npm
|
||||
.SS "Description"
|
||||
.P
|
||||
npm puts various things on your computer. That's its job.
|
||||
.P
|
||||
This document will tell you what it puts where.
|
||||
.SS "tl;dr"
|
||||
.RS 0
|
||||
.IP \(bu 4
|
||||
Local install (default): puts stuff in \fB./node_modules\fR of the current package root.
|
||||
.IP \(bu 4
|
||||
Global install (with \fB-g\fR): puts stuff in /usr/local or wherever node is installed.
|
||||
.IP \(bu 4
|
||||
Install it \fBlocally\fR if you're going to \fBrequire()\fR it.
|
||||
.IP \(bu 4
|
||||
Install it \fBglobally\fR if you're going to run it on the command line.
|
||||
.IP \(bu 4
|
||||
If you need both, then install it in both places, or use \fBnpm link\fR.
|
||||
.RE 0
|
||||
|
||||
.SS "prefix Configuration"
|
||||
.P
|
||||
The \fB\fBprefix\fR config\fR \fI\(la/using-npm/config#prefix\(ra\fR defaults to the location where node is installed. On most systems, this is \fB/usr/local\fR. On Windows, it's \fB%AppData%\[rs]npm\fR. On Unix systems, it's one level up, since node is typically installed at \fB{prefix}/bin/node\fR rather than \fB{prefix}/node.exe\fR.
|
||||
.P
|
||||
When the \fBglobal\fR flag is set, npm installs things into this prefix. When it is not set, it uses the root of the current package, or the current working directory if not in a package already.
|
||||
.SS "Node Modules"
|
||||
.P
|
||||
Packages are dropped into the \fBnode_modules\fR folder under the \fBprefix\fR. When installing locally, this means that you can \fBrequire("packagename")\fR to load its main module, or \fBrequire("packagename/lib/path/to/sub/module")\fR to load other modules.
|
||||
.P
|
||||
Global installs on Unix systems go to \fB{prefix}/lib/node_modules\fR. Global installs on Windows go to \fB{prefix}/node_modules\fR (that is, no \fBlib\fR folder.)
|
||||
.P
|
||||
Scoped packages are installed the same way, except they are grouped together in a sub-folder of the relevant \fBnode_modules\fR folder with the name of that scope prefix by the @ symbol, e.g. \fBnpm install @myorg/package\fR would place the package in \fB{prefix}/node_modules/@myorg/package\fR. See npm help scope for more details.
|
||||
.P
|
||||
If you wish to \fBrequire()\fR a package, then install it locally.
|
||||
.SS "Executables"
|
||||
.P
|
||||
When in global mode, executables are linked into \fB{prefix}/bin\fR on Unix, or directly into \fB{prefix}\fR on Windows. Ensure that path is in your terminal's \fBPATH\fR environment to run them.
|
||||
.P
|
||||
When in local mode, executables are linked into \fB./node_modules/.bin\fR so that they can be made available to scripts run through npm. (For example, so that a test runner will be in the path when you run \fBnpm test\fR.)
|
||||
.SS "Man Pages"
|
||||
.P
|
||||
When in global mode, man pages are linked into \fB{prefix}/share/man\fR.
|
||||
.P
|
||||
When in local mode, man pages are not installed.
|
||||
.P
|
||||
Man pages are not installed on Windows systems.
|
||||
.SS "Cache"
|
||||
.P
|
||||
See npm help cache. Cache files are stored in \fB~/.npm\fR on Posix, or \fB%LocalAppData%/npm-cache\fR on Windows.
|
||||
.P
|
||||
This is controlled by the \fB\fBcache\fR config\fR \fI\(la/using-npm/config#cache\(ra\fR param.
|
||||
.SS "Temp Files"
|
||||
.P
|
||||
Temporary files are stored by default in the folder specified by the \fB\fBtmp\fR config\fR \fI\(la/using-npm/config#tmp\(ra\fR, which defaults to the TMPDIR, TMP, or TEMP environment variables, or \fB/tmp\fR on Unix and \fBc:\[rs]windows\[rs]temp\fR on Windows.
|
||||
.P
|
||||
Temp files are given a unique folder under this root for each run of the program, and are deleted upon successful exit.
|
||||
.SS "More Information"
|
||||
.P
|
||||
When installing locally, npm first tries to find an appropriate \fBprefix\fR folder. This is so that \fBnpm install foo@1.2.3\fR will install to the sensible root of your package, even if you happen to have \fBcd\fRed into some other folder.
|
||||
.P
|
||||
Starting at the $PWD, npm will walk up the folder tree checking for a folder that contains either a \fBpackage.json\fR file, or a \fBnode_modules\fR folder. If such a thing is found, then that is treated as the effective "current directory" for the purpose of running npm commands. (This behavior is inspired by and similar to git's .git-folder seeking logic when running git commands in a working dir.)
|
||||
.P
|
||||
If no package root is found, then the current folder is used.
|
||||
.P
|
||||
When you run \fBnpm install foo@1.2.3\fR, then the package is loaded into the cache, and then unpacked into \fB./node_modules/foo\fR. Then, any of foo's dependencies are similarly unpacked into \fB./node_modules/foo/node_modules/...\fR.
|
||||
.P
|
||||
Any bin files are symlinked to \fB./node_modules/.bin/\fR, so that they may be found by npm scripts when necessary.
|
||||
.SS "Global Installation"
|
||||
.P
|
||||
If the \fB\fBglobal\fR config\fR \fI\(la/using-npm/config#global\(ra\fR is set to true, then npm will install packages "globally".
|
||||
.P
|
||||
For global installation, packages are installed roughly the same way, but using the folders described above.
|
||||
.SS "Cycles, Conflicts, and Folder Parsimony"
|
||||
.P
|
||||
Cycles are handled using the property of node's module system that it walks up the directories looking for \fBnode_modules\fR folders. So, at every stage, if a package is already installed in an ancestor \fBnode_modules\fR folder, then it is not installed at the current location.
|
||||
.P
|
||||
Consider the case above, where \fBfoo -> bar -> baz\fR. Imagine if, in addition to that, baz depended on bar, so you'd have: \fBfoo -> bar -> baz -> bar -> baz ...\fR. However, since the folder structure is: \fBfoo/node_modules/bar/node_modules/baz\fR, there's no need to put another copy of bar into \fB.../baz/node_modules\fR, since when baz calls \fBrequire("bar")\fR, it will get the copy that is installed in \fBfoo/node_modules/bar\fR.
|
||||
.P
|
||||
This shortcut is only used if the exact same version would be installed in multiple nested \fBnode_modules\fR folders. It is still possible to have \fBa/node_modules/b/node_modules/a\fR if the two "a" packages are different versions. However, without repeating the exact same package multiple times, an infinite regress will always be prevented.
|
||||
.P
|
||||
Another optimization can be made by installing dependencies at the highest level possible, below the localized "target" folder (hoisting). Since version 3, npm hoists dependencies by default.
|
||||
.SS "Example"
|
||||
.P
|
||||
Consider this dependency graph:
|
||||
.P
|
||||
.RS 2
|
||||
.nf
|
||||
foo
|
||||
+-- blerg@1.2.5
|
||||
+-- bar@1.2.3
|
||||
| +-- blerg@1.x (latest=1.3.7)
|
||||
| +-- baz@2.x
|
||||
| | `-- quux@3.x
|
||||
| | `-- bar@1.2.3 (cycle)
|
||||
| `-- asdf@*
|
||||
`-- baz@1.2.3
|
||||
`-- quux@3.x
|
||||
`-- bar
|
||||
.fi
|
||||
.RE
|
||||
.P
|
||||
In this case, we might expect a folder structure like this (with all dependencies hoisted to the highest level possible):
|
||||
.P
|
||||
.RS 2
|
||||
.nf
|
||||
foo
|
||||
+-- node_modules
|
||||
+-- blerg (1.2.5) <---\[lB]A\[rB]
|
||||
+-- bar (1.2.3) <---\[lB]B\[rB]
|
||||
| +-- node_modules
|
||||
| +-- baz (2.0.2) <---\[lB]C\[rB]
|
||||
+-- asdf (2.3.4)
|
||||
+-- baz (1.2.3) <---\[lB]D\[rB]
|
||||
+-- quux (3.2.0) <---\[lB]E\[rB]
|
||||
.fi
|
||||
.RE
|
||||
.P
|
||||
Since foo depends directly on \fBbar@1.2.3\fR and \fBbaz@1.2.3\fR, those are installed in foo's \fBnode_modules\fR folder.
|
||||
.P
|
||||
Even though the latest copy of blerg is 1.3.7, foo has a specific dependency on version 1.2.5. So, that gets installed at \[lB]A\[rB]. Since the parent installation of blerg satisfies bar's dependency on \fBblerg@1.x\fR, it does not install another copy under \[lB]B\[rB].
|
||||
.P
|
||||
Bar \[lB]B\[rB] also has dependencies on baz and asdf. Because it depends on \fBbaz@2.x\fR, it cannot re-use the \fBbaz@1.2.3\fR installed in the parent \fBnode_modules\fR folder \[lB]D\[rB], and must install its own copy \[lB]C\[rB]. In order to minimize duplication, npm hoists dependencies to the top level by default, so asdf is installed under \[lB]A\[rB].
|
||||
.P
|
||||
Underneath bar, the \fBbaz -> quux -> bar\fR dependency creates a cycle. However, because bar is already in quux's ancestry \[lB]B\[rB], it does not unpack another copy of bar into that folder. Likewise, quux's \[lB]E\[rB] folder tree is empty, because its dependency on bar is satisfied by the parent folder copy installed at \[lB]B\[rB].
|
||||
.P
|
||||
For a graphical breakdown of what is installed where, use \fBnpm ls\fR.
|
||||
.SS "Publishing"
|
||||
.P
|
||||
Upon publishing, npm will look in the \fBnode_modules\fR folder. If any of the items there are not in the \fBbundleDependencies\fR array, then they will not be included in the package tarball.
|
||||
.P
|
||||
This allows a package maintainer to install all of their dependencies (and dev dependencies) locally, but only re-publish those items that cannot be found elsewhere. See \fB\fBpackage.json\fR\fR \fI\(la/configuring-npm/package-json\(ra\fR for more information.
|
||||
.SS "See also"
|
||||
.RS 0
|
||||
.IP \(bu 4
|
||||
\fBpackage.json\fR \fI\(la/configuring-npm/package-json\(ra\fR
|
||||
.IP \(bu 4
|
||||
npm help install
|
||||
.IP \(bu 4
|
||||
npm help pack
|
||||
.IP \(bu 4
|
||||
npm help cache
|
||||
.IP \(bu 4
|
||||
npm help config
|
||||
.IP \(bu 4
|
||||
npm help npmrc
|
||||
.IP \(bu 4
|
||||
npm help config
|
||||
.IP \(bu 4
|
||||
npm help publish
|
||||
.RE 0
|
1144
Dependencies/NodeJS/node_modules/npm/man/man5/npm-json.5
generated
vendored
Normal file
1144
Dependencies/NodeJS/node_modules/npm/man/man5/npm-json.5
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
23
Dependencies/NodeJS/node_modules/npm/man/man5/npm-shrinkwrap-json.5
generated
vendored
Normal file
23
Dependencies/NodeJS/node_modules/npm/man/man5/npm-shrinkwrap-json.5
generated
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
.TH "NPM-SHRINKWRAP.JSON" "5" "December 2024" "NPM@10.9.2" ""
|
||||
.SH "NAME"
|
||||
\fBnpm-shrinkwrap.json\fR - A publishable lockfile
|
||||
.SS "Description"
|
||||
.P
|
||||
\fBnpm-shrinkwrap.json\fR is a file created by npm help shrinkwrap. It is identical to \fBpackage-lock.json\fR, with one major caveat: Unlike \fBpackage-lock.json\fR, \fBnpm-shrinkwrap.json\fR may be included when publishing a package.
|
||||
.P
|
||||
The recommended use-case for \fBnpm-shrinkwrap.json\fR is applications deployed through the publishing process on the registry: for example, daemons and command-line tools intended as global installs or \fBdevDependencies\fR. It's strongly discouraged for library authors to publish this file, since that would prevent end users from having control over transitive dependency updates.
|
||||
.P
|
||||
If both \fBpackage-lock.json\fR and \fBnpm-shrinkwrap.json\fR are present in a package root, \fBnpm-shrinkwrap.json\fR will be preferred over the \fBpackage-lock.json\fR file.
|
||||
.P
|
||||
For full details and description of the \fBnpm-shrinkwrap.json\fR file format, refer to the manual page for \fBpackage-lock.json\fR \fI\(la/configuring-npm/package-lock-json\(ra\fR.
|
||||
.SS "See also"
|
||||
.RS 0
|
||||
.IP \(bu 4
|
||||
npm help shrinkwrap
|
||||
.IP \(bu 4
|
||||
\fBpackage-lock.json\fR \fI\(la/configuring-npm/package-lock-json\(ra\fR
|
||||
.IP \(bu 4
|
||||
\fBpackage.json\fR \fI\(la/configuring-npm/package-json\(ra\fR
|
||||
.IP \(bu 4
|
||||
npm help install
|
||||
.RE 0
|
132
Dependencies/NodeJS/node_modules/npm/man/man5/npmrc.5
generated
vendored
Normal file
132
Dependencies/NodeJS/node_modules/npm/man/man5/npmrc.5
generated
vendored
Normal file
@ -0,0 +1,132 @@
|
||||
.TH "NPMRC" "5" "December 2024" "NPM@10.9.2" ""
|
||||
.SH "NAME"
|
||||
\fBnpmrc\fR - The npm config files
|
||||
.SS "Description"
|
||||
.P
|
||||
npm gets its config settings from the command line, environment variables, and \fBnpmrc\fR files.
|
||||
.P
|
||||
The \fBnpm config\fR command can be used to update and edit the contents of the user and global npmrc files.
|
||||
.P
|
||||
For a list of available configuration options, see npm help config.
|
||||
.SS "Files"
|
||||
.P
|
||||
The four relevant files are:
|
||||
.RS 0
|
||||
.IP \(bu 4
|
||||
per-project config file (\fB/path/to/my/project/.npmrc\fR)
|
||||
.IP \(bu 4
|
||||
per-user config file (\fB~/.npmrc\fR)
|
||||
.IP \(bu 4
|
||||
global config file (\fB$PREFIX/etc/npmrc\fR)
|
||||
.IP \(bu 4
|
||||
npm builtin config file (\fB/path/to/npm/npmrc\fR)
|
||||
.RE 0
|
||||
|
||||
.P
|
||||
All npm config files are an ini-formatted list of \fBkey = value\fR parameters. Environment variables can be replaced using \fB${VARIABLE_NAME}\fR. For example:
|
||||
.P
|
||||
.RS 2
|
||||
.nf
|
||||
cache = ${HOME}/.npm-packages
|
||||
.fi
|
||||
.RE
|
||||
.P
|
||||
Each of these files is loaded, and config options are resolved in priority order. For example, a setting in the userconfig file would override the setting in the globalconfig file.
|
||||
.P
|
||||
Array values are specified by adding "\[lB]\[rB]" after the key name. For example:
|
||||
.P
|
||||
.RS 2
|
||||
.nf
|
||||
key\[lB]\[rB] = "first value"
|
||||
key\[lB]\[rB] = "second value"
|
||||
.fi
|
||||
.RE
|
||||
.SS "Comments"
|
||||
.P
|
||||
Lines in \fB.npmrc\fR files are interpreted as comments when they begin with a \fB;\fR or \fB#\fR character. \fB.npmrc\fR files are parsed by \fBnpm/ini\fR \fI\(lahttps://github.com/npm/ini\(ra\fR, which specifies this comment syntax.
|
||||
.P
|
||||
For example:
|
||||
.P
|
||||
.RS 2
|
||||
.nf
|
||||
# last modified: 01 Jan 2016
|
||||
; Set a new registry for a scoped package
|
||||
@myscope:registry=https://mycustomregistry.example.org
|
||||
.fi
|
||||
.RE
|
||||
.SS "Per-project config file"
|
||||
.P
|
||||
When working locally in a project, a \fB.npmrc\fR file in the root of the project (ie, a sibling of \fBnode_modules\fR and \fBpackage.json\fR) will set config values specific to this project.
|
||||
.P
|
||||
Note that this only applies to the root of the project that you're running npm in. It has no effect when your module is published. For example, you can't publish a module that forces itself to install globally, or in a different location.
|
||||
.P
|
||||
Additionally, this file is not read in global mode, such as when running \fBnpm install -g\fR.
|
||||
.SS "Per-user config file"
|
||||
.P
|
||||
\fB$HOME/.npmrc\fR (or the \fBuserconfig\fR param, if set in the environment or on the command line)
|
||||
.SS "Global config file"
|
||||
.P
|
||||
\fB$PREFIX/etc/npmrc\fR (or the \fBglobalconfig\fR param, if set above): This file is an ini-file formatted list of \fBkey = value\fR parameters. Environment variables can be replaced as above.
|
||||
.SS "Built-in config file"
|
||||
.P
|
||||
\fBpath/to/npm/itself/npmrc\fR
|
||||
.P
|
||||
This is an unchangeable "builtin" configuration file that npm keeps consistent across updates. Set fields in here using the \fB./configure\fR script that comes with npm. This is primarily for distribution maintainers to override default configs in a standard and consistent manner.
|
||||
.SS "Auth related configuration"
|
||||
.P
|
||||
The settings \fB_auth\fR, \fB_authToken\fR, \fBusername\fR and \fB_password\fR must all be scoped to a specific registry. This ensures that \fBnpm\fR will never send credentials to the wrong host.
|
||||
.P
|
||||
The full list is:
|
||||
.RS 0
|
||||
.IP \(bu 4
|
||||
\fB_auth\fR (base64 authentication string)
|
||||
.IP \(bu 4
|
||||
\fB_authToken\fR (authentication token)
|
||||
.IP \(bu 4
|
||||
\fBusername\fR
|
||||
.IP \(bu 4
|
||||
\fB_password\fR
|
||||
.IP \(bu 4
|
||||
\fBemail\fR
|
||||
.IP \(bu 4
|
||||
\fBcertfile\fR (path to certificate file)
|
||||
.IP \(bu 4
|
||||
\fBkeyfile\fR (path to key file)
|
||||
.RE 0
|
||||
|
||||
.P
|
||||
In order to scope these values, they must be prefixed by a URI fragment. If the credential is meant for any request to a registry on a single host, the scope may look like \fB//registry.npmjs.org/:\fR. If it must be scoped to a specific path on the host that path may also be provided, such as \fB//my-custom-registry.org/unique/path:\fR.
|
||||
.P
|
||||
.RS 2
|
||||
.nf
|
||||
; bad config
|
||||
_authToken=MYTOKEN
|
||||
|
||||
; good config
|
||||
@myorg:registry=https://somewhere-else.com/myorg
|
||||
@another:registry=https://somewhere-else.com/another
|
||||
//registry.npmjs.org/:_authToken=MYTOKEN
|
||||
|
||||
; would apply to both @myorg and @another
|
||||
//somewhere-else.com/:_authToken=MYTOKEN
|
||||
|
||||
; would apply only to @myorg
|
||||
//somewhere-else.com/myorg/:_authToken=MYTOKEN1
|
||||
|
||||
; would apply only to @another
|
||||
//somewhere-else.com/another/:_authToken=MYTOKEN2
|
||||
.fi
|
||||
.RE
|
||||
.SS "See also"
|
||||
.RS 0
|
||||
.IP \(bu 4
|
||||
npm help folders
|
||||
.IP \(bu 4
|
||||
npm help config
|
||||
.IP \(bu 4
|
||||
npm help config
|
||||
.IP \(bu 4
|
||||
\fBpackage.json\fR \fI\(la/configuring-npm/package-json\(ra\fR
|
||||
.IP \(bu 4
|
||||
npm help npm
|
||||
.RE 0
|
1144
Dependencies/NodeJS/node_modules/npm/man/man5/package-json.5
generated
vendored
Normal file
1144
Dependencies/NodeJS/node_modules/npm/man/man5/package-json.5
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
158
Dependencies/NodeJS/node_modules/npm/man/man5/package-lock-json.5
generated
vendored
Normal file
158
Dependencies/NodeJS/node_modules/npm/man/man5/package-lock-json.5
generated
vendored
Normal file
@ -0,0 +1,158 @@
|
||||
.TH "PACKAGE-LOCK.JSON" "5" "December 2024" "NPM@10.9.2" ""
|
||||
.SH "NAME"
|
||||
\fBpackage-lock.json\fR - A manifestation of the manifest
|
||||
.SS "Description"
|
||||
.P
|
||||
\fBpackage-lock.json\fR is automatically generated for any operations where npm modifies either the \fBnode_modules\fR tree, or \fBpackage.json\fR. It describes the exact tree that was generated, such that subsequent installs are able to generate identical trees, regardless of intermediate dependency updates.
|
||||
.P
|
||||
This file is intended to be committed into source repositories, and serves various purposes:
|
||||
.RS 0
|
||||
.IP \(bu 4
|
||||
Describe a single representation of a dependency tree such that teammates, deployments, and continuous integration are guaranteed to install exactly the same dependencies.
|
||||
.IP \(bu 4
|
||||
Provide a facility for users to "time-travel" to previous states of \fBnode_modules\fR without having to commit the directory itself.
|
||||
.IP \(bu 4
|
||||
Facilitate greater visibility of tree changes through readable source control diffs.
|
||||
.IP \(bu 4
|
||||
Optimize the installation process by allowing npm to skip repeated metadata resolutions for previously-installed packages.
|
||||
.IP \(bu 4
|
||||
As of npm v7, lockfiles include enough information to gain a complete picture of the package tree, reducing the need to read \fBpackage.json\fR files, and allowing for significant performance improvements.
|
||||
.RE 0
|
||||
|
||||
.P
|
||||
When \fBnpm\fR creates or updates \fBpackage-lock.json\fR, it will infer line endings and indentation from \fBpackage.json\fR so that the formatting of both files matches.
|
||||
.SS "\fBpackage-lock.json\fR vs \fBnpm-shrinkwrap.json\fR"
|
||||
.P
|
||||
Both of these files have the same format, and perform similar functions in the root of a project.
|
||||
.P
|
||||
The difference is that \fBpackage-lock.json\fR cannot be published, and it will be ignored if found in any place other than the root project.
|
||||
.P
|
||||
In contrast, \fBnpm-shrinkwrap.json\fR \fI\(la/configuring-npm/npm-shrinkwrap-json\(ra\fR allows publication, and defines the dependency tree from the point encountered. This is not recommended unless deploying a CLI tool or otherwise using the publication process for producing production packages.
|
||||
.P
|
||||
If both \fBpackage-lock.json\fR and \fBnpm-shrinkwrap.json\fR are present in the root of a project, \fBnpm-shrinkwrap.json\fR will take precedence and \fBpackage-lock.json\fR will be ignored.
|
||||
.SS "Hidden Lockfiles"
|
||||
.P
|
||||
In order to avoid processing the \fBnode_modules\fR folder repeatedly, npm as of v7 uses a "hidden" lockfile present in \fBnode_modules/.package-lock.json\fR. This contains information about the tree, and is used in lieu of reading the entire \fBnode_modules\fR hierarchy provided that the following conditions are met:
|
||||
.RS 0
|
||||
.IP \(bu 4
|
||||
All package folders it references exist in the \fBnode_modules\fR hierarchy.
|
||||
.IP \(bu 4
|
||||
No package folders exist in the \fBnode_modules\fR hierarchy that are not listed in the lockfile.
|
||||
.IP \(bu 4
|
||||
The modified time of the file is at least as recent as all of the package folders it references.
|
||||
.RE 0
|
||||
|
||||
.P
|
||||
That is, the hidden lockfile will only be relevant if it was created as part of the most recent update to the package tree. If another CLI mutates the tree in any way, this will be detected, and the hidden lockfile will be ignored.
|
||||
.P
|
||||
Note that it \fIis\fR possible to manually change the \fIcontents\fR of a package in such a way that the modified time of the package folder is unaffected. For example, if you add a file to \fBnode_modules/foo/lib/bar.js\fR, then the modified time on \fBnode_modules/foo\fR will not reflect this change. If you are manually editing files in \fBnode_modules\fR, it is generally best to delete the file at \fBnode_modules/.package-lock.json\fR.
|
||||
.P
|
||||
As the hidden lockfile is ignored by older npm versions, it does not contain the backwards compatibility affordances present in "normal" lockfiles. That is, it is \fBlockfileVersion: 3\fR, rather than \fBlockfileVersion: 2\fR.
|
||||
.SS "Handling Old Lockfiles"
|
||||
.P
|
||||
When npm detects a lockfile from npm v6 or before during the package installation process, it is automatically updated to fetch missing information from either the \fBnode_modules\fR tree or (in the case of empty \fBnode_modules\fR trees or very old lockfile formats) the npm registry.
|
||||
.SS "File Format"
|
||||
.SS "\fBname\fR"
|
||||
.P
|
||||
The name of the package this is a package-lock for. This will match what's in \fBpackage.json\fR.
|
||||
.SS "\fBversion\fR"
|
||||
.P
|
||||
The version of the package this is a package-lock for. This will match what's in \fBpackage.json\fR.
|
||||
.SS "\fBlockfileVersion\fR"
|
||||
.P
|
||||
An integer version, starting at \fB1\fR with the version number of this document whose semantics were used when generating this \fBpackage-lock.json\fR.
|
||||
.P
|
||||
Note that the file format changed significantly in npm v7 to track information that would have otherwise required looking in \fBnode_modules\fR or the npm registry. Lockfiles generated by npm v7 will contain \fBlockfileVersion: 2\fR.
|
||||
.RS 0
|
||||
.IP \(bu 4
|
||||
No version provided: an "ancient" shrinkwrap file from a version of npm prior to npm v5.
|
||||
.IP \(bu 4
|
||||
\fB1\fR: The lockfile version used by npm v5 and v6.
|
||||
.IP \(bu 4
|
||||
\fB2\fR: The lockfile version used by npm v7 and v8. Backwards compatible to v1 lockfiles.
|
||||
.IP \(bu 4
|
||||
\fB3\fR: The lockfile version used by npm v9 and above. Backwards compatible to npm v7.
|
||||
.RE 0
|
||||
|
||||
.P
|
||||
npm will always attempt to get whatever data it can out of a lockfile, even if it is not a version that it was designed to support.
|
||||
.SS "\fBpackages\fR"
|
||||
.P
|
||||
This is an object that maps package locations to an object containing the information about that package.
|
||||
.P
|
||||
The root project is typically listed with a key of \fB""\fR, and all other packages are listed with their relative paths from the root project folder.
|
||||
.P
|
||||
Package descriptors have the following fields:
|
||||
.RS 0
|
||||
.IP \(bu 4
|
||||
version: The version found in \fBpackage.json\fR
|
||||
.IP \(bu 4
|
||||
resolved: The place where the package was actually resolved from. In the case of packages fetched from the registry, this will be a url to a tarball. In the case of git dependencies, this will be the full git url with commit sha. In the case of link dependencies, this will be the location of the link target. \fBregistry.npmjs.org\fR is a magic value meaning "the currently configured registry".
|
||||
.IP \(bu 4
|
||||
integrity: A \fBsha512\fR or \fBsha1\fR \fBStandard Subresource Integrity\fR \fI\(lahttps://w3c.github.io/webappsec/specs/subresourceintegrity/\(ra\fR string for the artifact that was unpacked in this location.
|
||||
.IP \(bu 4
|
||||
link: A flag to indicate that this is a symbolic link. If this is present, no other fields are specified, since the link target will also be included in the lockfile.
|
||||
.IP \(bu 4
|
||||
dev, optional, devOptional: If the package is strictly part of the \fBdevDependencies\fR tree, then \fBdev\fR will be true. If it is strictly part of the \fBoptionalDependencies\fR tree, then \fBoptional\fR will be set. If it is both a \fBdev\fR dependency \fIand\fR an \fBoptional\fR dependency of a non-dev dependency, then \fBdevOptional\fR will be set. (An \fBoptional\fR dependency of a \fBdev\fR dependency will have both \fBdev\fR and \fBoptional\fR set.)
|
||||
.IP \(bu 4
|
||||
inBundle: A flag to indicate that the package is a bundled dependency.
|
||||
.IP \(bu 4
|
||||
hasInstallScript: A flag to indicate that the package has a \fBpreinstall\fR, \fBinstall\fR, or \fBpostinstall\fR script.
|
||||
.IP \(bu 4
|
||||
hasShrinkwrap: A flag to indicate that the package has an \fBnpm-shrinkwrap.json\fR file.
|
||||
.IP \(bu 4
|
||||
bin, license, engines, dependencies, optionalDependencies: fields from \fBpackage.json\fR
|
||||
.RE 0
|
||||
|
||||
.SS "dependencies"
|
||||
.P
|
||||
Legacy data for supporting versions of npm that use \fBlockfileVersion: 1\fR. This is a mapping of package names to dependency objects. Because the object structure is strictly hierarchical, symbolic link dependencies are somewhat challenging to represent in some cases.
|
||||
.P
|
||||
npm v7 ignores this section entirely if a \fBpackages\fR section is present, but does keep it up to date in order to support switching between npm v6 and npm v7.
|
||||
.P
|
||||
Dependency objects have the following fields:
|
||||
.RS 0
|
||||
.IP \(bu 4
|
||||
version: a specifier that varies depending on the nature of the package, and is usable in fetching a new copy of it.
|
||||
.RS 4
|
||||
.IP \(bu 4
|
||||
bundled dependencies: Regardless of source, this is a version number that is purely for informational purposes.
|
||||
.IP \(bu 4
|
||||
registry sources: This is a version number. (eg, \fB1.2.3\fR)
|
||||
.IP \(bu 4
|
||||
git sources: This is a git specifier with resolved committish. (eg, \fBgit+https://example.com/foo/bar#115311855adb0789a0466714ed48a1499ffea97e\fR)
|
||||
.IP \(bu 4
|
||||
http tarball sources: This is the URL of the tarball. (eg, \fBhttps://example.com/example-1.3.0.tgz\fR)
|
||||
.IP \(bu 4
|
||||
local tarball sources: This is the file URL of the tarball. (eg \fBfile:///opt/storage/example-1.3.0.tgz\fR)
|
||||
.IP \(bu 4
|
||||
local link sources: This is the file URL of the link. (eg \fBfile:libs/our-module\fR)
|
||||
.RE 0
|
||||
|
||||
.IP \(bu 4
|
||||
integrity: A \fBsha512\fR or \fBsha1\fR \fBStandard Subresource Integrity\fR \fI\(lahttps://w3c.github.io/webappsec/specs/subresourceintegrity/\(ra\fR string for the artifact that was unpacked in this location. For git dependencies, this is the commit sha.
|
||||
.IP \(bu 4
|
||||
resolved: For registry sources this is path of the tarball relative to the registry URL. If the tarball URL isn't on the same server as the registry URL then this is a complete URL. \fBregistry.npmjs.org\fR is a magic value meaning "the currently configured registry".
|
||||
.IP \(bu 4
|
||||
bundled: If true, this is the bundled dependency and will be installed by the parent module. When installing, this module will be extracted from the parent module during the extract phase, not installed as a separate dependency.
|
||||
.IP \(bu 4
|
||||
dev: If true then this dependency is either a development dependency ONLY of the top level module or a transitive dependency of one. This is false for dependencies that are both a development dependency of the top level and a transitive dependency of a non-development dependency of the top level.
|
||||
.IP \(bu 4
|
||||
optional: If true then this dependency is either an optional dependency ONLY of the top level module or a transitive dependency of one. This is false for dependencies that are both an optional dependency of the top level and a transitive dependency of a non-optional dependency of the top level.
|
||||
.IP \(bu 4
|
||||
requires: This is a mapping of module name to version. This is a list of everything this module requires, regardless of where it will be installed. The version should match via normal matching rules a dependency either in our \fBdependencies\fR or in a level higher than us.
|
||||
.IP \(bu 4
|
||||
dependencies: The dependencies of this dependency, exactly as at the top level.
|
||||
.RE 0
|
||||
|
||||
.SS "See also"
|
||||
.RS 0
|
||||
.IP \(bu 4
|
||||
npm help shrinkwrap
|
||||
.IP \(bu 4
|
||||
\fBnpm-shrinkwrap.json\fR \fI\(la/configuring-npm/npm-shrinkwrap-json\(ra\fR
|
||||
.IP \(bu 4
|
||||
\fBpackage.json\fR \fI\(la/configuring-npm/package-json\(ra\fR
|
||||
.IP \(bu 4
|
||||
npm help install
|
||||
.RE 0
|
Reference in New Issue
Block a user