npm
安装的Node.js模块吗?#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
的本地目录中找到它评论
如果您使用的是nvm,则根据当时所使用的节点版本,全局模块可能位于多个位置之一。最好的方法是使用npm list -g,如另一个答案中所建议。
–无法描述
2014年11月7日19:05
对我不起作用,仅显示bin文件夹。 “ npm root -g”确实有效。
–惠特尼乐园
2015年9月19日下午13:24
在Arch linux下,全局模块在/ usr / lib下。 “ npm --help”将确切位置显示为输出的最后一行,例如:npm@3.6.0 / usr / lib / node_modules / npm
–格雷戈
16-2-2在13:48
对于Windows 10,放置在%USERPROFILE%\ AppData \ Roaming \ npm \ node_modules中
– Nirmal Goswami
16-10-23在11:43
“ npm root -g”是正确的-列表可能有效,但信息太多,因为其他命令仅提供了您要查找的确切位置。 stackoverflow.com/a/24295332/174965
–亚当·托利(Adam Tolley)
17年2月13日在15:36
#2 楼
命令npm root
会告诉您npm软件包的有效安装目录。如果当前工作目录是节点软件包或节点软件包的子目录,则
npm root
会告诉您本地安装目录。 npm root -g
将显示全局安装根目录,而与当前工作目录无关。 示例:
$ npm root -g
/usr/local/lib/node_modules
请参阅文档。
评论
对此答案+1(至少在Linux Mint 17 Qianna和npm 3.9.5下)。我的全局node_modules文件夹位于/ usr / local / lib / node_modules中。当我执行sudo npm时,请卸载browserify -g(假设我之前已经完成sudo npm install browserify -g),它将从那里删除它。
– nik_m
16年7月1日在4:41
这是一个非常有用的答案,因为输出适合于编写较大的命令,而无需从一堆输出中提取路径。
–亚当·托利(Adam Tolley)
17年3月31日在22:12
Windows操作系统上的默认根目录为C:\ Users \ YOUR_USER_NAME \ AppData \ Roaming \ npm \ node_modules
–唐文森
18-3-26在16:04
对于MacOS Mojave 10.14.5,它也是/ usr / local / lib / node_modules
– Jim Aho
19年6月14日在15:14
#3 楼
对于全局安装的模块:其他答案为您提供特定于平台的响应,但是通用的答案是:
当您使用
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模块的平台默认安装路径。
评论
您回答了我的后续问题:“有人可以告诉我如何更改Node.js模块的位置吗?”注意:这对我很重要的原因是,这样我就不必再次更改PATH。我对npmrc文件中打开{npm config get prefx}的默认建议未加注释。
–HeyZiko
16-10-3在20:22
#4 楼
在Windows上,我使用npm list -g
找出了问题。默认情况下,我的(全局)软件包已安装到C:\Users\[Username]\AppData\Roaming\npm
。评论
仅供参考-这是执行用户的%appdata%\ npm
–费利克斯
16年1月14日在9:35
#5 楼
如果您正在寻找npm安装的可执行文件,也许是因为您想将其放在PATH中,则只需执行npm bin
或
npm bin -g
评论
如果您已经全局安装了npm软件包,其中节点是使用自制软件安装的,然后使用npm本身更新了npm,则可能会遇到找不到命令的错误。如果是这样,请将以上内容添加到您的PATH中:export PATH = $ PATH:$(npm bin -g)瞧
–雅各布
18-11-5在11:20
#6 楼
在早期版本的NPM中,模块始终放置在/ usr / local / lib / node或在.npmrc文件中指定npm根目录的任何位置。但是,在NPM 1.0+中,模块安装在两个位置。您可以在/.node_modules中将模块安装到应用程序本地,也可以在全局安装它们,以使用上述模块。有关更多信息,请访问https://github.com/isaacs/ npm / blob / master / doc / install.md
评论
注意事项-1.0模块存储在/ usr / local / lib / node_modules中。
–尼克·坎贝尔
2011年5月13日在1:23
@EricSmith您的链接也断开了
–nicolimo86
19-09-30在9:50
答案链接无效-“ 404 |未找到页面”。
–庞
8月22日1:50
#7 楼
不是直接答案,但可能会有所帮助....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
#8 楼
要获得没有依赖性的紧凑列表,只需使用npm list -g --depth 0
#9 楼
如果安装了带有全局(-g
)标志的模块,则可以通过运行以下命令获取父位置: npm get prefix
or
npm ls -g --depth=0
,它将打印位置以及已安装模块的列表。
#10 楼
最简单的方法是执行npm list -g
以列出软件包并查看其安装位置。
我已经通过chololatey安装了npm,因此位置为
C:\ MyProgramData \ chocolatey \ lib \ nodejs.commandline.0.10.31 \ tools \ node_modules
C:\ MyProgramData \是巧克力回购位置。
#11 楼
您可以通过以下命令找到全局安装的模块npm list -g
,它将为您提供安装node.js模块的位置。
C:\Users\[Username]\AppData\Roaming\npm
如果将Node.js模块本地安装在文件夹中,则可以键入以下命令以查看位置。
npm list
#12 楼
我开始发疯寻找真正的配置,所以这是Linux上所有配置文件的列表:/ etc / npmrc
/home/youruser/.npmrc
/root/.npmrc
在Windows上:
-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全局,但不会不要覆盖本地这里缺少了所有信息以查找在何处配置的内容。希望我已经面面俱到。
评论
永远不要搜索/root/.npmrc,因为使用npm的sudo是一种不好的做法,即使某些教程提到了它。您忘记在package.json文件旁边的目录中提及.npmrc。
–西里尔·庞特维
10月28日20:43
#13 楼
在docs中:在npm 1.0中,有两种安装方法:
全局安装-将模块放置在
{prefix}/lib/node_modules
中,并且将可执行文件放在{prefix}/bin
中,其中{prefix}
通常是/usr/local
之类的东西。如果提供了手册页,也可以在{prefix}/share/man
中安装。在本地—将您的软件包安装在当前工作目录中。节点模块放入
./node_modules
中,可执行文件放入./node_modules/.bin/
中,并且根本没有安装手册页。您可以使用
{prefix}
来获得npm config get prefix
。 (在使用nvm安装节点时很有用)。#14 楼
Windows 10:运行npm prefix -g
时,我注意到安装位置在我以前安装的git shell路径内。即使将该位置添加到路径中,也无法识别来自全局安装软件包的命令。已解决:运行
npm config edit
将前缀更改为'C:\ Users \ username \ AppData \ Roaming \ npm'
将该路径添加到系统路径variable
-g重新安装软件包。
评论
谢谢先生,这是我遇到的真正问题
–库拉姆·纳瓦兹(Khuram Nawaz)
8月9日7:59
#15 楼
从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()软件包,请在本地安装。
您可以使用
{prefix}
获得npm config get prefix
。 (在使用nvm安装节点时很有用)。本地了解。
全局了解。
#16 楼
在Ubuntu 14.04中,它们安装在/usr/lib/node_modules
#17 楼
扩展其他答案。npm list -g
将向您显示全局安装的软件包的位置。
如果要将列表输出到文件,则可以在文本编辑器中轻松搜索:
npm list -g > ~/Desktop/npmfiles.txt
#18 楼
就像其他答案说的那样,最好的方法是执行npm list -g
但是,如果您安装了很多
npm
软件包,则此命令的输出可能会很长,并且滚动起来会很麻烦(有时甚至无法向后滚动)。在这种情况下,将输出通过管道传递到
more
程序,就像这样npm list -g | more
#19 楼
顺便说一句,如果在本地找不到npm,npm会在父文件夹中查找node_modules(最高为root)。#20 楼
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
缺少的列表,您可能需要有效地运行该项目。#21 楼
如果您尝试从代码访问全局目录,则可以从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)
}
}
评论
这应该如何工作?例如,Node二进制文件位于/ usr / bin / node,但是显然(因为这是bin),模块不存在;相反,它们位于/ usr / lib / node_modules。
–弗洛里安·拉普尔(Florian Rappl)
19年9月8日在3:49
参考npm实施进行了更新
– A T
19年9月9日在9:08
现在这是另一个故事了;您引入了平台(好的)和相应的env变量(尽管未提及诸如moduleName之类的重要功能,但是我想普通读者将能够得出结论)。感谢您的修改/更正!
–弗洛里安·拉普尔(Florian Rappl)
19-09-14在6:21
#22 楼
如果已安装Visual Studio,则将发现它带有自己的节点副本,该副本与您自己安装节点时路径上的副本分开-我的文件夹位于C:\ Program Files(x86)\ Microsoft Visual Studio \ 2019中\ Community \ MSBuild \ Microsoft \ VisualStudio \ NodeJs。如果从此目录中运行npm命令,则会发现Visual Studio中安装了哪些节点模块。
#23 楼
回显配置:
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目录的最接近的父目录)
npm-config | npm文档
npm-root | npm文档
npm-prefix | npm文档
评论
在Linux mint上,它是$ HOME / .npm-global / lib / node_modules众所周知,不带-g选项安装将在您的工作目录中安装一个模块,例如如果您将目录说成〜/ Desktop / tmp然后cd〜/ Desktop / tmp然后执行npm install appium然后执行ls,您将看到node_modules package-lock.json,因为您已经在工作目录中安装了节点模块appium。超级令人困惑,因为-g本质上应该是默认值,而不是默认值。
@the_prole-谢谢,这非常有用。
@the_prole同意。假的默认行为肯定……提示。