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


当前回答

适用于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包中的模块列表。它还将为您提供缺失的依赖项列表,您可能需要有效地运行该项目。

其他回答

如果一个模块安装时带有global (-g)标志,你可以通过运行以下命令获取父模块的位置:

npm get prefix

or

npm ls -g --depth=0

它将打印位置以及已安装模块的列表。

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

从文档中可以看出:

包被放到前缀下的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 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 list -g

然而,如果你安装了大量的npm包,这个命令的输出可能会很长,而且要向上滚动很痛苦(有时甚至不可能滚动那么远)。

在这种情况下,将输出输送到more程序,如下所示

npm list -g | more