132 lines
3.5 KiB
Plaintext
132 lines
3.5 KiB
Plaintext
---
|
|
title: "bun publish"
|
|
description: Use `bun publish` to publish a package to the npm registry
|
|
---
|
|
|
|
import Publish from "/snippets/cli/publish.mdx";
|
|
|
|
`bun publish` packs your package into a tarball and strips catalog and workspace protocols from the `package.json`, resolving versions if necessary. It then publishes to the registry specified in your configuration files. Both `bunfig.toml` and `.npmrc` files are supported.
|
|
|
|
```sh terminal icon="terminal"
|
|
## Publishing the package from the current working directory
|
|
bun publish
|
|
```
|
|
|
|
```txt
|
|
bun publish v1.3.3 (ca7428e9)
|
|
|
|
packed 203B package.json
|
|
packed 224B README.md
|
|
packed 30B index.ts
|
|
packed 0.64KB tsconfig.json
|
|
|
|
Total files: 4
|
|
Shasum: 79e2b4377b63f4de38dc7ea6e5e9dbee08311a69
|
|
Integrity: sha512-6QSNlDdSwyG/+[...]X6wXHriDWr6fA==
|
|
Unpacked size: 1.1KB
|
|
Packed size: 0.76KB
|
|
Tag: latest
|
|
Access: default
|
|
Registry: http://localhost:4873/
|
|
|
|
+ [email protected]
|
|
```
|
|
|
|
To pack and publish separately, run `bun pm pack`, then `bun publish` with the path to the output tarball.
|
|
|
|
```sh terminal icon="terminal"
|
|
bun pm pack
|
|
...
|
|
bun publish ./package.tgz
|
|
```
|
|
|
|
<Note>
|
|
`bun publish` does not run lifecycle scripts (`prepublishOnly/prepack/prepare/postpack/publish/postpublish`) if you
|
|
provide a tarball path. Scripts run only when `bun publish` packs the package itself.
|
|
</Note>
|
|
|
|
### `--access`
|
|
|
|
`--access` sets the access level of the package being published, either `public` or `restricted`. Unscoped packages are always public, and publishing an unscoped package with `--access restricted` is an error.
|
|
|
|
```sh terminal icon="terminal"
|
|
bun publish --access public
|
|
```
|
|
|
|
You can also set `--access` in the `publishConfig` field of your `package.json`.
|
|
|
|
```json package.json icon="file-json"
|
|
{
|
|
"publishConfig": {
|
|
"access": "restricted"
|
|
}
|
|
}
|
|
```
|
|
|
|
### `--tag`
|
|
|
|
Set the tag of the package version being published. By default, the tag is `latest`. The initial version of a package is always given the `latest` tag in addition to the specified tag.
|
|
|
|
```sh terminal icon="terminal"
|
|
bun publish --tag alpha
|
|
```
|
|
|
|
You can also set `--tag` in the `publishConfig` field of your `package.json`.
|
|
|
|
```json package.json icon="file-json"
|
|
{
|
|
"publishConfig": {
|
|
"tag": "next"
|
|
}
|
|
}
|
|
```
|
|
|
|
### `--dry-run`
|
|
|
|
`--dry-run` runs the publish process without publishing the package, so you can verify what would be published.
|
|
|
|
```sh terminal icon="terminal"
|
|
bun publish --dry-run
|
|
```
|
|
|
|
### `--tolerate-republish`
|
|
|
|
Exit with code 0 instead of 1 if the package version already exists. Useful in CI/CD where jobs may be re-run.
|
|
|
|
```sh terminal icon="terminal"
|
|
bun publish --tolerate-republish
|
|
```
|
|
|
|
### `--gzip-level`
|
|
|
|
Set the gzip compression level used when packing the package, from `0` to `9` (default `9`). Only applies to `bun publish` without a tarball path argument.
|
|
|
|
### `--auth-type`
|
|
|
|
If you have 2FA enabled for your npm account, `bun publish` prompts you for a one-time password, either through a browser or in the CLI. `--auth-type` tells the npm registry which method you prefer: `web` (the default) or `legacy`.
|
|
|
|
```sh terminal icon="terminal"
|
|
bun publish --auth-type legacy
|
|
...
|
|
This operation requires a one-time password.
|
|
Enter OTP: 123456
|
|
...
|
|
```
|
|
|
|
### `--otp`
|
|
|
|
Provide a one-time password directly to the CLI. If the password is valid, `bun publish` skips the extra one-time password prompt before publishing:
|
|
|
|
```sh terminal icon="terminal"
|
|
bun publish --otp 123456
|
|
```
|
|
|
|
<Note>
|
|
`bun publish` respects the `NPM_CONFIG_TOKEN` environment variable, useful when publishing from GitHub Actions or
|
|
other automated workflows.
|
|
</Note>
|
|
|
|
---
|
|
|
|
<Publish />
|