我希望能够通过编程找到npm安装全局模块的文件夹。 这个问题类似,但是答案不适用于全局安装的模块:如何以程序方式获取npm安装的模块的详细信息?
prefix
属性,最好依靠npm来确定全局安装目录,方法是使用npm root
。$ npm root -g
const { exec } = require('child_process')
const { promisify } = require('util');
async function main() {
let execAsync = promisify(exec);
let { stdout: globalPath } = await execAsync("npm root -g");
console.log(globalPath);
}
或者,为了以编程方式访问npm模块,您需要在本地安装它:
$ npm i npm --save
const npm = require("npm")
const { promisify } = require('util');
async function main() {
await promisify(npm.load)()
let globalPath = npm.root
console.log(globalPath)
}
来自nodejs网站:
全局 - 这将在{prefix}/lib/node_modules中删除模块,并将可执行文件放入{prefix}/bin中,其中{prefix}通常类似于/usr/local。如果提供,它还会在{prefix}/share/man中安装手册页。
要获取前缀,请输入:
npm config get prefix
编辑:
如果要从Node中执行此操作,请使用npm npm模块。以下代码可以正常工作:
var npm = require("npm")
var myConfigObject = {}
npm.load(myConfigObject, function (er) {
if (er) return handleError(er)
console.log(npm.get('prefix'));
})
const { resolve } = require('path')
const globalPath = resolve(process.execPath, '../../lib/node_modules')
npm.prefix
),B)它返回的前缀是本地模块安装的前缀,而不是全局安装的前缀。 - B T