我们将NPM重新定位为发布和分发内部CLI的Go二进制文件

2021-01-08 22:09:23

NPM提供了一种简便的方法来发布和分发Node JS程序包,以实现代码依赖性以及全局命令行工具。本文演示了如何使用它来发布和分发用GoLang编写的二进制文件

我们最近将内部CLI工具从Node JS迁移到了Golang。在项目完成后,我们遇到了将CLI工具分发给我们的工程师团队的问题,而无需分发新的令牌集或公开二进制文件。使用NodeJS版本的CLI做到这一点非常容易,因为我们有一个私有NPM注册表,我们在其中发布了CLI,团队可以访问它。安装它是一个简单的命令

由于节点软件包管理器(npm)并不限制可以在软件包中发布的内容或文件类型,因此我们设法使npm发布与Mac OS,Linux和Windows兼容的预构建Go二进制文件。

Go Releaser:用于为不同平台构建go二进制文件并在github上创建发行版的工具。

NPM JS:用于发布和托管软件包的注册表,您可以选择任何注册表,包括私有托管的注册表。

在您的项目中设置Go Releases:使用此工具可以在本地或在CI / CD管道中生成二进制文件。

当在项目的同一目录中运行goreleaser命令时,它将在同一目录中创建dist文件夹,并将二进制文件放置在我们为其构建的相应OS文件夹下。

2.节点软件包详细信息:我们需要能够发布我们刚刚在节点注册表上构建的二进制文件。 为此,我们需要为要读取的npm命令创建一个package.json和package-lock.json。 添加上述文件后,如果在当前目录中运行npm install,它将自动生成package-lock.json文件。 到目前为止,我们已经建立了一种将dist文件夹发布到npm注册表的方法。 现在,我们需要添加postinstall.js,这将帮助npm i -g your-package-name命令根据您的操作系统选择正确的二进制文件并将其放置在正确的路径中,以便将其作为 终端中的命令。 运行goreleaser后发布软件包后,只要有一个使用NodeJS编写的软件包使用的简单命令,任何有权访问您的npm注册表的人都可以下载该软件包。