有人能告诉我在哪里可以找到我用npm安装的Node.js模块吗?
全球图书馆
你可以运行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版本中,模块总是放在/usr/local/lib/node或者你在.npmrc文件中指定NPM根目录的任何地方。然而,在NPM 1.0+中,模块被安装在两个地方。您可以在/中将模块安装到应用程序的本地。Node_modules或者你可以全局安装它们,这将使用上面的。
更多信息请访问https://github.com/isaacs/npm/blob/master/doc/install.md
在windows上,我使用npm list -g来查找它。默认情况下,我的(全局)包被安装到C:\Users\[Username]\AppData\Roaming\npm。
命令npm root会告诉你npm包的有效安装目录。
如果你当前的工作目录是一个节点包或者是一个节点包的子目录,npm root会告诉你本地安装目录。不管当前工作目录是什么,NPM root -g都会显示全局安装根目录。
例子:
$ npm root -g
/usr/local/lib/node_modules
请参见文档。
最简单的方法就是去做
NPM list
列出软件包并查看其安装位置。
我已经通过chololatey安装了npm,所以位置是
C: \ MyProgramData \巧克力色\ lib \ nodejs.commandline.0.10.31 \ \ node_modules工具
C:\MyProgramData\是巧克力回购位置。
对于全局安装的模块:
其他答案给出了特定于平台的回答,但一个通用的回答是:
当你用npm install -g something安装全局模块时,npm会查找一个配置变量前缀来知道该在哪里安装模块。
你可以通过运行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模块的平台默认安装路径。
正如其他答案所说,最好的办法就是去做
npm list -g
然而,如果你安装了大量的npm包,这个命令的输出可能会很长,而且要向上滚动很痛苦(有时甚至不可能滚动那么远)。
在这种情况下,将输出输送到more程序,如下所示
npm list -g | more
从文档中可以看出:
在npm 1.0中,有两种方法来安装东西: global——将模块放在{prefix}/lib/node_modules中,并将可执行文件放在{prefix}/bin中,{prefix}通常在这里 类似于/usr/local。它还在其中安装手册页 {prefix}/share/man,如果它们被提供。 local——将包安装在当前工作目录中。节点模块进入。/node_modules,可执行文件进入 ./node_modules/.bin/和手册页根本没有安装。
你可以通过npm config get prefix获取{prefix}。(当你用nvm安装node时有用)。
如果一个模块安装时带有global (-g)标志,你可以通过运行以下命令获取父模块的位置:
npm get prefix
or
npm ls -g --depth=0
它将打印位置以及已安装模块的列表。
从文档中可以看出:
包被放到前缀下的node_modules文件夹中。 在本地安装时,这意味着您可以 Require ("packagename")加载它的主模块,或者 Require ("packagename/lib/path/to/sub/module")加载其他模块。 Unix系统的全局安装路径为{prefix}/lib/node_modules。 Windows上的全局安装到{prefix}/node_modules(即no lib文件夹)。 作用域包以相同的方式安装,只是它们是分组的 一起放在相关node_modules文件夹的子文件夹中 用@符号表示作用域前缀的名称,例如NPM install @myorg/package将把包放在 {前缀}/ node_modules / @myorg包。参见范围了解更多细节。 如果您希望需要()一个包,那么在本地安装它。
你可以通过npm config get prefix获取{prefix}。(当你用nvm安装node时有用)。
在当地阅读。 全球阅读。
不是直接的回答,但可能会有帮助....
npm也有一个缓存文件夹,可以通过运行npm config get cache (%AppData%/npm-cache)找到。
npm模块首先在这里下载,然后复制到npm全局文件夹(%AppData%/Roaming/npm在Windows上)或项目特定的文件夹(your-project/node_modules)。
因此,如果你想跟踪npm包,以及以某种方式,所有下载的npm包的列表(如果npm缓存没有被清理)可以看看这个文件夹。文件夹结构为{cache}/{name}/{version}
这可能也有帮助https://docs.npmjs.com/cli/cache
您可以通过该命令找到全局安装的模块
npm list -g
它将为您提供node.js模块已安装的位置。
C:\Users\[Username]\AppData\Roaming\npm
如果您将node.js模块安装在本地文件夹中,您可以键入以下命令来查看位置。
npm list
如果您试图从代码访问全局目录,则可以从process.execPath返回。例如,要找到wsproxy,它在{NODE_GLOBAL_DIR}/bin/wsproxy中,你可以:
path.join(path.dirname(process.execPath), 'wsproxy')
这里还有npm命令行的工作方式@ 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)
}
}
Windows 10:当我运行npm prefix -g时,我注意到安装位置在我用来安装的git shell路径内。即使将该位置添加到路径中,来自全局安装包的命令也不会被识别。固定:
运行NPM配置编辑 将前缀改为“C:\Users\username\AppData\Roaming\npm” 将该路径添加到系统路径变量中 使用-g重新安装包。
适用于Windows 7、8和10 - % USERPROFILE % \ AppData \ \ npm \ node_modules徘徊
注意:
如果你在文件夹cd ..直到进入C:目录。然后输入cd %USERPROFILE%\AppData\Roaming\npm\node_modules。然后,神奇的是,%USERPROFILE%将变成Users\YourUserProfile\。
我只是想澄清Decko在第一次回复中提到的想法。NPM list -g将列出你已全局安装的所有位。如果你需要找到你的项目相关的npm包,那么cd 'your angular project xyz',然后运行npm list。它将显示npm包中的模块列表。它还将为您提供缺失的依赖项列表,您可能需要有效地运行该项目。
扩展其他答案。
npm list -g
将显示全局安装包的位置。
如果你想把这个列表输出到一个文件中,你可以很容易地在你的文本编辑器中搜索:
npm list -g > ~/Desktop/npmfiles.txt
如果你安装了VisualStudio,你会发现它有自己的节点副本,与你自己安装节点时路径上的节点副本分开-我的在C:\Program Files (x86)\Microsoft VisualStudio\ 2019\Community\MSBuild\Microsoft\VisualStudio\NodeJs中。
如果你在这个目录中运行npm命令,你会发现visual studio中安装了哪些节点模块。
我在寻找真正的配置时开始发狂,所以这里是linux上所有配置文件的列表:
/etc/npmrc /home/youruser/.npmrc /root/.npmrc 。/。NPMRC在当前目录下的包旁边。json文件(感谢@CyrillePontvieux)
在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全局,但不会覆盖本地
这里是所有缺失的信息,以查找在哪里配置了什么。希望我讲得够详尽了。
回显config: npm config ls或npm config列表 显示所有的配置设置:npm config ls -l或npm config ls——json 打印有效的node_modules文件夹:npm root或npm root -g 打印本地前缀:npm prefix或npm prefix -g (这是最接近包含包的父目录。Json文件或node_modules目录)
npm-config | npm文档 npm-root | npm文档 npm-prefix | npm文档
推荐文章
- 什么时候JavaScript是同步的?
- DeprecationWarning:当我将脚本移动到另一个服务器时,由于安全性和可用性问题,Buffer()已弃用
- 我如何确定正确的“max-old-space-size”为Node.js?
- 如何在Typescript中解析JSON字符串
- Javascript reduce()在对象
- 在angularJS中& vs @和=的区别是什么
- 错误"Uncaught SyntaxError:意外的标记与JSON.parse"
- JavaScript中的querySelector和querySelectorAll vs getElementsByClassName和getElementById
- 给一个数字加上st, nd, rd和th(序数)后缀
- 如何以编程方式触发引导模式?
- setTimeout带引号和不带括号的区别
- 在JS的Chrome CPU配置文件中,'self'和'total'之间的差异
- 用javascript检查输入字符串中是否包含数字
- 如何使用JavaScript分割逗号分隔字符串?
- 在Javascript中~~(“双波浪号”)做什么?