谁能告诉我在哪里可以找到我使用 npm
安装的 Node.js 模块?
$HOME/.npm-global/lib/node_modules
-g
选项的安装会将模块安装到您的工作目录,例如,如果您创建一个目录说 ~/Desktop/tmp
然后 cd ~/Desktop/tmp
然后执行 npm install appium
然后执行 ls
您将看到 node_modules package-lock.json
因为您已将节点模块 appium
安装到 working directory
... 非常令人困惑,因为 -g
本质上应该是 default
但不是。
npm config get prefix
(stackoverflow.com/a/32159233/2361131)
$HOME/.nvm/versions/node/v15.9.0/lib
下,目录将根据您使用的节点版本而改变。有关 nvm 的更多信息,请参阅 github.com/nvm-sh/nvm/blob/master/README.md。如所选答案中所述,我找到了带有 npm list -g | head -1
的此目录。
全球图书馆
您可以运行 npm list -g
来查看安装了哪些全局库以及它们的位置。使用 npm list -g | head -1
截断输出,只显示路径。如果您只想显示主包而不是与它一起安装的子包 - 您可以使用 - npm list --depth=0
它将显示所有包并仅获取全局安装的包,只需添加 -g 即 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 包的有效安装目录。
如果您当前的工作目录是节点包或节点包的子目录,npm root
将告诉您本地安装目录。 npm root -g
将显示全局安装根目录,而不考虑当前工作目录。
例子:
$ 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
command not found
错误。如果是这样,请将以上内容添加到您的 PATH:export PATH=$PATH:$(npm bin -g)
瞧
不是直接回答,但可能会有所帮助....
npm 还有一个缓存文件夹,可以通过运行 npm config get cache
(Windows 上的 %AppData%/npm-cache
)找到它。
npm 模块首先在此处下载,然后复制到 npm 全局文件夹(Windows 上的 %AppData%/Roaming/npm
)或项目特定文件夹 (your-project/node_modules
)。
因此,如果您想跟踪 npm 包以及如何跟踪所有下载的 npm 包列表(如果未清理 npm 缓存),请查看此文件夹。文件夹结构为 {cache}/{name}/{version}
这也可能有助于https://docs.npmjs.com/cli/cache
如果使用全局 (-g
) 标志安装了模块,您可以通过运行以下命令获取父位置:
npm get prefix
或者
npm ls -g --depth=0
这将打印位置以及已安装模块的列表。
在早期版本的 NPM 模块中,总是放置在 /usr/local/lib/node 或您在 .npmrc 文件中指定 npm 根目录的任何位置。但是,在 NPM 1.0+ 中,模块安装在两个地方。您可以在 /.node_modules 中将模块安装到您的应用程序本地,也可以将它们安装在全局范围内,这将使用上述内容。
如需更多信息,请访问 https://github.com/isaacs/npm/blob/master/doc/install.md
要获得没有依赖关系的紧凑列表,只需使用
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/youruser/.npmrc
/root/.npmrc
./.npmrc 在 package.json 文件旁边的当前目录中(感谢@CyrillePontvieux)
在窗户上:
c/程序\文件/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 全局,但不会覆盖本地
这是查找在何处配置的内容所缺少的所有信息。希望我已经详尽无遗。
/root/.npmrc
,因为即使某些教程提到了带有 npm
的 sudo
,它也是一种不好的做法。您忘记在 package.json
文件旁边的目录中提及 .npmrc
。
正如其他答案所说,最好的方法是
npm list -g
但是,如果您安装了大量 npm
软件包,则此命令的输出可能会很长,并且向上滚动会非常痛苦(有时甚至无法向后滚动那么远)。
在这种情况下,将输出通过管道传输到 more
程序,如下所示
npm list -g | more
扩展其他答案。
npm list -g
将显示全局安装包的位置。
如果您想将该列表输出到一个文件,您可以在文本编辑器中轻松搜索:
npm list -g > ~/Desktop/npmfiles.txt
回显配置: npm config ls 或 npm config list
显示所有配置设置: npm config ls -l 或 npm config ls --json
打印有效的 node_modules 文件夹: npm root 或 npm root -g
打印本地前缀:npm 前缀或 npm 前缀 -g(这是包含 package.json 文件或 node_modules 目录的最近父目录)
npm 配置 | npm 文档
npm 根 | npm 文档
npm 前缀 | npm 文档
从 docs:
在 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 将前缀更改为 'C:\Users\username\AppData\Roaming\npm' 将该路径添加到系统路径变量中,使用 -g 重新安装包。
从 docs:
包被放入前缀下的 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 安装节点时很有用)。
在 Ubuntu 14.04 中,它们安装在
/usr/lib/node_modules
顺便说一句,如果在本地找不到,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
列表,您可能需要有效地运行该项目。
如果您尝试从代码访问全局目录,则可以从 process.execPath
回溯。例如,要查找 {NODE_GLOBAL_DIR}/bin/wsproxy
中的 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)
}
}
/usr/bin/node
,但显然(因为这是 bin)模块不存在;相反,它们位于 /usr/lib/node_modules
。
npm
实现进行了更新
如果您安装了 Visual Studio,您会发现它带有自己的节点副本,与您自己安装节点时路径上的副本不同 - 我的位于 C:\Program Files (x86)\Microsoft Visual Studio\2019 \Community\MSBuild\Microsoft\VisualStudio\NodeJs。
如果你从这个目录中运行 npm 命令,你会发现 Visual Studio 中安装了哪些节点模块。
不定期副业成功案例分享
npm list -g
。%USERPROFILE%\AppData\Roaming\npm\node_modules