有人能告诉我在哪里可以找到我用npm安装的Node.js模块吗?
当前回答
正如其他答案所说,最好的办法就是去做
npm list -g
然而,如果你安装了大量的npm包,这个命令的输出可能会很长,而且要向上滚动很痛苦(有时甚至不可能滚动那么远)。
在这种情况下,将输出输送到more程序,如下所示
npm list -g | more
其他回答
如果您试图从代码访问全局目录,则可以从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上,我使用npm list -g来查找它。默认情况下,我的(全局)包被安装到C:\Users\[Username]\AppData\Roaming\npm。
正如其他答案所说,最好的办法就是去做
npm list -g
然而,如果你安装了大量的npm包,这个命令的输出可能会很长,而且要向上滚动很痛苦(有时甚至不可能滚动那么远)。
在这种情况下,将输出输送到more程序,如下所示
npm list -g | more
从文档中可以看出:
包被放到前缀下的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 root会告诉你npm包的有效安装目录。
如果你当前的工作目录是一个节点包或者是一个节点包的子目录,npm root会告诉你本地安装目录。不管当前工作目录是什么,NPM root -g都会显示全局安装根目录。
例子:
$ npm root -g
/usr/local/lib/node_modules
请参见文档。