如何在其他目录中redirectsearchnode_modules

嗨,我想要从目录不是目前npm模块npm模块。 由于涉及的依赖性,全局模块不是解决scheme。 我想拥有一个容器,包含我已下载的所有模块,并将requireredirect到该目录而不是当前目录。 这样,我所有的项目都可以像这样的相对pathsearch模块../例如。

在这里你可以使用npm link

例如,

假设在/User/you/modules有10个本地节点包存储库(每个包中包含package.json ),并且您的项目位于/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/project使用/User/you/modules中的所有模块,而无需相对path。

所以,你现在可以;

 require('package-name') 

package-name取自package.json ,而不是来自目录名。

代替;

 require('../modules/package-name') 

干杯。

您可以在运行应用程序之前/之前设置NODE_PATH环境variables,这将允许您将自己的目录添加到节点试图parsing程序包的path中。


下面的例子似乎运行得很好,如下所示: NODE_PATH=./lib node app.js

app.js

require('api')();

LIB / api.js

module.exports = () => console.log('hello');


这里有一个有趣的Gist ,其中包括一些其他的路线,如果上述不适合你。 在一些着名的Node.js人员之间的评论中也有一些有趣的讨论。