如何在 Npm 上发布一个包
Node 包管理器,俗称 npm,是一个用于发布 NodeJS 包和库的在线存储库。
它也是一个命令行工具,可让您与已注册的包进行交互。它可以帮助进行包安装、版本管理和依赖管理。
开发人员每天都会在 npm 上发布他们的 JavaScript 库。这个过程相当简单,所以你也可以在 npm 上发布一个包。
第 1 步:安装 NodeJS
要与 npm 交互,您必须在系统上全局安装它。
首先在 Ubuntu 、Windows或按照NodeJS网站上的说明安装 NodeJS 和 npm 。
第 2 步:创建一个 npm 帐户
要在 npm 上发布你的包,你必须在 npm 官方网站上创建一个 npm 帐户。
按照以下步骤创建一个 npm 帐户:
- 转到npm 注册页面。
- 填写您的详细信息,同意许可和隐私政策,然后单击“创建帐户”。
- 使用您从邮箱中的 npm 收到的链接验证您的电子邮件。
如果您不验证您的电子邮件地址,npm 将在您尝试发布包时抛出错误。
第 3 步:初始化 Git 存储库
接下来,您需要初始化一个 Git 存储库以跟踪您将对项目所做的所有更改。
在您的终端上,导航到项目的根目录并运行以下命令来初始化一个空的 Git 存储库。
git init
创建一个.gitignore文件并添加您不希望 Git 跟踪的任何文件。然后运行以下命令来跟踪剩余的文件:
git add -A
接下来,运行以下命令,通过将代码提交到 Git 来获取您的第一个快照。
git commit -m initial-commit
您可以选择在 GitHub 或 GitLab 等类似服务上托管您的 Git 存储库,以实现无缝协作。
第 4 步:在您的项目中初始化 npm
接下来,在您的项目中初始化 npm 以将有关您的项目的详细信息添加到 package.json 文件中。这些细节将在 npm 上公开。
在您的终端上,导航到项目的根目录并运行以下命令来初始化项目中的 npm。
npm init
上面的命令将在您的命令行上触发一组提示:
- 包名(package name):这是你的 npm 包的名称;如果你想在 npm 上发布包,它必须是唯一的;否则,npm 会抛出错误。
- version:此属性表示您的包的当前版本。每次更新包时都必须增加它,否则 npm 会抛出错误。默认值为 1.0.0。
- description:此属性是您的包的描述。当你发布你的包时,它将是公开的。
- 入口点(entry point):此属性表示代码执行开始的文件名。
- test command :该属性表示执行npm run test时将运行的命令。
- git repository:此属性是远程 Git 存储库的 URL。
- 关键字(keywords):此属性表示与您的项目相关的关键字,这将有助于搜索引擎找到它。
- author: 这个属性应该是你的名字或别名。
- license:这是您要发布包的许可证。默认许可证是 Internet Systems Consortium (ISC) 许可证。
设置好之后,你就可以创建你的包了。
第 5 步:测试你的包
完成创建包后,您应该在本地对其进行测试,以了解在 npm 上部署它后它的行为。
要在本地测试您的包,首先,在您的项目目录中运行以下命令:
npm link
上面的命令允许您在本地引用您的包,就像使用 npm 托管的包一样。
然后,在项目的根目录中创建另一个文件夹并 cd 进入它。
mkdir test
cd test
在 test 文件夹中,运行以下命令将您的包链接到该文件夹:
npm link name-of-your-package
最后,创建一个虚拟文件来测试你的包的功能。
完成测试后,您可以安全地删除测试文件夹。
第 6 步:在您的系统上登录 npm
接下来,您必须在系统上登录您的 npm 帐户。
运行以下命令以登录到您的 npm 帐户:
npm login
这将提示您填写您的用户名、密码和双重身份验证代码(如果您在您的帐户中启用了它)。
第 7 步:发布您的包
完成上述所有步骤后,运行以下命令在 npm 上发布您的包。
npm publish
此命令需要一个一次性密码,该密码将用于您的电子邮件。然后,它将在 npm 上发布您的包。
你可以查看你在 npm 上发布的包。在npmjs.com上登录您的 npm 帐户并导航到您的个人资料仪表板上的包部分。
要安装您的包并将其用作任何项目的依赖项,请运行:
npm install name-of-your-package
从 npm 中删除你的包
您仍然可以完全控制 npm 上的包,这意味着您可以从 npm 修改甚至永久删除您的包。您可以通过转到包的设置部分并选择删除包选项来删除包。
相关文章
- 聊聊 Java 19 新功能,你学会了吗?
- 深入浅出日志体系(logback最佳实践)
- github上fork2.4k,star8.7k的这款状态机,原来长这样!
- DiskSight for Mac(磁盘重复文件清理工具) v3.0激活版
- “喜提”一个P2级故障—CMSGC太频繁,你知道这是什么鬼?
- ACMMM 2022 | 首个针对跨语言跨模态检索的噪声鲁棒研究工作
- 即插即用!Batch Transformer
- 关于软件定时器的一些讨论
- Go 学习:那些不一样的知识点(上)
- 深入理解 ForkJoinPool:入门、使用、原理
- ACM MM 2022 Oral | PRVR: 新的文本到视频跨模态检索子任务
- 彻底了解线程池的原理—40行从零开始自己写线程池
- 「多语言图像描述」最强评估基准XM3600来了!涵盖36种语言
- 小扎亲自演示首个「闽南语」翻译系统!主攻3000种无文字的语言
- 曝苹果Mac Pro明春面世:彻底告别英特尔CPU,性能暴涨300%
- 58岁PDF发明人离世!他给男友订了一架直升机,从此相伴13年
- 代码开发技巧之快速逆向工程
- Go 语言为什么建议 append 追加新元素使用原切片变量接收返回值?
- 十种常见的回归算法总结和介绍
- 苹果设计大神Jony Ive继任者宣布离职!接班后只干了三年