pengzhanbo 4d2361a704
feat(theme)!: add collections support (#704)
* feat(theme)!: add collection support
2025-10-07 23:13:09 +08:00

205 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: npmTo 容器
icon: gg:npm
createTime: 2024/10/08 15:54:12
permalink: /guide/markdown/npm-to/
---
## 概述
npmTo 容器用于将 npm 命令行转换为 `pnpm / yarn / deno / bun` 的命令行,并它们作为 代码块组呈现在页面。
`::: npm-to` 容器中,只需要写 一次 npm 命令 代码块即可。
::: details 为什么需要 npmTo 容器
在我编写文档时,常常需要提供 `pnpm / yarn / npm` 等不同运行环境的命令,需要写多个代码块并包装在 `::: code-tabs`
容器中。它占据了我不少的工作量,而且还占据了 markdown 内容中的很长一部分空间,体验并不友好。
因此我编写了这个 `::: npm-to` 容器以解决这个问题。
:::
## 用法
````md{1,5}
::: npm-to
``` sh
npm install -D vuepress vuepress-theme-plume
```
:::
````
将 包含 `npm` 命令行的代码块,包裹在 `::: npm-to` 容器中即可。
::: warning npm-to 容器仅支持存在单个代码块,不能包含其他内容
:::
上述代码在内部会被转换为:
````md
::: code-tabs
@tab pnpm
``` sh
pnpm add -D vuepress vuepress-theme-plume
```
@tab yarn
``` sh
yarn add -D vuepress vuepress-theme-plume
```
@tab npm
``` sh
npm install -D vuepress vuepress-theme-plume
```
:::
````
最终会在页面中呈现为:
::: npm-to
``` sh
npm install -D vuepress vuepress-theme-plume
```
:::
还可以控制 代码块组中的代码块的显示顺序,如下所示:
**输入:**
````md {1,5}
::: npm-to tabs="npm,yarn,pnpm,bun,deno"
``` sh
npm install -D vuepress vuepress-theme-plume
```
:::
````
**输出:**
::: npm-to tabs="npm,yarn,pnpm,bun,deno"
``` sh
npm install -D vuepress vuepress-theme-plume
```
:::
## 配置
该功能默认不启用,您需要在 `theme` 配置中启用它。
```ts title=".vuepress/config.ts"
export default defineUserConfig({
theme: plumeTheme({
markdown: {
// npmTo: true, // 启用,并使用默认配置
npmTo: {
tabs: ['npm', 'yarn', 'pnpm'], // 代码块组默认显示顺序
}
},
})
})
```
`npm-to` 支持将 `npm` 命令行转换为 `pnpm / yarn / deno / bun` 的命令行。可以根据需求进行配置 `tabs` 。
## 命令行支持
`npmTo` 并不对 `npm` 的所有命令行提供支持,以下是支持的列表:
- `npm install` / `npm i`
- `npm run` / `npm run-script`
- `npm init`
- `npm create`
- `npm uninstall` / `npm rm` / `npm remove` / `npm un` / `npm unlink`
- `npm ci`
- `npx`
::: info
对于不支持的命令行,`npmTo` 不会处理它们,仅将它们复制到其他的代码块中。
:::
## 示例
**输入:**
````md
::: npm-to
```sh
npm install && npm run docs:dev
```
:::
````
**输出:**
::: npm-to
```sh
npm install && npm run docs:dev
```
:::
**输入:**
````md
::: npm-to
```sh
npm i -D vue
npm i --save-peer vuepress
npm i typescript
```
:::
````
**输出:**
::: npm-to
```sh
npm i -D vue
npm i --save-peer vuepress
npm i typescript
```
:::
**输入:**
````md
::: npm-to
```sh
npm run docs:dev -- --clean-cache
```
:::
````
**输出:**
::: npm-to
```sh
npm run docs:dev -- --clean-cache
```
:::
**输入:**
````md
::: npm-to tabs="pnpm,yarn,npm,bun,deno"
```sh
npm ci
```
:::
````
**输出:**
::: npm-to tabs="pnpm,yarn,npm,bun,deno"
```sh
npm ci
```
:::