对于支持不同变体的javascript库,什么是一个好的策略

对于支持不同变体的javascript库,什么是一个好的策略,javascript,node.js,ecmascript-6,Javascript,Node.js,Ecmascript 6,所以我有一个库,我想分解成多个不同的变体,具有不同的依赖性。。。例如,一个使用vanilla js的javascript库,然后是jquery变体、原型变体、react变体等 我想象它的工作方式是,对于vanilla js,您只需要 @import 'foolib' 但是如果您想要jquery变体 @import 'foolib/jquery' 我对其他方法持开放态度,但是在设计类似的东西时,什么是好的方法呢?我的一些具体问题是 他们是否有自己的package.json文件来声明自己的依赖

所以我有一个库,我想分解成多个不同的变体,具有不同的依赖性。。。例如,一个使用vanilla js的javascript库,然后是jquery变体、原型变体、react变体等

我想象它的工作方式是,对于vanilla js,您只需要

@import 'foolib'
但是如果您想要jquery变体

@import 'foolib/jquery'
我对其他方法持开放态度,但是在设计类似的东西时,什么是好的方法呢?我的一些具体问题是

  • 他们是否有自己的package.json文件来声明自己的依赖关系?或者有一个核心版本,为不同的变体添加package.json
  • 所有的变型是否都存在于同一回购协议中?还是应该将它们视为单独的库
  • 每个变体都应该有自己的语义版本吗?或者在单一版本下一起发布

因此,我们只需大致了解不同策略的想法,以及每种策略的优缺点。此外,参考任何试图解决相同问题的库都会很有帮助

如果您有一个核心库,以及多个到不同框架和其他库的桥接库,那么常见的解决方案是:

  • 主包
  • 每个网桥/集成一个包
  • 例如,如果您构建了一个react和一个jQuery版本,那么如果您只是一个jQuery用户,您就不希望获得所有react依赖项。最好只获取所需的依赖项

    每个包都应该有自己的版本。您的jQuery变体可能会得到一个突破性的更改,这将导致一个主要的版本波动,但理想情况下,这不会影响其他包的版本

    他们是否都生活在一个存储库中,或者是否每个人都有自己的存储库,这更多是一个品味问题。对于
    npm安装
    s您的库的用户来说,这无关紧要。这两种方法都很常见