簡體   English   中英

npm 在哪里安裝包?

[英]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以查看當前位置已安裝的非全局庫。

安裝時使用 -g 選項全局安裝

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 0depth 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}

這也可能有幫助https://docs.npmjs.com/cli/cache

在較早版本的 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 上所有配置文件的列表:

  • /etc/npmrc
  • /home/你的用戶/.npmrc
  • /root/.npmrc
  • ./.npmrc 在 package.json 文件旁邊的當前目錄中(感謝@CyrillePontvieux)

在窗戶上:

  • c/Program\\ Files/nodejs/node_modules/npm/npmrc

然后在這個文件中配置前綴:

prefix=/usr

前綴在linux中默認為/usr,在windows中默認為${APPDATA}\\npm

節點模塊在 $prefix 樹下,路徑應該包含 $prefix/bin

可能有問題:

  • 當您全局安裝時,您使用“sudo su”然后可以使用/root/.npmrc
  • 當您在沒有 sudo 的情況下在本地使用時:對於您的用戶,它是/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 路徑內。 即使將該位置添加到路徑中,也無法識別來自全局安裝包的命令。 修正者:

  1. 運行npm config edit
  2. 將前綴更改為 'C:\\Users\\username\\AppData\\Roaming\\npm'
  3. 將該路徑添加到系統路徑變量
  4. 使用 -g 重新安裝軟件包。
  • 回顯配置: npm config lsnpm config list

  • 顯示所有配置設置: npm config ls -lnpm config ls --json

  • 打印有效的node_modules文件夾: npm rootnpm root -g

  • 打印本地前綴: npm prefixnpm 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 packagecd '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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM