vuejs / vitepress

Vite & Vue powered static site generator.
https://vitepress.dev
MIT License
11.48k stars 1.86k forks source link

支持 Markdown 内的代码折叠功能 #3842

Open linpengteng opened 2 weeks ago

linpengteng commented 2 weeks ago

Is your feature request related to a problem? Please describe.

如下代码,支持 it('xxxxxx', () => { / code /}) 代码折叠

```typescript:line-numbers [范例]
import Login from "@/views/auth/Login.vue";

describe("Vue Component", () => {
  it("挂载渲染 - Login 组件", () => {
    cy.mount(Login);
  });

  it("模拟触发 - Input 校验", () => {
    cy.mount(Login);

    cy.get('input[type="text"]').as("usernameInput");
    cy.get('input[type="password"]').as("passwordInput");

    cy.get("@usernameInput").type("admin");
    cy.get("@passwordInput").type("password");

    cy.get("@usernameInput").should("have.value", "admin");
    cy.get("@passwordInput").should("have.value", "password");
  });
});
```

Describe the solution you'd like

通过 // [!code collapse:<+/-lines>] 支持代码折叠 (其中,lines 可折叠部分的行数,+line -> 默认展开, -line 默认已折叠)

```typescript:line-numbers [范例]
import Login from "@/views/auth/Login.vue";

describe("Vue Component", () => {
  it("挂载渲染 - Login 组件", () => {  // [!code collapse:3]
    cy.mount(Login);
  });

  it("模拟触发 - Input 校验", () => {   // [!code collapse:-12]
    cy.mount(Login);

    cy.get('input[type="text"]').as("usernameInput");
    cy.get('input[type="password"]').as("passwordInput");

    cy.get("@usernameInput").type("admin");
    cy.get("@passwordInput").type("password");

    cy.get("@usernameInput").should("have.value", "admin");
    cy.get("@passwordInput").should("have.value", "password");
  });
});
```

Describe alternatives you've considered

No response

Additional context

No response

Validations