如何重定向搜索其他目录中的node_modules

时间:2017-01-12 08:53:32

标签: node.js npm

您好我想从目录中的npm模块获取npm模块。由于它们涉及的依赖性,全局模块不是解决方案。我想拥有一个包含我已下载的所有模块的容器,并将require重定向到该目录而不是当前目录。这样我的所有项目都可以在相对路径中搜索模块,例如../

2 个答案:

答案 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人员的评论中也有一些有趣的讨论。