安裝包
npm install (with no args, in package dir)
npm install [<@scope>/]<name>
npm install [<@scope>/]<name>@<tag>
npm install [<@scope>/]<name>@<version>
npm install [<@scope>/]<name>@<version range>
npm install <git-host>:<git-user>/<repo-name>
npm install <git repo url>
npm install <tarball file>
npm install <tarball url>
npm install <folder>
alias: npm i
common options: [-P|--save-prod|-D|--save-dev|-O|--save-optional] [-E|--save-exact] [-B|--save-bundle] [--no-save] [--dry-run]
此命令安裝一個(gè)包,以及它所依賴的任何包。如果包具有包鎖,或npm shrinkwrap
文件,或yarn lock
文件,則依賴項(xiàng)的安裝將由該文件驅(qū)動(dòng),并遵循以下優(yōu)先順序:
npm-shrinkwrap.json
package-lock.json
yarn.lock
請(qǐng)參考package-lock.json和npm shrinkwrap
一個(gè)package
是:
<name>@<version>
(參見npm-registry)。<name>@<tag>
(請(qǐng)參考npm-dist-tag)。lastest
標(biāo)簽的<name>
。<git remote url>
。即使你從來沒有發(fā)布過你的包,如果你只是想寫一個(gè)節(jié)點(diǎn)程序(a),或者如果你還希望打包成 tarball (b) 能夠輕松地安裝到其他地方,你仍然可以從使用 npm 中獲得很多好處。
npm install
?(在包目錄中,沒有參數(shù)):node_modules
文件夾中安裝依賴項(xiàng)。-g
或--global
附加到命令),它將當(dāng)前包上下文(即當(dāng)前工作目錄)安裝為全局包。npm install
將安裝所有列為依賴項(xiàng)的模塊package.json。--production
標(biāo)志(或當(dāng)NODE_ENV
環(huán)境變量設(shè)置為production
),npm 將不會(huì)安裝?devDependencies
.--production
在向項(xiàng)目添加依賴項(xiàng)時(shí),該標(biāo)志沒有特殊含義。npm install <folder>
:
將包安裝在目錄中作為當(dāng)前項(xiàng)目中的符號(hào)鏈接。它的依賴項(xiàng)將在鏈接之前安裝。如果<folder>
位于項(xiàng)目的根目錄中,它的依賴項(xiàng)可能會(huì)node_modules
像其他類型的依賴項(xiàng)一樣被提升到頂層。npm install <tarball file>
:
安裝位于文件系統(tǒng)上的軟件包。注意:如果你只想將 dev 目錄鏈接到你的 npm 根目錄,你可以使用npm link
..tar
,?.tar.gz
, 或.tgz
作為擴(kuò)展名。package/
)。npm 在安裝包時(shí)剝離一個(gè)目錄層(相當(dāng)于tar x --strip-components=1
運(yùn)行)。package.json
具有name
和version
屬性的文件。
例子:
npm install ./package.tgz
npm install <tarball url>
:
獲取 tarball url,然后安裝它。為了區(qū)分這個(gè)選項(xiàng)和其他選項(xiàng),參數(shù)必須以http://
或https://
開頭
例子:
npm install https://github.com/indexzero/forever/tarball/v0.5.6
npm install [<@scope>/]<name>
:
進(jìn)行<name>@<tag>
安裝,<tag>
“標(biāo)簽”配置在哪里。(請(qǐng)參閱?[npm-config](https://www.npmjs.cn/misc/config)
。配置的默認(rèn)值為latest
。)latest
在 npm 注冊(cè)表中標(biāo)記為的模塊版本?。npm install sax
npm install``dependencies
默認(rèn)情況下將任何指定的包保存到。此外,您可以使用一些額外的標(biāo)志來控制它們的保存位置和方式:
-P, --save-prod
: 包將出現(xiàn)在你的dependencies
.?這是默認(rèn)值,除非-D
或-O
存在。-D, --save-dev
: 包將出現(xiàn)在你的devDependencies
.-O, --save-optional
: 包將出現(xiàn)在你的optionalDependencies
.--no-save
:防止保存到dependencies
.使用上述任何選項(xiàng)將依賴項(xiàng)保存到 package.json 時(shí),還有兩個(gè)額外的可選標(biāo)志:
-E, --save-exact
:保存的依賴項(xiàng)將被配置為一個(gè)確切的版本,而不是使用 npm 的默認(rèn) semver 范圍操作符。-B, --save-bundle
:保存的依賴項(xiàng)也將添加到您的bundleDependencies
列表中。
此外,如果你有一個(gè)npm-shrinkwrap.json
或package-lock.json
那么它也將被更新。
<scope>
是可選的。該包將從與指定范圍關(guān)聯(lián)的注冊(cè)表中下載。如果沒有注冊(cè)表與給定范圍相關(guān)聯(lián),則假定為默認(rèn)注冊(cè)表。見npm-scope。
注意:如果你沒有在范圍名稱中包含 @-symbol,npm 會(huì)將其解釋為 GitHub 存儲(chǔ)庫,請(qǐng)參見下文。范圍名稱也必須后跟斜杠。
例子:
npm install sax
npm install githubname/reponame
npm install @myorg/privatepackage
npm install node-tap --save-dev
npm install dtrace-provider --save-optional
npm install readable-stream --save-exact
npm install ansi-regex --save-bundle
注意:如果<name>
當(dāng)前工作目錄中有一個(gè)文件或文件夾,那么它會(huì)嘗試安裝它,并且只有在它無效時(shí)才嘗試按名稱獲取包。
npm install [<@scope>/]<name>@<tag>
:
安裝指定標(biāo)簽引用的包版本。如果該包的注冊(cè)表數(shù)據(jù)中不存在該標(biāo)記,則此操作將失敗。例子:
npm install sax@latest
npm install @myorg/mypackage@latest
npm install [<@scope>/]<name>@<version range>
:
安裝與指定版本范圍匹配的軟件包版本。這將遵循解決依賴項(xiàng)中描述的相同規(guī)則package.json。
請(qǐng)注意,大多數(shù)版本范圍必須放在引號(hào)中,以便您的 shell 將其視為單個(gè)參數(shù)。npm install sax@">=0.1.0 <0.2.0"
npm install @myorg/privatepackage@">=0.1.0 <0.2.0"
npm install <git remote url>
:
從托管的 git 提供程序安裝包,并使用git
.?對(duì)于完整的 git 遠(yuǎn)程 url,只會(huì)嘗試該 URL。
<protocol>://[<user>[:<password>]@]<hostname>[:<port>][:][/]<path>[#<commit-ish> | #semver:<semver>]
<protocol>
是以下之一git
,git+ssh
,git+http
,git+https
, 或?git+file
。
如果#<commit-ish>
提供,它將用于準(zhǔn)確克隆該提交。如果 commit-ish 具有格式#semver:<semver>
,<semver>
可以是任何有效的 semver 范圍或確切版本,并且 npm 將在遠(yuǎn)程存儲(chǔ)庫中查找與該范圍匹配的任何標(biāo)簽或引用,就像查找注冊(cè)表依賴項(xiàng)一樣。如果兩者都未指定#<commit-ish>
或未#semver:<semver>
指定,則使用存儲(chǔ)庫的默認(rèn)分支。
如果存儲(chǔ)庫使用子模塊,則這些子模塊也將被克隆。
如果正在安裝的包包含prepare
腳本,則在打包和安裝包之前dependencies
,devDependencies
將安裝其和腳本,?并運(yùn)行準(zhǔn)備腳本。
以下 git 環(huán)境變量被 npm 識(shí)別,并會(huì)在運(yùn)行 git 時(shí)添加到環(huán)境中:
GIT_ASKPASS
GIT_EXEC_PATH
GIT_PROXY_COMMAND
GIT_SSH``GIT_SSH_COMMAND
GIT_SSL_CAINFO
GIT_SSL_NO_VERIFY
有關(guān)詳細(xì)信息,請(qǐng)參閱 git 手冊(cè)頁。
例子:
npm install git+ssh://git@github.com:npm/cli.git#v1.0.27
npm install git+ssh://git@github.com:npm/cli#semver:^5.0
npm install git+https://isaacs@github.com/npm/cli.git
npm install git://github.com/npm/cli.git#v1.0.27
GIT_SSH_COMMAND='ssh -i ~/.ssh/custom_ident' npm install git+ssh://git@github.com:n
npm install <githubname>/<githubrepo>[#<commit-ish>]
:npm install github:<githubname>/<githubrepo>[#<commit-ish>]
:
在安裝該軟件包https://github.com/githubname/githubrepo
通過嘗試使用克隆它git
。
如果#<commit-ish>
提供,它將用于準(zhǔn)確克隆該提交。如果 commit-ish 具有格式#semver:<semver>
,<semver>
可以是任何有效的 semver 范圍或確切版本,并且 npm 將在遠(yuǎn)程存儲(chǔ)庫中查找與該范圍匹配的任何標(biāo)簽或引用,就像查找注冊(cè)表依賴項(xiàng)一樣。如果兩者都未指定#<commit-ish>
或未#semver:<semver>
指定,則master
使用。
與常規(guī)git的依賴,dependencies
并且devDependencies
將安裝如果包有一個(gè)prepare
腳本,做包,然后再安裝。
例子:
npm install mygithubuser/myproject
npm install github:mygithubuser/myproject
npm install gist:[<githubname>/]<gistID>[#<commit-ish>|#semver:<semver>]
:
在安裝該軟件包https://gist.github.com/gistID
通過嘗試使用克隆它git
。與要點(diǎn)關(guān)聯(lián)的 GitHub 用戶名是可選的,不會(huì)保存在package.json
.
與常規(guī)git的依賴,dependencies
并且devDependencies
將安裝如果包有一個(gè)prepare
腳本,做包,然后再安裝。
例子:
npm install gist:101a11beef
npm install bitbucket:<bitbucketname>/<bitbucketrepo>[#<commit-ish>]
:
在安裝該軟件包https://bitbucket.org/bitbucketname/bitbucketrepo
?通過嘗試使用克隆它git
。
如果#<commit-ish>
提供,它將用于準(zhǔn)確克隆該提交。如果 commit-ish 具有格式#semver:<semver>
,<semver>
可以是任何有效的 semver 范圍或確切版本,并且 npm 將在遠(yuǎn)程存儲(chǔ)庫中查找與該范圍匹配的任何標(biāo)簽或引用,就像查找注冊(cè)表依賴項(xiàng)一樣。如果兩者都未指定#<commit-ish>
或未#semver:<semver>
指定,則master
使用。
與常規(guī)git的依賴,dependencies
并且devDependencies
將安裝如果包有一個(gè)prepare
腳本,做包,然后再安裝。
例子:
npm install bitbucket:mybitbucketuser/myproject
npm install gitlab:<gitlabname>/<gitlabrepo>[#<commit-ish>]
:
在安裝該軟件包https://gitlab.com/gitlabname/gitlabrepo
?通過嘗試使用克隆它git
。
如果#<commit-ish>
提供,它將用于準(zhǔn)確克隆該提交。如果 commit-ish 具有格式#semver:<semver>
,<semver>
可以是任何有效的 semver 范圍或確切版本,并且 npm 將在遠(yuǎn)程存儲(chǔ)庫中查找與該范圍匹配的任何標(biāo)簽或引用,就像查找注冊(cè)表依賴項(xiàng)一樣。如果兩者都未指定#<commit-ish>
或未#semver:<semver>
指定,則master
使用。
與常規(guī)git的依賴,dependencies
并且devDependencies
將安裝如果包有一個(gè)prepare
腳本,做包,然后再安裝。
例子:
npm install gitlab:mygitlabuser/myproject
npm install gitlab:myusr/myproj#semver:^5.0
你可以組合多個(gè)參數(shù),甚至多種類型的參數(shù)。例如:
npm install sax@">=0.1.0 <0.2.0" bench supervisor
--tag
參數(shù)將應(yīng)用于所有指定的安裝目標(biāo)。如果存在具有給定名稱的標(biāo)記,則標(biāo)記版本優(yōu)先于較新版本。
--dry-run
參數(shù)將以通常的方式報(bào)告安裝會(huì)在沒有實(shí)際安裝任何東西的情況下完成的操作。
--package-lock-only
參數(shù)只會(huì)更新package-lock.json
, 而不是檢查node_modules
和下載依賴項(xiàng)。
即使磁盤上存在本地副本,-f
or--force
參數(shù)也會(huì)強(qiáng)制 npm 獲取遠(yuǎn)程資源。
npm install sax --force
-g
或--global
參數(shù)會(huì)導(dǎo)致NPM在全局范圍內(nèi),而不是在本地安裝包。見[npm-folders](https://www.npmjs.cn/files/folders)
。
--global-style
參數(shù)將導(dǎo)致 npm 將包安裝到您的本地node_modules
文件夾中,其布局與全局node_modules
文件夾使用的布局相同。只有您的直接依賴項(xiàng)會(huì)顯示在其中,?node_modules
并且它們所依賴的所有內(nèi)容都將在其node_modules
文件夾中展平?。這顯然會(huì)消除一些重復(fù)數(shù)據(jù)刪除。
--ignore-scripts
參數(shù)將導(dǎo)致 npm 不執(zhí)行 package.json 中定義的任何腳本。見[npm-scripts](https://www.npmjs.cn/misc/scripts)
。
--legacy-bundling
參數(shù)將導(dǎo)致 npm 安裝包,以便 1.4 之前的 npm 版本,例如 node 0.8 中包含的版本,可以安裝該包。這消除了所有自動(dòng)重復(fù)數(shù)據(jù)刪除。
--link
在某些情況下,該參數(shù)將導(dǎo)致 npm 將全局安裝鏈接到本地??空間。
--no-bin-links
參數(shù)將阻止 npm 為包可能包含的任何二進(jìn)制文件創(chuàng)建符號(hào)鏈接。
--no-optional
參數(shù)將阻止安裝可選的依賴項(xiàng)。
--no-shrinkwrap
參數(shù)將忽略可用的包鎖定或收縮包裝文件并使用 package.json 代替。
--no-package-lock
參數(shù)將阻止 npm 創(chuàng)建?package-lock.json
文件。當(dāng)使用 package-lock 的禁用 npm 運(yùn)行時(shí),安裝時(shí)不會(huì)自動(dòng)修剪您的節(jié)點(diǎn)模塊。
--nodedir=/path/to/node/source
參數(shù)將允許 npm 找到節(jié)點(diǎn)源代碼,以便 npm 可以編譯本機(jī)模塊。
所述--only={prod[uction]|dev[elopment]}
參數(shù)將導(dǎo)致或者僅?devDependencies
或僅非devDependencies
不管要安裝NODE_ENV
。
--no-audit
參數(shù)可用于禁止向配置的注冊(cè)表發(fā)送審計(jì)報(bào)告。有關(guān)[npm-audit](https://www.npmjs.cn/cli/audit)
發(fā)送內(nèi)容的詳細(xì)信息,請(qǐng)參閱。
見[npm-config](https://www.npmjs.cn/misc/config)
。許多配置參數(shù)對(duì)安裝有一些影響,因?yàn)檫@是 npm 所做的大部分工作。
請(qǐng)參閱config幫助文檔。許多配置參數(shù)對(duì)安裝有一些影響,因?yàn)檫@是 npm 所做的大部分工作。
以下這些是與安裝相關(guān)的一些最常見的選項(xiàng)。
true
Boolean
布爾型將已安裝的包作為依賴項(xiàng)保存到 package.json
文件中。
與npm rm
命令一起使用時(shí),從 package.json
中刪除依賴項(xiàng)。
false
true
保存到 package.json 的依賴項(xiàng)將使用確切的版本進(jìn)行配置,而不是使用 npm 的默認(rèn) semver 范圍運(yùn)算符。
false
Boolean
在global
模式下運(yùn)行,以便將包安裝到prefix
?文件夾而不是當(dāng)前工作目錄中。有關(guān)行為差異的更多信息,請(qǐng)參閱NPM 文件夾。
{prefix}/lib/node_modules
文件夾中,而不是當(dāng)前工作目錄中。{prefix}/bin
{prefix}/share/man
false
Boolean
使 npm 以node_modules
與全局node_modules
文件夾相同的布局將包安裝到本地文件夾中。只有你的直接依賴項(xiàng)會(huì)顯示在其中,node_modules
并且它們所依賴的所有內(nèi)容都將在其node_modules
文件夾中展平。這顯然會(huì)消除一些重復(fù)數(shù)據(jù)刪除。如果與 一起使用legacy-bundling
,legacy-bundling
?將是首選。
false
Boolean
使 npm 安裝包,以便 1.4 之前的 npm 版本,例如 node 0.8 中包含的版本,可以安裝該包。這消除了所有自動(dòng)重復(fù)數(shù)據(jù)刪除。如果與global-style
此選項(xiàng)一起使用將是首選。
false
Boolean
如果設(shè)置為true
,并且--legacy-peer-deps
未設(shè)置,則任何沖突peerDependencies
都將被視為安裝失敗,即使 npm 可以根據(jù)非對(duì)等依賴關(guān)系合理猜測(cè)適當(dāng)?shù)慕鉀Q方案。
默認(rèn)情況下,peerDependencies
依賴關(guān)系圖中的深層沖突將使用最近的非對(duì)等依賴項(xiàng)規(guī)范來解決,即使這樣做會(huì)導(dǎo)致某些包接收在其包peerDependencies
對(duì)象中設(shè)置的范圍之外的對(duì)等依賴項(xiàng)。
當(dāng)執(zhí)行此類和覆蓋時(shí),會(huì)打印警告,解釋沖突和所涉及的包。如果--strict-peer-deps
設(shè)置,則此警告被視為失敗。
true
Boolean
如果設(shè)置為 false
則package-lock.json
在安裝時(shí)忽略文件。如果save
為true
,將組織編寫package-lock.json
。
當(dāng)包鎖被禁用時(shí),無關(guān)模塊的自動(dòng)修剪也將被禁用。要?jiǎng)h除禁用包鎖的無關(guān)模塊,請(qǐng)使用npm prune
.
NODE_ENV
環(huán)境變量設(shè)置為 'production',則為'dev?',否則為null
。dev
、optional
或peer
(可多次設(shè)置)要從磁盤上的安裝樹中省略的依賴項(xiàng)類型。
請(qǐng)注意,這些依賴的仍然解決,加入?package-lock.json
或npm-shrinkwrap.json
文件。它們只是沒有物理安裝在磁盤上。
如果包類型同時(shí)出現(xiàn)在--include
和--omit
列表中,則它將被包括在內(nèi)。
如果生成的省略列表包含'dev'
,則NODE_ENV
環(huán)境變量將被設(shè)置'production'
為所有生命周期腳本。
false
Boolean
如果為true
,則 npm 不會(huì)運(yùn)行 package.json
文件中指定的腳本。
請(qǐng)注意,明確用于運(yùn)行特定腳本的命令,例如?npm start
,?npm stop
,?npm restart
,?npm test
, 并且npm run-script
?如果ignore-scripts
已設(shè)置仍將運(yùn)行其預(yù)期腳本,但它們不會(huì)運(yùn)行任何前置或后置腳本。
true
Boolean
當(dāng)為true
時(shí),將審計(jì)報(bào)告與當(dāng)前 npm 命令一起提交到默認(rèn)注冊(cè)表和為范圍配置的所有注冊(cè)表。
true
Boolean
告訴 npm 為包可執(zhí)行文件創(chuàng)建符號(hào)鏈接(或Windows上的.cmd
墊片)。
設(shè)置為 false
使其不這樣做。這可以用來解決一些文件系統(tǒng)不支持符號(hào)鏈接的事實(shí),即使在表面上是 Unix 系統(tǒng)上。
true
Boolean
當(dāng)為true
,在每個(gè)結(jié)尾處顯示消息時(shí),npm install
?確認(rèn)正在尋找資金的依賴項(xiàng)的數(shù)量。
false
Boolean
表示你不希望 npm 進(jìn)行任何更改并且它應(yīng)該只報(bào)告它會(huì)做的事情。這可以被傳遞到任何修改本地安裝,例如,命令的install
,update
,?dedupe
,uninstall
,以及pack
和publish
。
注意:這不是由其他網(wǎng)絡(luò)相關(guān)的命令,如兌現(xiàn)dist-tags
,?owner
等等。
String
(可多次設(shè)置)允許在當(dāng)前項(xiàng)目的已配置工作區(qū)的上下文中運(yùn)行命令,同時(shí)通過僅運(yùn)行此配置選項(xiàng)定義的工作區(qū)進(jìn)行過濾。
workspace
配置的有效值為:
為npm init
命令設(shè)置時(shí),可以將其設(shè)置為尚不存在的工作區(qū)的文件夾,以創(chuàng)建該文件夾并將其設(shè)置為項(xiàng)目中的全新工作區(qū)。
此值不會(huì)導(dǎo)出到子進(jìn)程的環(huán)境中。
false
Boolean
啟用在所有已配置工作區(qū)的上下文中運(yùn)行命令。
此值不會(huì)導(dǎo)出到子進(jìn)程的環(huán)境中。
給定一個(gè)package{dep}
結(jié)構(gòu):A{B,C}, B{C}, C{D}
,這個(gè)算法產(chǎn)生:
A
+-- B
+-- C
+-- D
也就是說,從 B
到 C
的依賴關(guān)系由 A
已經(jīng)導(dǎo)致 C
安裝在更高級(jí)別的事實(shí)得到滿足。D
仍然安裝在頂層,因?yàn)闆]有與它沖突。
對(duì)于A{B,C}, B{C,D@1}, C{D@2}
,該算法產(chǎn)生:
A
+-- B
+-- C
`-- D@2
+-- D@1
由于 B
的 D@1
將安裝在頂層,所以 C
現(xiàn)在必須為自己私下安裝 D@2
。該算法是確定性的,但如果以不同的順序請(qǐng)求安裝兩個(gè)依賴項(xiàng),則可能會(huì)生成不同的樹。
有關(guān)npm 創(chuàng)建的特定文件夾結(jié)構(gòu)的更詳細(xì)說明,請(qǐng)參閱npm-folders。
更多建議: