发布于 2026-01-06 0 阅读
0

发布你自己的 NPM 包 🎉 为什么?发布样板代码的步骤

发布你自己的 NPM 包 🎉

为什么?

发布步骤

样板

发布您自己的 NPM 包

注: npm 模块有一个非常棒的样板模板。本文基于我搭建该模板时学到的经验。

如今,NPM 已成为 JavaScript 库的事实标准注册中心。尤其是在 React、Angular 等前端库主导 Web 开发,以及 Node.js 接管服务器端之后,NPM 包比以往任何时候都更加流行。我们经常导入像typy这样的强大工具并在代码中轻松使用它们。

但你有没有想过编写自己的实用工具/库,并将其发布到 NPM,这样你和全世界的人都可以在任何地方复用它呢?如果是,那就继续往下读吧。✨

本文将介绍以下几个部分。

  1. 为什么?
  2. 发布步骤
  3. 样板

为什么?

当你同时参与多个项目时,你经常会发现自己在多个项目中重复执行一些简单的操作。例如,解析日期并按你偏好的方式进行格式化。大多数开发者会直接将代码从一个项目复制粘贴到另一个项目中,因为它只有几行代码。但更好的方法是将这段代码提取出来,放在一个公共位置,以便你可以在任何项目中访问它。NPM 是一个理想且不断发展的生态系统,而且它是免费的。因此,将所有可重用的代码发布为 npm 包,从长远来看对你大有裨益。

无论代码多么小,哪怕只有一行或一千行,都要将其发布为一个包,以便多个代码库可以轻松使用。

而且,你还能成为一座图书馆的作者。是不是很酷!😎

发布步骤

出版通常是一个简单的过程。

code => test => publish => revise code => test => publish new version ...

入口

创建一个新目录,并在终端中输入以下命令。

npm init
Enter fullscreen mode Exit fullscreen mode

请输入有意义的包名称和相应的详细信息。系统将package.json自动创建该包。所有 NPM 包都需要main一个密钥。该密钥定义了库的入口点index.js。默认情况下,入口点为 `/etc/npm`,但您可以根据需要将其更改为任何您想要的入口点。

对于 Babel 或基于 bundle 的库,入口点通常位于构建目录中。

来源

如果你编写的是一个小型库,你可以把所有代码都放在一个单独的文件中index.js。但通常情况下,我们会将代码抽象化,并将其放在不同的文件中。因此,理想的做法是将所有源代码保存在src一个目录中。

这是目前最广泛使用和推荐的源代码设置,尽管不同的库之间会有所不同。

这些事情你们大多数人应该都知道,所以我就不赘述了,让你们自己去琢磨。

测试

你需要进行全面的测试,以确保你的代码能够按预期运行。测试方法有很多种,你可以选择最适合你需求的。不过,常用的测试方法有:

……以及更多

如果你也需要代码覆盖率我个人非常喜欢这个功能)Istanbul是适用于任何 JavaScript 项目的最佳覆盖率工具之一。我非常喜欢它。

发布

代码经过全面测试后,即可发布。

  1. 在npmjs.com上创建一个帐户
  2. 在终端中运行此命令。
npm login
Enter fullscreen mode Exit fullscreen mode

请输入您的用户名和密码。系统将保存您的凭据,这样您每次发布内容时就无需再次输入。

编辑:请务必使用npm 的双因素身份验证 (2FA)来保护您的软件包免遭黑客攻击,正如Nick Taylor评论中提到的那样。

  1. 现在要发布,请运行
npm publish
Enter fullscreen mode Exit fullscreen mode

这将把你的软件包发布到 NPM 注册表中。发布完成后(不到一分钟),你可以通过链接查看你的软件包https://www.npmjs.com/~{username}/{package-name}

如果您想对软件包进行更改,则必须更改版本号并重新发布。

请记住使用 npm 命令npm version patchnpm version minornpm version major启用自动版本更新,而不是手动更新。这些命令基于语义化版本控制

样板

我自己也开发了一些 npm 包,并且在网上研究了创建 npm 包的最佳实践,专门为此创建了一个样板。它预先配置好了一切,你可以几秒钟内就开始使用。如果你想编写 JavaScript 工具包,这可能正是你需要的样板。

链接到样板 - npm-module-boilerplate

你太棒了!祝你今天过得愉快!🎉

文章来源:https://dev.to/flexdinesh/publish-your-own-npm-package---5b71