goreleaser-npm-publisher
Automated tool for building and publishing NPM packages from Go binaries.
Quick start:
First, create a release of your package using goreleaser.
goreleaser build --clean
Then, run goreleaser-npm-publisher in the same directory. Make sure you're logged into the registry.
npx -y goreleaser-npm-publisher publish --clean
Alternatively, add the --token parameter to use your NPM_AUTH_TOKEN.
npx -y goreleaser-npm-publisher publish --clean --token npm_********
That’s it!
Use as a library
You can use goreleaser-npm-publisher as a standard npm package.
import { publish } from 'goreleaser-npm-publisher';
publish({ token: process.env.NPM_TOKEN })
.then(console.log)
.catch(console.error);
Use as a GitHub Action
You can use goreleaser-npm-publisher as a GitHub Action.
- name: Publish to npm
uses: evg4b/goreleaser-npm-publisher-action@v1.2.0
with:
prefix: '@evg4b'
token: ${{ secrets.NPM_AUTH_TOKEN }}
For more details, see the GitHub Action documentation.
CLI commands and options:
goreleaser-npm-publisher provides the following CLI commands:
list
Displays a list of packages that can be built in the current project using the specified options.
Options
| Option | Type | Description |
|---|---|---|
| project | string | Path to the project root built by GoReleaser (. by default). |
| builder | string | Name of the GoReleaser builder whose output is used to build the packages. |
| name | string | Base name for the npm packages (defaults to the GoReleaser project name). |
| bin | string | Name of the installed command (defaults to the package name). |
| prefix | string | Scope prefix for the npm packages. |
| repository | string | Source repository URL for the npm packages (required for npm provenance). |
| repository-type | string | Type of the source repository (detected from the repository URL, git by default). One of git, svn, hg, bzr. |
| repository-directory | string | Directory of the package inside the source repository (for monorepos). |
| description | string | Description for the npm packages. |
| verbose | boolean | Show verbose output. |
build
Builds all packages that can be built in the current project using the specified parameters. The built packages can be
found in the dist/npm folder.
Options
| Option | Type | Description |
|---|---|---|
| project | string | Path to the project root built by GoReleaser (. by default). |
| builder | string | Name of the GoReleaser builder whose output is used to build the packages. |
| clear | boolean | Clear the dist/npm folder before building. |
| name | string | Base name for the npm packages (defaults to the GoReleaser project name). |
| bin | string | Name of the installed command (defaults to the package name). |
| prefix | string | Scope prefix for the npm packages. |
| repository | string | Source repository URL for the npm packages (required for npm provenance). |
| repository-type | string | Type of the source repository (detected from the repository URL, git by default). One of git, svn, hg, bzr. |
| repository-directory | string | Directory of the package inside the source repository (for monorepos). |
| description | string | Description for the npm packages. |
| files | string[] | File globs to include in the npm packages (readme.md, license by default). |
| keywords | string[] | Keywords for the npm packages. |
| license | string | License (SPDX identifier) for the npm packages. |
| verbose | boolean | Show verbose output. |
publish
Builds and publishes to the registry all packages that can be built in the current project using the specified
parameters.
Options
| Option | Type | Description |
|---|---|---|
| project | string | Path to the project root built by GoReleaser (. by default). |
| builder | string | Name of the GoReleaser builder whose output is used to build the packages. |
| clear | boolean | Clear the dist/npm folder before building. |
| name | string | Base name for the npm packages (defaults to the GoReleaser project name). |
| bin | string | Name of the installed command (defaults to the package name). |
| prefix | string | Scope prefix for the npm packages. |
| repository | string | Source repository URL for the npm packages (required for npm provenance). |
| repository-type | string | Type of the source repository (detected from the repository URL, git by default). One of git, svn, hg, bzr. |
| repository-directory | string | Directory of the package inside the source repository (for monorepos). |
| description | string | Description for the npm packages. |
| files | string[] | File globs to include in the npm packages (readme.md, license by default). |
| keywords | string[] | Keywords for the npm packages. |
| license | string | License (SPDX identifier) for the npm packages. |
| token | string | Token for npm registry authentication. |
| otp | string | One-time password for npm two-factor authentication. |
| verbose | boolean | Show verbose output. |
Structure of npm package:
The output will include a main package and platform packages. The main package will contain the executable script that detects the platform and architecture, running the corresponding platform package. The platform packages will include the Go binary for the specific platform and architecture.
For example, for the package go-package with version 0.0.17, and with Goreleaser building for linux, windows,
and darwin along with ia32, x64, and arm64 architectures:
Main package:
go-package@0.0.17
os: linux, win32, darwin
cpu: ia32, x64, arm64
Platform packages:
go-package_linux_386@0.0.17
os: linux
cpu: ia32
bin: /Users/<user>/go-package/dist/npm/dist-go-package-linux-386-go-package
go-package_windows_386@0.0.17
os: win32
cpu: ia32
bin: /Users/<user>/go-package/dist/npm/dist-go-package-windows-386-go-package-exe
go-package_linux_amd64@0.0.17
os: linux
cpu: x64
bin: /Users/<user>/go-package/dist/npm/dist-go-package-linux-amd-64-v-1-go-package
go-package_linux_arm64@0.0.17
os: linux
cpu: arm64
bin: /Users/<user>/go-package/dist/npm/dist-go-package-linux-arm-64-go-package
go-package_windows_arm64@0.0.17
os: win32
cpu: arm64
bin: /Users/<user>/go-package/dist/npm/dist-go-package-windows-arm-64-go-package-exe
go-package_windows_amd64@0.0.17
os: win32
cpu: x64
bin: /Users/<user>/go-package/dist/npm/dist-go-package-windows-amd-64-v-1-go-package-exe
go-package_darwin_amd64@0.0.17
os: darwin
cpu: x64
bin: /Users/<user>/go-package/dist/npm/dist-go-package-darwin-amd-64-v-1-go-package
go-package_darwin_arm64@0.0.17
os: darwin
cpu: arm64
bin: /Users/<user>/go-package/dist/npm/dist-go-package-darwin-arm-64-go-package
Supported platforms and architectures:
Platforms:
| GOOS | Node.js Platform |
|---|---|
| darwin | darwin |
| linux | linux |
| windows | win32 |
| android | android |
| aix | aix |
| freebsd | freebsd |
| openbsd | openbsd |
| solaris | sunos |
| netbsd | netbsd |
Architectures:
| GOARCH | Node.js Platform |
|---|---|
| amd64 | x64 |
| 386 | ia32 |
| arm | arm |
| arm64 | arm64 |
| s390x | s390x |
| s390 | s390 |
| riscv64 | riscv64 |
| ppc64 | ppc64 |
| ppc | ppc |
| mips | mips |