Node.js 我可以从全局安装的包访问本地安装的包吗?

Node.js 我可以从全局安装的包访问本地安装的包吗?,node.js,package,npm,Node.js,Package,Npm,我不知道我是否恰当地表达了这个问题,所以如果从标题上看不清楚我的意思,我道歉 假设我有一个安装可执行文件的NPM包。大概我希望用户安装带有-g标志的这个包,这样他们就可以随时运行它 在这种情况下,当我从可执行文件中调用require()时,它将查找全局安装的包 但假设此包为节点项目提供了通用功能。我可能想知道当前项目在本地安装了哪些包。我是否应该假设: path.join(process.cwd(), 'node_modules') 或者在这种情况下,是否有更“正确”的方法来设置节点路径?(或

我不知道我是否恰当地表达了这个问题,所以如果从标题上看不清楚我的意思,我道歉

假设我有一个安装可执行文件的NPM包。大概我希望用户安装带有
-g
标志的这个包,这样他们就可以随时运行它

在这种情况下,当我从可执行文件中调用
require()
时,它将查找全局安装的包

但假设此包为节点项目提供了通用功能。我可能想知道当前项目在本地安装了哪些包。我是否应该假设:

path.join(process.cwd(), 'node_modules')

或者在这种情况下,是否有更“正确”的方法来设置节点路径?(或者不设置节点路径,我应该只
require(绝对路径到文件)
?)

require
不仅会在
$(CWD)\NODE\u模块
内查找包,还会在父、祖、母等的所有
节点\u模块
内查找包。因此,您可以在npm上使用
解决
来解决此问题

文件:your_global_command.js

// npm install resolve
var resolve = require('resolve').sync;

// Lookup for local module at current working dir
function require_cwd(name) {
    var absolute_path = resolve(name, { basedir: process.cwd() });
    return require(absolute_path);
}

// Load local express
// this will throw an error when express is not found as local module
var express = require_cwd('express');

我还创建了一个包,以在当前工作目录下需要一个包(而不是模块的
\uu dirname
):
var resolve=require('resolve');sync('packageName',{basedir:process.cwd()})这里的好例子:@damphat:Nice。如果你能提供答案,我将完全接受。