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