## CLI Usage ```bash terminal icon="terminal" bun publish dist ``` ### Publishing Options The `--access` flag can be used to set the access level of the package being published. The access level can be one of `public` or `restricted`. Unscoped packages are always public, and attempting to publish an unscoped package with `--access restricted` will result in an error. ```sh terminal icon="terminal" bun publish --access public ``` `--access` can also be set in the `publishConfig` field of your `package.json`. ```json package.json icon="file-json" { "publishConfig": { "access": "restricted" // [!code ++] } } ``` 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 ``` `--tag` can also be set in the `publishConfig` field of your `package.json`. ```json package.json icon="file-json" { "publishConfig": { "tag": "next" // [!code ++] } } ``` The `--dry-run` flag can be used to simulate the publish process without actually publishing the package. This is useful for verifying the contents of the published package without actually publishing the package. ```sh bun publish --dry-run ``` Specify the level of gzip compression to use when packing the package. Only applies to `bun publish` without a tarball path argument. Values range from `0` to `9` (default is `9`). If you have 2FA enabled for your npm account, `bun publish` will prompt you for a one-time password. This can be done through a browser or the CLI. The `--auth-type` flag can be used to tell the npm registry which method you prefer. The possible values are `web` and `legacy`, with `web` being the default. ```sh terminal icon="terminal" bun publish --auth-type legacy ... This operation requires a one-time password. Enter OTP: 123456 ... ``` Provide a one-time password directly to the CLI. If the password is valid, this will skip the extra prompt for a one-time password before publishing. Example usage: ```sh terminal icon="terminal" bun publish --otp 123456 ``` `bun publish` respects the `NPM_CONFIG_TOKEN` environment variable which can be used when publishing in github actions or automated workflows. ### Registry Configuration #### Custom Registry Specify registry URL, overriding .npmrc and bunfig.toml ```bash bun publish --registry https://my-private-registry.com ``` #### SSL Certificates Provide Certificate Authority signing certificate Path to Certificate Authority certificate file ```bash Inline Certificate bun publish --ca "-----BEGIN CERTIFICATE-----..." ``` ```bash Certificate File bun publish --cafile ./ca-cert.pem ``` ### Publishing Options #### Dependency Management Don't install devDependencies Exclude dependency types: `dev`, `optional`, or `peer` Always request the latest versions from the registry & reinstall all dependencies #### Script Control Skip lifecycle scripts during packing and publishing Add packages to trustedDependencies and run their scripts **Lifecycle Scripts** — When providing a pre-built tarball, lifecycle scripts (prepublishOnly, prepack, etc.) are not executed. Scripts only run when Bun packs the package itself. #### File Management Don't update package.json or lockfile Disallow changes to lockfile Generate yarn.lock file (yarn v1 compatible) #### Performance Platform optimizations: `clonefile` (default), `hardlink`, `symlink`, or `copyfile` Maximum concurrent network requests Maximum concurrent lifecycle scripts #### Output Control Suppress all output Show detailed logging Hide progress bar Don't print publish summary