在子模块中更好地使用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')