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


当前回答

如果你正在寻找npm安装的可执行文件,也许因为你想把它放在你的PATH中,你可以简单地这样做

npm bin

or

npm bin -g

其他回答

在早期的NPM版本中,模块总是放在/usr/local/lib/node或者你在.npmrc文件中指定NPM根目录的任何地方。然而,在NPM 1.0+中,模块被安装在两个地方。您可以在/中将模块安装到应用程序的本地。Node_modules或者你可以全局安装它们,这将使用上面的。

更多信息请访问https://github.com/isaacs/npm/blob/master/doc/install.md

如果您试图从代码访问全局目录,则可以从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 list -g

它将为您提供node.js模块已安装的位置。

C:\Users\[Username]\AppData\Roaming\npm

如果您将node.js模块安装在本地文件夹中,您可以键入以下命令来查看位置。

npm list

从文档中可以看出:

包被放到前缀下的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时有用)。

在当地阅读。 全球阅读。

在Ubuntu 14.04中,它们安装在

/usr/lib/node_modules