有人能告诉我在哪里可以找到我用npm安装的Node.js模块吗?
当前回答
如果您试图从代码访问全局目录,则可以从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)
}
}
其他回答
如果你正在寻找npm安装的可执行文件,也许因为你想把它放在你的PATH中,你可以简单地这样做
npm bin
or
npm bin -g
全球图书馆
你可以运行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的本地目录中找到它
在Ubuntu 14.04中,它们安装在
/usr/lib/node_modules
对于全局安装的模块:
其他答案给出了特定于平台的回答,但一个通用的回答是:
当你用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版本中,模块总是放在/usr/local/lib/node或者你在.npmrc文件中指定NPM根目录的任何地方。然而,在NPM 1.0+中,模块被安装在两个地方。您可以在/中将模块安装到应用程序的本地。Node_modules或者你可以全局安装它们,这将使用上面的。
更多信息请访问https://github.com/isaacs/npm/blob/master/doc/install.md