> This page is for CLI 参考.

> For clean Markdown content of this page, append .md to this URL. For the complete documentation index, see https://buildwithfern.com/learn/llms.txt.

## 5.158.0

**`(feat):`** The `cli` target in `sdk-config.yml` can now publish to npm. With GitHub delivery, `output.publish` with
`registry: npm` is written as an npm output for `fernapi/fern-cli-generator`: `trustedPublishing: true`
publishes with OIDC, and otherwise `token: ${NAME}` names the token variable (`NPM_TOKEN` by default).
`package.packageName` is then the npm package name. When it is not a valid crate name (for example
`@acme/cli`), the crate is named from the CLI binary name, or else from the kebab-cased npm name
(`acme-cli`). Publish fields the CLI generator cannot honor warn or fail instead of being rejected as a block.

## 5.157.6

**`(fix):`** Restore the docs.yml step of `fern sdk migrate`. It adds `specs` (paths, namespaces, overlays, overrides, and import settings) to the API reference sections that use the migrated API, so docs no longer depend on generators.yml. All specs of an API stay in one section, so docs merge them into one API reference as before. The docs edits are committed together with the SDK Config and rolled back with it if anything fails.

## 5.157.5

**`(fix):`** Fix `snippets: cli` on a docs API reference being dropped while parsing docs.yml (and the `docs`
section of fern.yml), so the `cli` dynamic IR is now generated and `cliSdk` is registered with FDR
during docs publish.

**`(fix):`** When an API reference's own generators.yml has a single generator for a snippet language with no
package name (e.g. a local-file-system CLI generator), docs publish now uses it for dynamic snippets
even if a sibling API workspace has a generator for the same language.

**`(fix):`** CLI snippets in docs now follow each spec's generators.yml `namespace:` the way the generated CLI
does (e.g. `twilio-cli messaging bulk-messages list` and `twilio-cli addresses list` instead of
`messaging-bulk-messages bulk-messages list` and `addresses addresses list`).

## 5.157.4

**`(fix):`** The "unknown package" warning from `fern generate --docs` now explains that SDK snippets are not
supported yet for SDKs configured in `sdk-config.yml`.

## 5.157.3

**`(fix):`** Git-ref-backed versions (`ref:`) now work under `products[].versions`. The CLI locates the same
product in the ref's docs.yml (by slug, else display name) and builds that product's working-tree
version, falling back to the product file's navigation. A ref from before the site adopted
`products:` uses its site-level versions or navigation, as before. At any scope, the first `path:` version
at the ref is used, so refs whose docs.yml lists older `ref:` entries first resolve correctly.

## 5.157.2

**`(fix):`** The `x-displayName` extension on OpenAPI tags now sets the API Reference section name
in the v3 parser. Previously it was only applied when the display name differed from
the tag by letter casing, so a display name such as `Plants` for tag `plant`, or any
multi-word tag, fell back to the title-cased tag name.

## 5.157.1

**`(fix):`** Allow `playground-docs` on `auth-schemes` in `generators.yml`. Previously the CLI rejected it with
`Unexpected key "playground-docs"`, so schemes defined there could not set playground-only auth text.

## 5.157.0

**`(feat):`** Docs sites can now show Fern CLI command snippets alongside the SDK languages. Declaring
`snippets: cli` on an API reference (with the Fern CLI generator in `generators.yml`) builds a
`cli` dynamic IR during docs publish and registers it with FDR, which the docs frontend renders
as runnable CLI commands.