【问题标题】:Npm development versions for libraries库的 Npm 开发版本
【发布时间】:2023-03-21 12:21:01
【问题描述】:

最近我看到了一个库(react-3d-components),其中包含一些 d3 react 组件和一些基本图表可供使用。这是一组很酷的组件。

但是,当我想查看源代码时,因为文档还不够完整,并且当您想查看如何扩展组件时,例如,您发现自己正在查看代码的转译版本。不太好。我想看看源代码的人类可读版本。美好的。通常包都有内置的源代码,因此您只需在 IDE 中找到该文件的人类可读版本即可。如果你幸运的话,你有源地图。但这就是复杂的地方。

这个模块,在 github,有他的整个人类可读的源代码,它很好而且正确,而且,因为一个 .npmignore 文件,它只是发布文件的转译版本。当我看到这个我正要创建一个新问题时,当我意识到这家伙有一个观点:它通过不打包不必要的文件来减小包大小。但这适用于运行时,在开发时(在我的计算机中)我想要整个源代码和源映射,以便我可以浏览代码并阅读它。这也可能适用于某些资产。我认为该软件包的某种开发版本会很好。

在此处查看忽略行: https://github.com/codesuki/react-d3-components/blob/master/.npmignore#L2

所以我想知道......当我创建一个库时应该如何创建一个库?有一个开发包版本和一个生产/默认版本? (例如mypackage-with-sources@1.0-dev)或者我应该把它留给IDE并使用一些插件,以某种方式使用http将源代码与repo页面集成在一起?还是 npm 对此提供了我不知道的官方支持? (我试图搜索它我找不到任何东西)

我也看过这篇文章:Publish development version of NPM package

但它没有提供一个好的解决方案。最有说服力的一种是使用 alpha 或 beta 等预发布标签,但这是不正确的。另一种解决方案建议安装 github/vendor 存储库,这可能是正确的,但对于开发目的来说不方便和不舒服(更重要的是,并非总是可用,并非所有 npm 包都来自已知/可访问的 http 存储库)。

除了具体答案之外,任何关于此的最佳实践(有理由)都会受到好评。

谢谢

【问题讨论】:

    标签: javascript node.js npm


    【解决方案1】:

    源应该是包的一部分,因为它们对开发很有用,并且包大小在运行时不重要:在节点中,节点只会加载实际需要的文件,在浏览器中合理的人使用捆绑器(例如 webpack),它只捆绑所需的文件。

    因此,包的大小只对包的下载和存储很重要。由于 npm 的缓存,包下载很少发生,而且磁盘空间足够便宜,我们可以存储几 MB 的源代码,尽管我不会像我曾经看到某个库那样将架构图作为图像包含在内。

    .npmignore 的 documentation 还暗示 .npmignore 旨在排除临时文件(如 .gitignore)。如果 .npmignore 旨在排除源代码,npm 文档会告诉你。

    【讨论】:

    • 我知道运行时不需要源,以及关于 npm 使用的缓存。但是,减少运行时方案的包大小,因为文件正在浪费存储,看起来并不是一个糟糕的选择。是的,我们可以包含所有内容,这几乎是每个人(包括我自己)都在做的事情,但是这个包 react-3d-components 有这个不同,这让我觉得他可能是对的。在发布不是问题的问题之前,我正在尝试探索新的替代方案。我在文档中也找不到有关瞬态文件的任何信息...
    • 这个包的源代码是67 KB。因此,在a GB currently costs $0.02 per month 的 google cloud 中,存储此软件包的源代码将使每位用户每月花费 0.00000134 美元。用户访问 github 查找源代码需要几分钟时间,或者以每小时 7 美元的最低工资计算,大约需要 0.5 美元。
    • 它没有解决我的问题。你的建议是忘记它。这不是一个答案。
    • 您问是否有开发版本库的标准。我的回答是标准将源代码包含在包中,因为分离源代码并没有真正的好处,因为这样做不会产生运行时开销,而且存储非常便宜,以至于节省几 KB 不值得任何人的时间。不过,请随意浪费您的时间。
    • 我要求的是最佳实践而不是标准。我在我的问题中提到,包括来源是常见的。所以......我应该假设你甚至没有阅读整个问题。当您在数百个项目中有数百个依赖项时,不仅仅是几个 KB。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-26
    • 2020-07-25
    • 2016-01-02
    • 1970-01-01
    • 1970-01-01
    • 2016-12-09
    • 2020-03-13
    相关资源
    最近更新 更多