您好我想从目录中的npm模块获取npm模块。由于它们涉及的依赖性,全局模块不是解决方案。我想拥有一个包含我已下载的所有模块的容器,并将require
重定向到该目录而不是当前目录。这样我的所有项目都可以在相对路径中搜索模块,例如../
。
答案 0 :(得分:1)
您可以在这里使用npm link
。
例如,
假设您在package.json
中有10个本地节点包存储库(每个包中都有/User/you/modules
),并且您的项目位于/User/you/project
。
您需要做的就是将/User/you/modules
目录中的所有模块链接到/User/you/project
。
cd /User/you/project
find /User/you/modules/* -type d -maxdepth 0 -exec npm link {} \;
现在,您可以使用/User/you/modules
中/User/you/project
的所有模块,而无需相对路径。
所以,你现在可以;
require('package-name')
package-name
取自package.json
,而不取自目录名。
而不是;
require('../modules/package-name')
干杯。
答案 1 :(得分:0)
您可以在运行应用程序之前/之后设置NODE_PATH
环境变量,这样您就可以将自己的目录添加到节点尝试解析包的路径中。
以下示例在运行时似乎运行良好:NODE_PATH=./lib node app.js
<强> app.js 强>
require('api')();
<强> LIB / api.js 强>
module.exports = () => console.log('hello');
Here is an interesting Gist如果上述内容看起来不合适,还包含其他一些路线。在一些着名的Node.js人员的评论中也有一些有趣的讨论。