swarm
This commit is contained in:
224
builder-docker/jenkins/node-v12.22.8-linux-x64/lib/node_modules/npm/man/man5/folders.5
generated
vendored
Normal file
224
builder-docker/jenkins/node-v12.22.8-linux-x64/lib/node_modules/npm/man/man5/folders.5
generated
vendored
Normal file
@ -0,0 +1,224 @@
|
||||
.TH "FOLDERS" "5" "August 2021" "" ""
|
||||
.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 2
|
||||
Local install (default): puts stuff in \fB\|\./node_modules\fP of the current
|
||||
package root\.
|
||||
.IP \(bu 2
|
||||
Global install (with \fB\-g\fP): puts stuff in /usr/local or wherever node
|
||||
is installed\.
|
||||
.IP \(bu 2
|
||||
Install it \fBlocally\fR if you're going to \fBrequire()\fP it\.
|
||||
.IP \(bu 2
|
||||
Install it \fBglobally\fR if you're going to run it on the command line\.
|
||||
.IP \(bu 2
|
||||
If you need both, then install it in both places, or use \fBnpm link\fP\|\.
|
||||
|
||||
.RE
|
||||
.SS prefix Configuration
|
||||
.P
|
||||
The \fBprefix\fP config defaults to the location where node is installed\.
|
||||
On most systems, this is \fB/usr/local\fP\|\. On Windows, it's \fB%AppData%\\npm\fP\|\.
|
||||
On Unix systems, it's one level up, since node is typically installed at
|
||||
\fB{prefix}/bin/node\fP rather than \fB{prefix}/node\.exe\fP\|\.
|
||||
.P
|
||||
When the \fBglobal\fP 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\fP folder under the \fBprefix\fP\|\.
|
||||
When installing locally, this means that you can
|
||||
\fBrequire("packagename")\fP to load its main module, or
|
||||
\fBrequire("packagename/lib/path/to/sub/module")\fP to load other modules\.
|
||||
.P
|
||||
Global installs on Unix systems go to \fB{prefix}/lib/node_modules\fP\|\.
|
||||
Global installs on Windows go to \fB{prefix}/node_modules\fP (that is, no
|
||||
\fBlib\fP folder\.)
|
||||
.P
|
||||
Scoped packages are installed the same way, except they are grouped together
|
||||
in a sub\-folder of the relevant \fBnode_modules\fP folder with the name of that
|
||||
scope prefix by the @ symbol, e\.g\. \fBnpm install @myorg/package\fP would place
|
||||
the package in \fB{prefix}/node_modules/@myorg/package\fP\|\. See npm help \fBscope\fP for more details\.
|
||||
.P
|
||||
If you wish to \fBrequire()\fP a package, then install it locally\.
|
||||
.SS Executables
|
||||
.P
|
||||
When in global mode, executables are linked into \fB{prefix}/bin\fP on Unix,
|
||||
or directly into \fB{prefix}\fP on Windows\.
|
||||
.P
|
||||
When in local mode, executables are linked into
|
||||
\fB\|\./node_modules/\.bin\fP 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\fP\|\.)
|
||||
.SS Man Pages
|
||||
.P
|
||||
When in global mode, man pages are linked into \fB{prefix}/share/man\fP\|\.
|
||||
.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 \fBcache\fP\|\. Cache files are stored in \fB~/\.npm\fP on Posix, or
|
||||
\fB%AppData%/npm\-cache\fP on Windows\.
|
||||
.P
|
||||
This is controlled by the \fBcache\fP configuration param\.
|
||||
.SS Temp Files
|
||||
.P
|
||||
Temporary files are stored by default in the folder specified by the
|
||||
\fBtmp\fP config, which defaults to the TMPDIR, TMP, or TEMP environment
|
||||
variables, or \fB/tmp\fP on Unix and \fBc:\\windows\\temp\fP 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\fP folder\. This is so that \fBnpm install foo@1\.2\.3\fP will install
|
||||
to the sensible root of your package, even if you happen to have \fBcd\fPed
|
||||
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\fP file, or a \fBnode_modules\fP
|
||||
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\fP, then the package is loaded into
|
||||
the cache, and then unpacked into \fB\|\./node_modules/foo\fP\|\. Then, any of
|
||||
foo's dependencies are similarly unpacked into
|
||||
\fB\|\./node_modules/foo/node_modules/\.\.\.\fP\|\.
|
||||
.P
|
||||
Any bin files are symlinked to \fB\|\./node_modules/\.bin/\fP, so that they may
|
||||
be found by npm scripts when necessary\.
|
||||
.SS Global Installation
|
||||
.P
|
||||
If the \fBglobal\fP configuration 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\fP folders\. So, at every
|
||||
stage, if a package is already installed in an ancestor \fBnode_modules\fP
|
||||
folder, then it is not installed at the current location\.
|
||||
.P
|
||||
Consider the case above, where \fBfoo \-> bar \-> baz\fP\|\. Imagine if, in
|
||||
addition to that, baz depended on bar, so you'd have:
|
||||
\fBfoo \-> bar \-> baz \-> bar \-> baz \.\.\.\fP\|\. However, since the folder
|
||||
structure is: \fBfoo/node_modules/bar/node_modules/baz\fP, there's no need to
|
||||
put another copy of bar into \fB\|\.\.\./baz/node_modules\fP, since when it calls
|
||||
require("bar"), it will get the copy that is installed in
|
||||
\fBfoo/node_modules/bar\fP\|\.
|
||||
.P
|
||||
This shortcut is only used if the exact same
|
||||
version would be installed in multiple nested \fBnode_modules\fP folders\. It
|
||||
is still possible to have \fBa/node_modules/b/node_modules/a\fP 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\.
|
||||
.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:
|
||||
.P
|
||||
.RS 2
|
||||
.nf
|
||||
foo
|
||||
+\-\- node_modules
|
||||
+\-\- blerg (1\.2\.5) <\-\-\-[A]
|
||||
+\-\- bar (1\.2\.3) <\-\-\-[B]
|
||||
| `\-\- node_modules
|
||||
| +\-\- baz (2\.0\.2) <\-\-\-[C]
|
||||
| | `\-\- node_modules
|
||||
| | `\-\- quux (3\.2\.0)
|
||||
| `\-\- asdf (2\.3\.4)
|
||||
`\-\- baz (1\.2\.3) <\-\-\-[D]
|
||||
`\-\- node_modules
|
||||
`\-\- quux (3\.2\.0) <\-\-\-[E]
|
||||
.fi
|
||||
.RE
|
||||
.P
|
||||
Since foo depends directly on \fBbar@1\.2\.3\fP and \fBbaz@1\.2\.3\fP, those are
|
||||
installed in foo's \fBnode_modules\fP 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 [A]\. Since the
|
||||
parent installation of blerg satisfies bar's dependency on \fBblerg@1\.x\fP,
|
||||
it does not install another copy under [B]\.
|
||||
.P
|
||||
Bar [B] also has dependencies on baz and asdf, so those are installed in
|
||||
bar's \fBnode_modules\fP folder\. Because it depends on \fBbaz@2\.x\fP, it cannot
|
||||
re\-use the \fBbaz@1\.2\.3\fP installed in the parent \fBnode_modules\fP folder [D],
|
||||
and must install its own copy [C]\.
|
||||
.P
|
||||
Underneath bar, the \fBbaz \-> quux \-> bar\fP dependency creates a cycle\.
|
||||
However, because bar is already in quux's ancestry [B], it does not
|
||||
unpack another copy of bar into that folder\.
|
||||
.P
|
||||
Underneath \fBfoo \-> baz\fP [D], quux's [E] folder tree is empty, because its
|
||||
dependency on bar is satisfied by the parent folder copy installed at [B]\.
|
||||
.P
|
||||
For a graphical breakdown of what is installed where, use \fBnpm ls\fP\|\.
|
||||
.SS Publishing
|
||||
.P
|
||||
Upon publishing, npm will look in the \fBnode_modules\fP folder\. If any of
|
||||
the items there are not in the \fBbundledDependencies\fP 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 npm help \fBpackage\.json\fP for more information\.
|
||||
.SS See also
|
||||
.RS 0
|
||||
.IP \(bu 2
|
||||
npm help package\.json
|
||||
.IP \(bu 2
|
||||
npm help install
|
||||
.IP \(bu 2
|
||||
npm help pack
|
||||
.IP \(bu 2
|
||||
npm help cache
|
||||
.IP \(bu 2
|
||||
npm help config
|
||||
.IP \(bu 2
|
||||
npm help npmrc
|
||||
.IP \(bu 2
|
||||
npm help config
|
||||
.IP \(bu 2
|
||||
npm help publish
|
||||
|
||||
.RE
|
73
builder-docker/jenkins/node-v12.22.8-linux-x64/lib/node_modules/npm/man/man5/install.5
generated
vendored
Normal file
73
builder-docker/jenkins/node-v12.22.8-linux-x64/lib/node_modules/npm/man/man5/install.5
generated
vendored
Normal file
@ -0,0 +1,73 @@
|
||||
.TH "INSTALL" "5" "August 2021" "" ""
|
||||
.SH "NAME"
|
||||
\fBinstall\fR \- Download and Install 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 2
|
||||
Checking your version of npm and Node\.js \fI#checking\-your\-version\-of\-npm\-and\-node\-js\fR
|
||||
.IP \(bu 2
|
||||
Using a Node version manager to install Node\.js and npm \fI#using\-a\-node\-version\-manager\-to\-install\-node\-js\-and\-npm\fR
|
||||
.IP \(bu 2
|
||||
Using a Node installer to install Node\.js and npm \fI#using\-a\-node\-installer\-to\-install\-node\-js\-and\-npm\fR
|
||||
|
||||
.RE
|
||||
.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\.
|
||||
.SS OSX or Linux Node version managers
|
||||
.RS 0
|
||||
.IP \(bu 2
|
||||
nvm \fIhttps://github\.com/creationix/nvm\fR
|
||||
.IP \(bu 2
|
||||
n \fIhttps://github\.com/tj/n\fR
|
||||
|
||||
.RE
|
||||
.SS Windows Node version managers
|
||||
.RS 0
|
||||
.IP \(bu 2
|
||||
nodist \fIhttps://github\.com/marcelklehr/nodist\fR
|
||||
.IP \(bu 2
|
||||
nvm\-windows \fIhttps://github\.com/coreybutler/nvm\-windows\fR
|
||||
|
||||
.RE
|
||||
.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 2
|
||||
Node\.js installer \fIhttps://nodejs\.org/en/download/\fR
|
||||
.IP \(bu 2
|
||||
NodeSource installer \fIhttps://github\.com/nodesource/distributions\fR\|\. If you use Linux, we recommend that you use a NodeSource installer\.
|
||||
|
||||
.RE
|
||||
.SS OS X or Windows Node installers
|
||||
.P
|
||||
If you're using OS X or Windows, use one of the installers from the Node\.js download page \fIhttps://nodejs\.org/en/download/\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 2
|
||||
NodeSource installer \fIhttps://github\.com/nodesource/distributions\fR (recommended)
|
||||
.IP \(bu 2
|
||||
One of the installers on the Node\.js download page \fIhttps://nodejs\.org/en/download/\fR
|
||||
|
||||
.RE
|
||||
.P
|
||||
Or see this page \fIhttps://nodejs\.org/en/download/package\-manager/\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 this page \fIhttps://nodejs\.org/en/download/package\-manager/\fR\|\.
|
108
builder-docker/jenkins/node-v12.22.8-linux-x64/lib/node_modules/npm/man/man5/npmrc.5
generated
vendored
Normal file
108
builder-docker/jenkins/node-v12.22.8-linux-x64/lib/node_modules/npm/man/man5/npmrc.5
generated
vendored
Normal file
@ -0,0 +1,108 @@
|
||||
.TH "NPMRC" "5" "August 2021" "" ""
|
||||
.SH "NAME"
|
||||
\fBnpmrc\fR \- The npm config files
|
||||
.SS Description
|
||||
.P
|
||||
npm gets its config settings from the command line, environment
|
||||
variables, and \fBnpmrc\fP files\.
|
||||
.P
|
||||
The \fBnpm config\fP 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 2
|
||||
per\-project config file (/path/to/my/project/\.npmrc)
|
||||
.IP \(bu 2
|
||||
per\-user config file (~/\.npmrc)
|
||||
.IP \(bu 2
|
||||
global config file ($PREFIX/etc/npmrc)
|
||||
.IP \(bu 2
|
||||
npm builtin config file (/path/to/npm/npmrc)
|
||||
|
||||
.RE
|
||||
.P
|
||||
All npm config files are an ini\-formatted list of \fBkey = value\fP
|
||||
parameters\. Environment variables can be replaced using
|
||||
\fB${VARIABLE_NAME}\fP\|\. For example:
|
||||
.P
|
||||
.RS 2
|
||||
.nf
|
||||
prefix = ${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 "[]" after the key name\. For
|
||||
example:
|
||||
.P
|
||||
.RS 2
|
||||
.nf
|
||||
key[] = "first value"
|
||||
key[] = "second value"
|
||||
.fi
|
||||
.RE
|
||||
.SS Comments
|
||||
.P
|
||||
Lines in \fB\|\.npmrc\fP files are interpreted as comments when they begin with a \fB;\fP or \fB#\fP character\. \fB\|\.npmrc\fP files are parsed by npm/ini \fIhttps://github\.com/npm/ini\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\fP file in the root of the
|
||||
project (ie, a sibling of \fBnode_modules\fP and \fBpackage\.json\fP) 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\fP\|\.
|
||||
.SS Per\-user config file
|
||||
.P
|
||||
\fB$HOME/\.npmrc\fP (or the \fBuserconfig\fP param, if set in the environment
|
||||
or on the command line)
|
||||
.SS Global config file
|
||||
.P
|
||||
\fB$PREFIX/etc/npmrc\fP (or the \fBglobalconfig\fP param, if set above):
|
||||
This file is an ini\-file formatted list of \fBkey = value\fP parameters\.
|
||||
Environment variables can be replaced as above\.
|
||||
.SS Built\-in config file
|
||||
.P
|
||||
\fBpath/to/npm/itself/npmrc\fP
|
||||
.P
|
||||
This is an unchangeable "builtin" configuration file that npm keeps
|
||||
consistent across updates\. Set fields in here using the \fB\|\./configure\fP
|
||||
script that comes with npm\. This is primarily for distribution
|
||||
maintainers to override default configs in a standard and consistent
|
||||
manner\.
|
||||
.SS See also
|
||||
.RS 0
|
||||
.IP \(bu 2
|
||||
npm help folders
|
||||
.IP \(bu 2
|
||||
npm help config
|
||||
.IP \(bu 2
|
||||
npm help config
|
||||
.IP \(bu 2
|
||||
npm help package\.json
|
||||
.IP \(bu 2
|
||||
npm help npm
|
||||
|
||||
.RE
|
1013
builder-docker/jenkins/node-v12.22.8-linux-x64/lib/node_modules/npm/man/man5/package-json.5
generated
vendored
Normal file
1013
builder-docker/jenkins/node-v12.22.8-linux-x64/lib/node_modules/npm/man/man5/package-json.5
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
152
builder-docker/jenkins/node-v12.22.8-linux-x64/lib/node_modules/npm/man/man5/package-lock-json.5
generated
vendored
Normal file
152
builder-docker/jenkins/node-v12.22.8-linux-x64/lib/node_modules/npm/man/man5/package-lock-json.5
generated
vendored
Normal file
@ -0,0 +1,152 @@
|
||||
.TH "PACKAGE\-LOCK\.JSON" "5" "August 2021" "" ""
|
||||
.SH "NAME"
|
||||
\fBpackage-lock.json\fR \- A manifestation of the manifest
|
||||
.SS Description
|
||||
.P
|
||||
\fBpackage\-lock\.json\fP is automatically generated for any operations where npm
|
||||
modifies either the \fBnode_modules\fP tree, or \fBpackage\.json\fP\|\. 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 2
|
||||
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 2
|
||||
Provide a facility for users to "time\-travel" to previous states of \fBnode_modules\fP without having to commit the directory itself\.
|
||||
.IP \(bu 2
|
||||
To facilitate greater visibility of tree changes through readable source control diffs\.
|
||||
.IP \(bu 2
|
||||
And optimize the installation process by allowing npm to skip repeated metadata resolutions for previously\-installed packages\.
|
||||
|
||||
.RE
|
||||
.P
|
||||
One key detail about \fBpackage\-lock\.json\fP is that it cannot be published, and it
|
||||
will be ignored if found in any place other than the toplevel package\. It shares
|
||||
a format with npm help npm\-shrinkwrap\.json, which is essentially the same file, but
|
||||
allows publication\. 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\fP and \fBnpm\-shrinkwrap\.json\fP are present in the root of
|
||||
a package, \fBpackage\-lock\.json\fP will be completely ignored\.
|
||||
.SS File Format
|
||||
.SS name
|
||||
.P
|
||||
The name of the package this is a package\-lock for\. This must match what's in
|
||||
\fBpackage\.json\fP\|\.
|
||||
.SS version
|
||||
.P
|
||||
The version of the package this is a package\-lock for\. This must match what's in
|
||||
\fBpackage\.json\fP\|\.
|
||||
.SS lockfileVersion
|
||||
.P
|
||||
An integer version, starting at \fB1\fP with the version number of this document
|
||||
whose semantics were used when generating this \fBpackage\-lock\.json\fP\|\.
|
||||
.SS packageIntegrity
|
||||
.P
|
||||
This is a subresource
|
||||
integrity \fIhttps://w3c\.github\.io/webappsec/specs/subresourceintegrity/\fR value
|
||||
created from the \fBpackage\.json\fP\|\. No preprocessing of the \fBpackage\.json\fP should
|
||||
be done\. Subresource integrity strings can be produced by modules like
|
||||
\fBssri\fP \fIhttps://www\.npmjs\.com/package/ssri\fR\|\.
|
||||
.SS preserveSymlinks
|
||||
.P
|
||||
Indicates that the install was done with the environment variable
|
||||
\fBNODE_PRESERVE_SYMLINKS\fP enabled\. The installer should insist that the value of
|
||||
this property match that environment variable\.
|
||||
.SS dependencies
|
||||
.P
|
||||
A mapping of package name to dependency object\. Dependency objects have the
|
||||
following properties:
|
||||
.SS version
|
||||
.P
|
||||
This is a specifier that uniquely identifies this package and should be
|
||||
usable in fetching a new copy of it\.
|
||||
.RS 0
|
||||
.IP \(bu 2
|
||||
bundled dependencies: Regardless of source, this is a version number that is purely for informational purposes\.
|
||||
.IP \(bu 2
|
||||
registry sources: This is a version number\. (eg, \fB1\.2\.3\fP)
|
||||
.IP \(bu 2
|
||||
git sources: This is a git specifier with resolved committish\. (eg, \fBgit+https://example\.com/foo/bar#115311855adb0789a0466714ed48a1499ffea97e\fP)
|
||||
.IP \(bu 2
|
||||
http tarball sources: This is the URL of the tarball\. (eg, \fBhttps://example\.com/example\-1\.3\.0\.tgz\fP)
|
||||
.IP \(bu 2
|
||||
local tarball sources: This is the file URL of the tarball\. (eg \fBfile:///opt/storage/example\-1\.3\.0\.tgz\fP)
|
||||
.IP \(bu 2
|
||||
local link sources: This is the file URL of the link\. (eg \fBfile:libs/our\-module\fP)
|
||||
|
||||
.RE
|
||||
.SS integrity
|
||||
.P
|
||||
This is a Standard Subresource
|
||||
Integrity \fIhttps://w3c\.github\.io/webappsec/specs/subresourceintegrity/\fR for this
|
||||
resource\.
|
||||
.RS 0
|
||||
.IP \(bu 2
|
||||
For bundled dependencies this is not included, regardless of source\.
|
||||
.IP \(bu 2
|
||||
For registry sources, this is the \fBintegrity\fP that the registry provided, or if one wasn't provided the SHA1 in \fBshasum\fP\|\.
|
||||
.IP \(bu 2
|
||||
For git sources this is the specific commit hash we cloned from\.
|
||||
.IP \(bu 2
|
||||
For remote tarball sources this is an integrity based on a SHA512 of
|
||||
the file\.
|
||||
.IP \(bu 2
|
||||
For local tarball sources: This is an integrity field based on the SHA512 of the file\.
|
||||
|
||||
.RE
|
||||
.SS resolved
|
||||
.RS 0
|
||||
.IP \(bu 2
|
||||
For bundled dependencies this is not included, regardless of source\.
|
||||
.IP \(bu 2
|
||||
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\.
|
||||
|
||||
.RE
|
||||
.SS bundled
|
||||
.P
|
||||
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\.
|
||||
.SS dev
|
||||
.P
|
||||
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\.
|
||||
.SS optional
|
||||
.P
|
||||
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\.
|
||||
.P
|
||||
All optional dependencies should be included even if they're uninstallable
|
||||
on the current platform\.
|
||||
.SS requires
|
||||
.P
|
||||
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\fP or in a level higher than us\.
|
||||
.SS dependencies
|
||||
.P
|
||||
The dependencies of this dependency, exactly as at the top level\.
|
||||
.SS See also
|
||||
.RS 0
|
||||
.IP \(bu 2
|
||||
npm help shrinkwrap
|
||||
.IP \(bu 2
|
||||
npm help shrinkwrap\.json
|
||||
.IP \(bu 2
|
||||
npm help package\-locks
|
||||
.IP \(bu 2
|
||||
npm help package\.json
|
||||
.IP \(bu 2
|
||||
npm help install
|
||||
|
||||
.RE
|
200
builder-docker/jenkins/node-v12.22.8-linux-x64/lib/node_modules/npm/man/man5/package-locks.5
generated
vendored
Normal file
200
builder-docker/jenkins/node-v12.22.8-linux-x64/lib/node_modules/npm/man/man5/package-locks.5
generated
vendored
Normal file
@ -0,0 +1,200 @@
|
||||
.TH "PACKAGE\-LOCKS" "5" "August 2021" "" ""
|
||||
.SH "NAME"
|
||||
\fBpackage-locks\fR \- An explanation of npm lockfiles
|
||||
.SS Description
|
||||
.P
|
||||
Conceptually, the "input" to npm help \fBinstall\fP is a npm help package\.json, while its
|
||||
"output" is a fully\-formed \fBnode_modules\fP tree: a representation of the
|
||||
dependencies you declared\. In an ideal world, npm would work like a pure
|
||||
function: the same \fBpackage\.json\fP should produce the exact same \fBnode_modules\fP
|
||||
tree, any time\. In some cases, this is indeed true\. But in many others, npm is
|
||||
unable to do this\. There are multiple reasons for this:
|
||||
.RS 0
|
||||
.IP \(bu 2
|
||||
different versions of npm (or other package managers) may have been used to install a package, each using slightly different installation algorithms\.
|
||||
.IP \(bu 2
|
||||
a new version of a direct semver\-range package may have been published since the last time your packages were installed, and thus a newer version will be used\.
|
||||
.IP \(bu 2
|
||||
A dependency of one of your dependencies may have published a new version, which will update even if you used pinned dependency specifiers (\fB1\.2\.3\fP instead of \fB^1\.2\.3\fP)
|
||||
.IP \(bu 2
|
||||
The registry you installed from is no longer available, or allows mutation of versions (unlike the primary npm registry), and a different version of a package exists under the same version number now\.
|
||||
|
||||
.RE
|
||||
.P
|
||||
As an example, consider package A:
|
||||
.P
|
||||
.RS 2
|
||||
.nf
|
||||
{
|
||||
"name": "A",
|
||||
"version": "0\.1\.0",
|
||||
"dependencies": {
|
||||
"B": "<0\.1\.0"
|
||||
}
|
||||
}
|
||||
.fi
|
||||
.RE
|
||||
.P
|
||||
package B:
|
||||
.P
|
||||
.RS 2
|
||||
.nf
|
||||
{
|
||||
"name": "B",
|
||||
"version": "0\.0\.1",
|
||||
"dependencies": {
|
||||
"C": "<0\.1\.0"
|
||||
}
|
||||
}
|
||||
.fi
|
||||
.RE
|
||||
.P
|
||||
and package C:
|
||||
.P
|
||||
.RS 2
|
||||
.nf
|
||||
{
|
||||
"name": "C",
|
||||
"version": "0\.0\.1"
|
||||
}
|
||||
.fi
|
||||
.RE
|
||||
.P
|
||||
If these are the only versions of A, B, and C available in the
|
||||
registry, then a normal \fBnpm install A\fP will install:
|
||||
.P
|
||||
.RS 2
|
||||
.nf
|
||||
A@0\.1\.0
|
||||
`\-\- B@0\.0\.1
|
||||
`\-\- C@0\.0\.1
|
||||
.fi
|
||||
.RE
|
||||
.P
|
||||
However, if B@0\.0\.2 is published, then a fresh \fBnpm install A\fP will
|
||||
install:
|
||||
.P
|
||||
.RS 2
|
||||
.nf
|
||||
A@0\.1\.0
|
||||
`\-\- B@0\.0\.2
|
||||
`\-\- C@0\.0\.1
|
||||
.fi
|
||||
.RE
|
||||
.P
|
||||
assuming the new version did not modify B's dependencies\. Of course,
|
||||
the new version of B could include a new version of C and any number
|
||||
of new dependencies\. If such changes are undesirable, the author of A
|
||||
could specify a dependency on B@0\.0\.1\|\. However, if A's author and B's
|
||||
author are not the same person, there's no way for A's author to say
|
||||
that he or she does not want to pull in newly published versions of C
|
||||
when B hasn't changed at all\.
|
||||
.P
|
||||
To prevent this potential issue, npm uses npm help package\-lock\.json or, if present, npm help npm\-shrinkwrap\.json\. These files are called package locks, or lockfiles\.
|
||||
.P
|
||||
Whenever you run \fBnpm install\fP, npm generates or updates your package lock,
|
||||
which will look something like this:
|
||||
.P
|
||||
.RS 2
|
||||
.nf
|
||||
{
|
||||
"name": "A",
|
||||
"version": "0\.1\.0",
|
||||
\.\.\.metadata fields\.\.\.
|
||||
"dependencies": {
|
||||
"B": {
|
||||
"version": "0\.0\.1",
|
||||
"resolved": "https://registry\.npmjs\.org/B/\-/B\-0\.0\.1\.tgz",
|
||||
"integrity": "sha512\-DeAdb33F+"
|
||||
"dependencies": {
|
||||
"C": {
|
||||
"version": "git://github\.com/org/C\.git#5c380ae319fc4efe9e7f2d9c78b0faa588fd99b4"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.fi
|
||||
.RE
|
||||
.P
|
||||
This file describes an \fIexact\fR, and more importantly \fIreproducible\fR
|
||||
\fBnode_modules\fP tree\. Once it's present, any future installation will base its
|
||||
work off this file, instead of recalculating dependency versions off
|
||||
npm help package\.json\.
|
||||
.P
|
||||
The presence of a package lock changes the installation behavior such that:
|
||||
.RS 0
|
||||
.IP 1. 3
|
||||
The module tree described by the package lock is reproduced\. This means
|
||||
reproducing the structure described in the file, using the specific files
|
||||
referenced in "resolved" if available, falling back to normal package resolution
|
||||
using "version" if one isn't\.
|
||||
.IP 2. 3
|
||||
The tree is walked and any missing dependencies are installed in the usual
|
||||
fashion\.
|
||||
|
||||
.RE
|
||||
.P
|
||||
If \fBpreshrinkwrap\fP, \fBshrinkwrap\fP or \fBpostshrinkwrap\fP are in the \fBscripts\fP
|
||||
property of the \fBpackage\.json\fP, they will be executed in order\. \fBpreshrinkwrap\fP
|
||||
and \fBshrinkwrap\fP are executed before the shrinkwrap, \fBpostshrinkwrap\fP is
|
||||
executed afterwards\. These scripts run for both \fBpackage\-lock\.json\fP and
|
||||
\fBnpm\-shrinkwrap\.json\fP\|\. For example to run some postprocessing on the generated
|
||||
file:
|
||||
.P
|
||||
.RS 2
|
||||
.nf
|
||||
"scripts": {
|
||||
"postshrinkwrap": "json \-I \-e \\"this\.myMetadata = $MY_APP_METADATA\\""
|
||||
}
|
||||
.fi
|
||||
.RE
|
||||
.SS Using locked packages
|
||||
.P
|
||||
Using a locked package is no different than using any package without a package
|
||||
lock: any commands that update \fBnode_modules\fP and/or \fBpackage\.json\fP\|'s
|
||||
dependencies will automatically sync the existing lockfile\. This includes \fBnpm
|
||||
install\fP, \fBnpm rm\fP, \fBnpm update\fP, etc\. To prevent this update from happening,
|
||||
you can use the \fB\-\-no\-save\fP option to prevent saving altogether, or
|
||||
\fB\-\-no\-shrinkwrap\fP to allow \fBpackage\.json\fP to be updated while leaving
|
||||
\fBpackage\-lock\.json\fP or \fBnpm\-shrinkwrap\.json\fP intact\.
|
||||
.P
|
||||
It is highly recommended you commit the generated package lock to source
|
||||
control: this will allow anyone else on your team, your deployments, your
|
||||
CI/continuous integration, and anyone else who runs \fBnpm install\fP in your
|
||||
package source to get the exact same dependency tree that you were developing
|
||||
on\. Additionally, the diffs from these changes are human\-readable and will
|
||||
inform you of any changes npm has made to your \fBnode_modules\fP, so you can notice
|
||||
if any transitive dependencies were updated, hoisted, etc\.
|
||||
.SS Resolving lockfile conflicts
|
||||
.P
|
||||
Occasionally, two separate npm install will create package locks that cause
|
||||
merge conflicts in source control systems\. As of \fBnpm@5\.7\.0\fP, these conflicts
|
||||
can be resolved by manually fixing any \fBpackage\.json\fP conflicts, and then
|
||||
running \fBnpm install [\-\-package\-lock\-only]\fP again\. npm will automatically
|
||||
resolve any conflicts for you and write a merged package lock that includes all
|
||||
the dependencies from both branches in a reasonable tree\. If
|
||||
\fB\-\-package\-lock\-only\fP is provided, it will do this without also modifying your
|
||||
local \fBnode_modules/\fP\|\.
|
||||
.P
|
||||
To make this process seamless on git, consider installing
|
||||
\fBnpm\-merge\-driver\fP \fIhttps://npm\.im/npm\-merge\-driver\fR, which will teach git how
|
||||
to do this itself without any user interaction\. In short: \fB$ npx
|
||||
npm\-merge\-driver install \-g\fP will let you do this, and even works with
|
||||
pre\-\fBnpm@5\.7\.0\fP versions of npm 5, albeit a bit more noisily\. Note that if
|
||||
\fBpackage\.json\fP itself conflicts, you will have to resolve that by hand and run
|
||||
\fBnpm install\fP manually, even with the merge driver\.
|
||||
.SS See Also
|
||||
.RS 0
|
||||
.IP \(bu 2
|
||||
https://medium\.com/@sdboyer/so\-you\-want\-to\-write\-a\-package\-manager\-4ae9c17d9527
|
||||
.IP \(bu 2
|
||||
npm help package\.json
|
||||
.IP \(bu 2
|
||||
npm help package\-lock\.json
|
||||
.IP \(bu 2
|
||||
npm help shrinkwrap\.json
|
||||
.IP \(bu 2
|
||||
npm help shrinkwrap
|
||||
|
||||
.RE
|
32
builder-docker/jenkins/node-v12.22.8-linux-x64/lib/node_modules/npm/man/man5/shrinkwrap-json.5
generated
vendored
Normal file
32
builder-docker/jenkins/node-v12.22.8-linux-x64/lib/node_modules/npm/man/man5/shrinkwrap-json.5
generated
vendored
Normal file
@ -0,0 +1,32 @@
|
||||
.TH "NPM\-SHRINKWRAP\.JSON" "5" "August 2021" "" ""
|
||||
.SH "NAME"
|
||||
\fBnpm-shrinkwrap.json\fR \- A publishable lockfile
|
||||
.SS Description
|
||||
.P
|
||||
\fBnpm\-shrinkwrap\.json\fP is a file created by npm help \fBshrinkwrap\fP\|\. It is identical to
|
||||
\fBpackage\-lock\.json\fP, with one major caveat: Unlike \fBpackage\-lock\.json\fP,
|
||||
\fBnpm\-shrinkwrap\.json\fP may be included when publishing a package\.
|
||||
.P
|
||||
The recommended use\-case for \fBnpm\-shrinkwrap\.json\fP is applications deployed
|
||||
through the publishing process on the registry: for example, daemons and
|
||||
command\-line tools intended as global installs or \fBdevDependencies\fP\|\. 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
|
||||
Additionally, if both \fBpackage\-lock\.json\fP and \fBnpm\-shrinkwrap\.json\fP are present
|
||||
in a package root, \fBpackage\-lock\.json\fP will be ignored in favor of this file\.
|
||||
.P
|
||||
For full details and description of the \fBnpm\-shrinkwrap\.json\fP file format, refer
|
||||
to the manual page for npm help package\-lock\.json\.
|
||||
.SS See also
|
||||
.RS 0
|
||||
.IP \(bu 2
|
||||
npm help shrinkwrap
|
||||
.IP \(bu 2
|
||||
npm help package\-lock\.json
|
||||
.IP \(bu 2
|
||||
npm help package\.json
|
||||
.IP \(bu 2
|
||||
npm help install
|
||||
|
||||
.RE
|
Reference in New Issue
Block a user