在子模块中更好地使用require()

在这个话题上search了几个小时之后,我希望有人能够帮助澄清我的这个项目对我来说…

我有一个项目,它通过require()加载模块,并能够显式地将它们命名为package.json,并且在它们的package.json文件中拥有“main”属性。 例如: require('submodule-name')

该function完美的工作,但在这些模块中的每一个,我必须要求这样的主文件: const mainModule = require('../../mainModuleName');

这样我可以访问连接到主件的函数和configurationvariables。

我想知道是否有一个更好的方式require()这个主要模块没有相对path,因为我的linter抱怨说,当我lint子模块回购自己的模块不存在。 另外,我想使用npm link为未来的发展带来快乐。

有没有这样做没有相对path? 也许修复主项目文件的package.json

更新:文件/文件夹结构如下:

 / mainModule.js /node_modules childModule.js <- this requires the mainModule file with a relative path /modules anotherChildModule.js <- same relative path requirement of mainModule 

我认为问题在于方法本身。 子模块不应该依赖主模块,因为这会颠倒依赖关系(现在子模块依赖于父模块实现)。 我build议您避免需要父目录,并在需要时将函数和configuration传递给子模块。

例如: const sub = require('submodule-name')(config)

作为备选scheme,NPM支持导入本地依赖项,因此您可以创build一个“configuration”包,您可以在两个子模块中包含

的package.json

 "myconfig": "file:./common" 

childModule.js

 const config = require('myconfig')