TL; DR;是否可以在Node中实现包继承?还是有推荐的工具可以帮助您解决此问题?
我正在包含60多个(并且正在不断增长)Web应用程序的企业环境中工作。我们还模块化了组件,例如页眉/页脚/登录/等。因此网络应用无需重复代码,只需将其作为依赖项即可。我们还提供了库模块来提供诸如通用日志记录,建模和错误处理之类的功能。我们还有一个主库,为测试和整理等维护提供了基础。
我想做的是访问该主库在上层模块中使用的依赖项。
lib-a
|
—> lib-b
|
—> babel, chai, mocha, etc.
我想从lib-b获得lib-a“继承”的babel,chai,mocha等,而不必专门添加依赖项。这样,我所有的库以及最终的Web应用程序都将具有相同的版本,并且我不必在每个package.json中重复相同的依赖项。我也不必麻烦N个团队来更新60-100个应用程序/库/其他程序,而不得不与他们抱怨维护问题。
我确实知道这与npm的核心背道而驰,但从我们使用的层面上来看,这已成为维护上的麻烦。在这一点上,进行更多的DRY无疑会带来好处。
因此在顶部重复原始问题-是否可以在Node中实现包继承?还是有推荐的工具可以帮助您解决此问题?
我看过以下工具。有没有人使用过它们?或对此有想法。还有其他人吗?
https://github.com/FormidableLabs/builder
https://github.com/Cosium/dry-dry
答案 0 :(得分:0)
这是一个坏主意。您应该假设您无法控制依赖项。还有谁能对依赖项进行更改?
假设您示例中的lib a
使用mocha
。由于它取决于lib b
,而后者也取决于mocha
,因此您可以决定不在mocha
的{{1}}中列出lib a
。
如果有人重构package.json
不再使用lib b
,则mocha
会突然掉下来。这不好。
我们同等数量的项目。我们使用Greenkeeper,RenovateBot和一些工具将更改立即应用到所有存储库。从长远来看,对您而言,与反对Node的依赖模型相比,这可能是一个更好的策略。