[英]Where does npm install packages?
有人能告訴我在哪里可以找到使用npm
安裝的 Node.js 模塊嗎?
您可以運行npm list -g
以查看安裝了哪些全局庫以及它們所在的位置。 使用npm list -g | head -1
npm list -g | head -1
用於僅顯示路徑的截斷輸出。 如果您只想顯示主軟件包而不是與其一起安裝的子軟件包 - 您可以使用 - npm list --depth=0
這將顯示所有軟件包並僅獲取全局安裝的軟件包,只需添加 -g ie npm list -g --depth=0
。
在 Unix 系統上,當全局安裝時,它們通常放在/usr/local/lib/node
或/usr/local/lib/node_modules
。 如果將NODE_PATH
環境變量設置為該路徑,則可以通過節點找到模塊。
Windows XP - %USERPROFILE%\\AppData\\npm\\node_modules
Windows 7、8 和 10 - %USERPROFILE%\\AppData\\Roaming\\npm\\node_modules
非全局庫安裝在您當前所在文件夾中的node_modules
子文件夾中。
您可以運行npm list
以查看當前位置已安裝的非全局庫。
npm install -g pm2
- pm2 將被全局安裝。 然后通常會在/usr/local/lib/node_modules
(使用npm root -g
檢查位置。)
npm install pm2
- pm2 將安裝在本地。 然后通常會在/node_modules
的本地目錄中找到它
命令npm root
將告訴您 npm 包的有效安裝目錄。
如果你當前的工作目錄是 node 包或者 node 包的子目錄, npm root
會告訴你本地安裝目錄。 npm root -g
將顯示全局安裝根目錄,無論當前工作目錄如何。
$ npm root -g
/usr/local/lib/node_modules
使用npm root -g
命令查找全局npm
路徑。
$ npm root -g
/usr/local/lib/node_modules
其他答案為您提供特定於平台的響應,但通用的響應是這樣的:
當您使用npm install -g something
安裝全局模塊時,npm 會查找配置變量prefix
以了解模塊的安裝位置。
您可以通過運行npm config get prefix
來獲取該值
要顯示該文件夾中可用的所有全局模塊,請使用npm ls -g --depth 0
( depth 0
不顯示它們的依賴項)。
如果要更改全局模塊路徑,請使用npm config edit
並將prefix = /my/npm/global/modules/prefix
放入文件或使用npm config set prefix /my/npm/global/modules/prefix
。
當您使用諸如nodist 之類的工具時,它們會更改全局 npm 模塊的平台默認安裝路徑。
在 Windows 上,我使用npm list -g
找到它。 默認情況下,我的(全局)包被安裝到C:\\Users\\[Username]\\AppData\\Roaming\\npm
。
如果你正在尋找 npm 安裝的可執行文件,也許是因為你想把它放在你的 PATH 中,你可以簡單地做
npm bin
或者
npm bin -g
不是直接的答案,但可能會有所幫助....
npm 也有一個緩存文件夾,可以通過運行npm config get cache
( %AppData%/npm-cache
在 Windows 上) 找到它。
npm 模塊首先在此處下載,然后復制到 npm 全局文件夾(Windows 上的%AppData%/Roaming/npm
)或項目特定文件夾( your-project/node_modules
)。
所以如果你想跟蹤 npm 包,以及一些如何,所有下載的 npm 包的列表(如果 npm 緩存沒有清理)看看這個文件夾。 文件夾結構為{cache}/{name}/{version}
在較早版本的 NPM 中,模塊始終放置在 /usr/local/lib/node 或您在 .npmrc 文件中指定 npm 根目錄的任何位置。 但是,在 NPM 1.0+ 中,模塊安裝在兩個地方。 您可以在 /.node_modules 中為您的應用程序本地安裝模塊,或者您可以將它們全局安裝,這將使用上述內容。
更多信息可以在https://github.com/isaacs/npm/blob/master/doc/install.md找到
如果模塊是使用全局 ( -g
) 標志安裝的,您可以通過運行來獲取父位置:
npm get prefix
或者
npm ls -g --depth=0
這將打印位置以及已安裝模塊的列表。
要獲得沒有依賴關系的緊湊列表,只需使用
npm list -g --depth 0
最簡單的方法是做
npm 列表 -g
列出軟件包並查看它們的安裝位置。
我已經通過 chololatey 安裝了 npm,所以位置是
C:\\MyProgramData\\chocolatey\\lib\\nodejs.commandline.0.10.31\\tools\\node_modules
C:\\MyProgramData\\ 是巧克力回購位置。
您可以通過命令找到全局安裝的模塊
npm list -g
它將為您提供 node.js 模塊的安裝位置。
C:\Users\[Username]\AppData\Roaming\npm
如果您在文件夾中本地安裝 node.js 模塊,則可以鍵入以下命令以查看位置。
npm list
我在搜索真正的配置時開始發瘋,所以這里是 linux 上所有配置文件的列表:
在窗戶上:
然后在這個文件中配置前綴:
prefix=/usr
前綴在linux中默認為/usr,在windows中默認為${APPDATA}\\npm
節點模塊在 $prefix 樹下,路徑應該包含 $prefix/bin
可能有問題:
/root/.npmrc
!/home/youruser/.npmrc
。npm set -g prefix /usr
它會設置 /etc/npmrc 全局,但不會覆蓋本地以下是查找配置位置所缺少的所有信息。 希望我已經詳盡無遺。
正如其他答案所說,最好的方法是做
npm list -g
但是,如果您安裝了大量npm
包,則此命令的輸出可能會很長並且向上滾動會很痛苦(有時甚至不可能向后滾動那么遠)。
在這種情況下,將輸出通過管道傳輸到more
程序,如下所示
npm list -g | more
從文檔:
在 npm 1.0 中,有兩種安裝方式:
全局 --- 這將模塊放在
{prefix}/lib/node_modules
,並將可執行文件放在{prefix}/bin
,其中{prefix}
通常類似於/usr/local
。 它還會在{prefix}/share/man
安裝手冊頁(如果提供的話)。本地 --- 這會將您的軟件包安裝在當前工作目錄中。 節點模塊在
./node_modules
,可執行文件在./node_modules/.bin/
,並且根本沒有安裝手冊頁。
您可以使用npm config get prefix
獲取您的{prefix}
。 (當您使用 nvm 安裝節點時很有用)。
Windows 10 :當我運行npm prefix -g
,我注意到安裝位置在我用來安裝的 git shell 路徑內。 即使將該位置添加到路徑中,也無法識別來自全局安裝包的命令。 修正者:
npm config edit
回顯配置: npm config ls
或npm config list
顯示所有配置設置: npm config ls -l
或npm config ls --json
打印有效的node_modules文件夾: npm root
或npm root -g
打印本地前綴: npm prefix
或npm prefix -g
(這是包含package.json文件或node_modules目錄的最近父目錄)
在 Ubuntu 14.04 中,它們安裝在
/usr/lib/node_modules
從文檔:
包被放入前綴下的 node_modules 文件夾中。 在本地安裝時,這意味着您可以使用 require("packagename") 加載其主模塊,或使用 require("packagename/lib/path/to/sub/module") 加載其他模塊。
Unix 系統上的全局安裝轉到 {prefix}/lib/node_modules。 Windows 上的全局安裝轉到 {prefix}/node_modules(即沒有 lib 文件夾。)
作用域包的安裝方式相同,除了它們被組合在相關 node_modules 文件夾的子文件夾中,該文件夾的名稱由 @ 符號命名,例如 npm install @myorg/package 會將包放在 {prefix} /node_modules/@myorg/package. 有關更多詳細信息,請參閱范圍。
如果您希望 require() 一個包,請在本地安裝它。
您可以使用npm config get prefix
獲取您的{prefix}
。 (當您使用 nvm 安裝節點時很有用)。
擴展其他答案。
npm list -g
將顯示全局安裝包的位置。
如果您想將該列表輸出到一個文件中,然后您可以在文本編輯器中輕松搜索:
npm list -g > ~/Desktop/npmfiles.txt
如果您嘗試從代碼訪問全局目錄,則可以從process.execPath
回溯。 例如,要查找wsproxy
,這是{NODE_GLOBAL_DIR}/bin/wsproxy
,你可以:
path.join(path.dirname(process.execPath), 'wsproxy')
還有npm
cli 的工作方式@ ec9fcc1
/lib/npm.js#L254 :
path.resolve(process.execPath, '..', '..')
另見ec9fcc1
/lib/install.js#L521 :
var globalPackage = path.resolve(npm.globalPrefix,
'lib', 'node_modules', moduleName(pkg))
凡globalPrefix
有一個默認的集ec9fcc1
/lib/config/defaults.js#L92-L105的:
if (process.env.PREFIX) {
globalPrefix = process.env.PREFIX
} else if (process.platform === 'win32') {
// c:\node\node.exe --> prefix=c:\node\
globalPrefix = path.dirname(process.execPath)
} else {
// /usr/local/bin/node --> prefix=/usr/local
globalPrefix = path.dirname(path.dirname(process.execPath))
// destdir only is respected on Unix
if (process.env.DESTDIR) {
globalPrefix = path.join(process.env.DESTDIR, globalPrefix)
}
}
順便說一句,如果在本地找不到,npm 將在父文件夾中查找 node_modules(直到非常根目錄)。
Windows 7、8 和 10 - %USERPROFILE%\\AppData\\Roaming\\npm\\node_modules。
注意:如果您在文件夾中的某個位置,請鍵入cd ..
直到您在C:
目錄中。 然后,鍵入cd %USERPROFILE%\\AppData\\Roaming\\npm\\node_modules
。 而且,神奇地%USERPROFILE%
會變成Users\\YourUserProfile\\
。 我只是想澄清一下Decko
在第一反應中提到的想法。 npm list -g
將列出您全局安裝的所有位。 如果您需要找到與項目相關的npm package
則cd 'your angular project xyz'
,然后運行npm list
。 它將顯示npm package
中的模塊列表。 它還會為您提供缺少的dependencies
列表,您可能需要有效地運行該項目。
如果您安裝了 Visual Studio,您會發現它帶有自己的節點副本,與您自己安裝節點時路徑上的副本分開 - 我的位於 C:\\Program Files (x86)\\Microsoft Visual Studio\\2019 \\Community\\MSBuild\\Microsoft\\VisualStudio\\NodeJs。
如果您從該目錄中運行 npm 命令,您將發現 Visual Studio 中安裝了哪些節點模塊。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.