要在 npm 上发布库,您需要:
一个npm 帐户;您可以在这里注册。
您的代码作为一个项目;即,您的代码目录中有一个 package.json,其中指定了名称和版本。请注意,您可以通过以下方式生成此文件:
npm init
注意: 如果您的脚本未命名为index.js并放置在项目根目录中,则需要在package.json中指定“main”属性。有关更多信息,请参阅此答案。
如果该名称已在 npm 上使用,您可以添加 @name-or-org/your-lib 等前缀;这就是当今大多数其他图书馆所做的。
你可以查看我的最小示例以供参考,但我相信你可以写出比这更酷的东西。
最后用CLI命令发布:
npm publish
设置带有前缀的包名称时请注意:它必须是您在 npm 上注册的 npm 用户名或组织名称。例如,我可以使用 @remi_guan 作为我的前缀,但不能使用其他前缀。
此外,您需要运行 npmpublish --access public,因为 npm 认为您想要发布私有包,这是一项付费功能。
有这个输出就说明已经成功了。不过,如果您遇到问题,可以通过 Google 搜索来排除故障。以下是您如何使用自己的库:
如果您一直在遵循本指南,请尝试使用您自己的库。
如果您想了解更多信息,我还发现@backendbro 有比这更详细的指南。
发布代码后,当您想要更新代码时,可以再次运行 npmpublish。不过,在发布之前,您应该更新package.json的版本属性,并请遵守语义版本控制。
我建议你尝试一下!您能否发布您的库的 v1.0.1 或 v1.1.0,并在另一个项目中使用它,就像我刚刚所做的那样?你能弄清楚如何更新你的 npm 库的版本吗?
到目前为止,我们创建的这个库还不是现代的,它缺少类型声明,因此使用您的库的人无法通过键入来突出显示。此外,人们通常使用带有 ECMAScript 语法的 TypeScript。要了解差异,请参阅 Saisathish 的《Node.js 模块:CommonJS 与 ECMAScript》
但是我将在这篇文章中跳过 TypeScript 的详细设置。有很多很好的教程可以学习如何初始化 TypeScript 项目,例如 inapeace0 的“如何开发 Typescript 库”。
更进一步,您可以使用模板 TypeScript 存储库,例如 alexjoverm/typescript-library-starter,它已经集成了许多现代工具、最佳实践等。
如果您要发布 TypeScript 库,我只想提一些重要的注意事项:
您需要使用package.json中的module、main或entry属性正确指向编译后的文件。使用模板并一一学习是一个不错的选择。再次,alexjoverm/typescript-library-starter 很好地指定了它们。
但是,如果您确定您的库将在 Deno、Bun 或 ts-node 上运行,您可以忽略我的上述准则,因为它们支持本机运行 TypeScript 代码。
请尝试按照指南创建 TypeScript 库并将其发布到 npm。这仍然很简单,就像第一个例子一样。您应该使用导入语法在另一个项目中对其进行测试,并且您可以使用 IDE 查看类型提示。
使用 TypeScript,我可以用以下语法编写我的库:
发布后,我可以安装并导入它,并通过 TypeScript 查看类型提示。
有一个常见但稍微高级的问题等待解决:每次更新包时,我们都需要编辑版本代码。
这很烦人,特别是如果您经常更新代码。
但是,有一些工具可以帮助您。
我使用 ChatGPT 生成了比较这两个工具的摘要。对于新程序员,我建议你尝试release-it,但是如果你知道如何将它与CI集成,semantic-release也很方便。
在这篇文章中,我将向您展示如何使用release-it,好吧,在您对项目进行更改后,只需在您的项目中运行它:
npx release-it
然后选择是小改动还是大改动,然后就完成了!
所以你就有了!我们已经完成了发布一个简单的 npm 库、更新它,甚至使用 TypeScript 使其更加现代和健壮。记住:
试试吧!发布您自己的库,更新它,看看为 npm 生态系统做出贡献的感觉如何。快乐编码!
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3