有人可以告诉我在哪里可以找到使用npm安装的Node.js模块吗?

评论

在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同意。假的默认行为肯定……提示。

#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 0depth 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))


哪里globalPrefixec9fcc1 /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 lsnpm config list


显示所有配置设置:npm config ls -lnpm config ls --json


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


打印本地前缀:npm prefixnpm prefix -g
(这是包含package.json文件或node_modules目录的最接近的父目录)




npm-config | npm文档
npm-root | npm文档
npm-prefix | npm文档