繁体   English   中英

无需NPM注册表即可直接使用自己的NPM软件包的方法

[英]Straight forward way to use your own NPM package without the NPM registry

我想将我的几个项目的代码库分成一些独立的程序包。 这些应该可以在npm上轻松使用,但是它们似乎不足以发布到全局npm注册中心。

因此,我的问题是,是否有一种中间方法来像本地提供的软件包一样处理它们,并使用它们的路径安装它们并将它们发布在全局存储库中。

关注:

  • npm注册表中杂乱无章的软件包看起来似乎不足以占据名称
  • 记录和为每个程序包创建测试的需求似乎太多了,我不会睡得很好,发布没有正确记录和测试的程序包
  • 我采用了一个更适合更复杂的软件包和维护者使用的名称
    • 我仍然希望其他人能够轻松尝试/使用此软件包,以查看它是否满足他们的需求

备择方案:

  • A)创建一个私有npm存储库(使用CouchDB吗?)

    • +与npm存储库几乎相同,并且易于使用
    • +版本相同,只是纯semver查找
    • -如果每个用户想要使用此程序包或将其作为其(公共npm)程序包中的子依赖项,则都需要设置此存储库(即使这种情况不太可能)
    • -需要投入时间进行设置和维护
  • B)使用我的用户名npm命名空间

    • +几乎可以解决所有问题
    • -名称空间似乎是为项目及其子程序包设计的,而对于我的程序包则不是这种情况,因为它们的唯一连接是创建者
    • -在您的包裹前加上您的名字似乎很自大,就像您用一个大标志标记它, 这是我做的
  • C)将GitHub与包含(已标记)版本的特殊分离分支一起使用

    • +您可以像全局npm存储库一样使用它,因为npm解析策略允许使用存储范围为semver的版本库url代替版本
    • -必将打破的特殊情况
    • -GitHub并不打算提供npm软件包,几乎没有开发人员期望git url代替版本范围,工具和防火墙可能对此有问题
    • -实际上,对于git和npm来说,工作流并不意味着这种方式
  • D)使用本地软件包并通过其路径安装软件包
    • +易于设置和使用
    • -没有版本管理
    • -构建步骤必须事先手动完成
    • -无法根据这些软件包发布软件包
    • -所有依赖项都必须在本地安装
  • E)使这些程序包更有用,实施极端情况,编写文档并测试整个程序包
    • +将解决所有问题
    • -很多额外的工作,主要是考虑边缘情况并为开发人员提供良好的api
    • -有时您无法真正获得包裹的名称(与其他包裹相撞),这会导致怪异
    • -这是您的责任,您必须维护它,负责任(测试得好,边缘案例)
    • -npm存储库混乱

因此,这些都是我试图找到解决方案时想到的所有替代方案。 如果您有其他想法,请发表评论/答案,或者您可以删除/减少这些矛盾之处的重要性。

也许您可以包括自己的经验,所以我对整个问题有更好的了解。

目前,我只是想使该软件包对大多数人更有帮助,但这并不在所有情况下都有效。

谢谢大家的时间!

从git安装是软件包管理器中的非常标准的功能。 npm没有Github-support ,它是对任何git repo的通用支持。 除非您能找到有关从npm弃用它的讨论,否则我不会担心。 许多公司在内部将其用于私有软件包。

当然,仍然需要权衡取舍:构建工件以及可能更笨拙的工作流。 npm outdated这样的东西npm outdated不懂git semver了。 对于构建工件,我已经看到许多项目将它们提交到master分支以支持直接git-install。 例如,如果您浏览旧的开放源代码项目,通常就是这种情况。

我们选择了一个在docker容器中运行verdaccio的私有存储库,该存储库与版本A非常相似。它进行了一些设置,但是对于我们的开发人员来说,只需要一个npm命令就可以在npm之前添加私有存储库。对于我们创建的名称空间的所有包。 当然,我们的软件包是特定于项目的,但是在一个实际上并不重要的私有存储库中,对吗?

最初我们考虑使用本地软件包选项,但即使设置起来非常简单,缺点也对我们来说太大了。

我不确定这是否有帮助,但这至少是几个月前我们遇到同一问题时决定的设置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM