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


当前回答

我在寻找真正的配置时开始发狂,所以这里是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全局,但不会覆盖本地

这里是所有缺失的信息,以查找在哪里配置了什么。希望我讲得够详尽了。

其他回答

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

列出软件包并查看其安装位置。

我已经通过chololatey安装了npm,所以位置是

C: \ MyProgramData \巧克力色\ lib \ nodejs.commandline.0.10.31 \ \ node_modules工具

C:\MyProgramData\是巧克力回购位置。

Windows 10:当我运行npm prefix -g时,我注意到安装位置在我用来安装的git shell路径内。即使将该位置添加到路径中,来自全局安装包的命令也不会被识别。固定:

运行NPM配置编辑 将前缀改为“C:\Users\username\AppData\Roaming\npm” 将该路径添加到系统路径变量中 使用-g重新安装包。