test: update unit test (#294)

This commit is contained in:
pengzhanbo 2024-10-18 12:52:15 +08:00 committed by GitHub
parent f4cc4529b8
commit be9333271d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
9 changed files with 877 additions and 299 deletions

View File

@ -1,81 +1,81 @@
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
exports[`codeTabsPlugin > should work with default 1`] = `
"<CodeTabs id="0" :data='[{"id":"tab-1"},{"id":"tab-2"},{"id":"tab-3"}]'><template #title0="{ value, isActive }"><span>tab-1</span></template><template #title1="{ value, isActive }"><span>tab-2</span></template><template #title2="{ value, isActive }"><span>tab-3</span></template><template #tab0="{ value, isActive }"><pre><code class="language-js"><div class="language-js"><pre><code>const a = 1
</code></pre></div></code></pre>
</template><template #tab1="{ value, isActive }"><pre><code class="language-js"><div class="language-js"><pre><code>const b = 2
</code></pre></div></code></pre>
</template><template #tab2="{ value, isActive }"><pre><code class="language-js"><div class="language-js"><pre><code>const c = 3
</code></pre></div></code></pre>
</template></CodeTabs><CodeTabs id="11" :data='[{"id":"npm"},{"id":"pnpm"},{"id":"yarn"}]' :active="1"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #tab0="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>npm i
</code></pre></div></code></pre>
</template><template #tab1="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>pnpm i
</code></pre></div></code></pre>
</template><template #tab2="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>yarn
</code></pre></div></code></pre>
</template></CodeTabs><CodeTabs id="22" :data='[{"id":"a.ts"},{"id":"a.js"}]' tab-id="pm"><template #title0="{ value, isActive }"><VPIcon name="vscode-icons:file-type-typescript"/><span>a.ts</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-js"/><span>a.js</span></template><template #tab0="{ value, isActive }"><pre><code class="language-ts"><div class="language-ts"><pre><code>const a = 1
</code></pre></div></code></pre>
</template><template #tab1="{ value, isActive }"><pre><code class="language-js"><div class="language-js"><pre><code>const a = 1
</code></pre></div></code></pre>
</template></CodeTabs>"
"<CodeTabs id="0" :data='[{"id":"tab-1"},{"id":"tab-2"},{"id":"tab-3"}]'><template #title0="{ value, isActive }"><span>tab-1</span></template><template #title1="{ value, isActive }"><span>tab-2</span></template><template #title2="{ value, isActive }"><span>tab-3</span></template><template #tab0="{ value, isActive }"><div class="language-lang"><pre><code>const a = 1
</code></pre>
</div></template><template #tab1="{ value, isActive }"><div class="language-lang"><pre><code>const b = 2
</code></pre>
</div></template><template #tab2="{ value, isActive }"><div class="language-lang"><pre><code>const c = 3
</code></pre>
</div></template></CodeTabs><CodeTabs id="11" :data='[{"id":"npm"},{"id":"pnpm"},{"id":"yarn"}]' :active="1"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #tab0="{ value, isActive }"><div class="language-lang"><pre><code>npm i
</code></pre>
</div></template><template #tab1="{ value, isActive }"><div class="language-lang"><pre><code>pnpm i
</code></pre>
</div></template><template #tab2="{ value, isActive }"><div class="language-lang"><pre><code>yarn
</code></pre>
</div></template></CodeTabs><CodeTabs id="22" :data='[{"id":"a.ts"},{"id":"a.js"}]' tab-id="pm"><template #title0="{ value, isActive }"><VPIcon name="vscode-icons:file-type-typescript"/><span>a.ts</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-js"/><span>a.js</span></template><template #tab0="{ value, isActive }"><div class="language-lang"><pre><code>const a = 1
</code></pre>
</div></template><template #tab1="{ value, isActive }"><div class="language-lang"><pre><code>const a = 1
</code></pre>
</div></template></CodeTabs>"
`;
exports[`codeTabsPlugin > should work with no icon 1`] = `
"<CodeTabs id="0" :data='[{"id":"tab-1"},{"id":"tab-2"},{"id":"tab-3"}]'><template #title0="{ value, isActive }"><span>tab-1</span></template><template #title1="{ value, isActive }"><span>tab-2</span></template><template #title2="{ value, isActive }"><span>tab-3</span></template><template #tab0="{ value, isActive }"><pre><code class="language-js"><div class="language-js"><pre><code>const a = 1
</code></pre></div></code></pre>
</template><template #tab1="{ value, isActive }"><pre><code class="language-js"><div class="language-js"><pre><code>const b = 2
</code></pre></div></code></pre>
</template><template #tab2="{ value, isActive }"><pre><code class="language-js"><div class="language-js"><pre><code>const c = 3
</code></pre></div></code></pre>
</template></CodeTabs><CodeTabs id="11" :data='[{"id":"npm"},{"id":"pnpm"},{"id":"yarn"}]' :active="1"><template #title0="{ value, isActive }"><span>npm</span></template><template #title1="{ value, isActive }"><span>pnpm</span></template><template #title2="{ value, isActive }"><span>yarn</span></template><template #tab0="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>npm i
</code></pre></div></code></pre>
</template><template #tab1="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>pnpm i
</code></pre></div></code></pre>
</template><template #tab2="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>yarn
</code></pre></div></code></pre>
</template></CodeTabs><CodeTabs id="22" :data='[{"id":"a.ts"},{"id":"a.js"}]' tab-id="pm"><template #title0="{ value, isActive }"><span>a.ts</span></template><template #title1="{ value, isActive }"><span>a.js</span></template><template #tab0="{ value, isActive }"><pre><code class="language-ts"><div class="language-ts"><pre><code>const a = 1
</code></pre></div></code></pre>
</template><template #tab1="{ value, isActive }"><pre><code class="language-js"><div class="language-js"><pre><code>const a = 1
</code></pre></div></code></pre>
</template></CodeTabs>"
"<CodeTabs id="0" :data='[{"id":"tab-1"},{"id":"tab-2"},{"id":"tab-3"}]'><template #title0="{ value, isActive }"><span>tab-1</span></template><template #title1="{ value, isActive }"><span>tab-2</span></template><template #title2="{ value, isActive }"><span>tab-3</span></template><template #tab0="{ value, isActive }"><div class="language-lang"><pre><code>const a = 1
</code></pre>
</div></template><template #tab1="{ value, isActive }"><div class="language-lang"><pre><code>const b = 2
</code></pre>
</div></template><template #tab2="{ value, isActive }"><div class="language-lang"><pre><code>const c = 3
</code></pre>
</div></template></CodeTabs><CodeTabs id="11" :data='[{"id":"npm"},{"id":"pnpm"},{"id":"yarn"}]' :active="1"><template #title0="{ value, isActive }"><span>npm</span></template><template #title1="{ value, isActive }"><span>pnpm</span></template><template #title2="{ value, isActive }"><span>yarn</span></template><template #tab0="{ value, isActive }"><div class="language-lang"><pre><code>npm i
</code></pre>
</div></template><template #tab1="{ value, isActive }"><div class="language-lang"><pre><code>pnpm i
</code></pre>
</div></template><template #tab2="{ value, isActive }"><div class="language-lang"><pre><code>yarn
</code></pre>
</div></template></CodeTabs><CodeTabs id="22" :data='[{"id":"a.ts"},{"id":"a.js"}]' tab-id="pm"><template #title0="{ value, isActive }"><span>a.ts</span></template><template #title1="{ value, isActive }"><span>a.js</span></template><template #tab0="{ value, isActive }"><div class="language-lang"><pre><code>const a = 1
</code></pre>
</div></template><template #tab1="{ value, isActive }"><div class="language-lang"><pre><code>const a = 1
</code></pre>
</div></template></CodeTabs>"
`;
exports[`codeTabsPlugin > should work with options: \`{ named: false, extensions: false }\` 1`] = `
"<CodeTabs id="0" :data='[{"id":"tab-1"},{"id":"tab-2"},{"id":"tab-3"}]'><template #title0="{ value, isActive }"><span>tab-1</span></template><template #title1="{ value, isActive }"><span>tab-2</span></template><template #title2="{ value, isActive }"><span>tab-3</span></template><template #tab0="{ value, isActive }"><pre><code class="language-js"><div class="language-js"><pre><code>const a = 1
</code></pre></div></code></pre>
</template><template #tab1="{ value, isActive }"><pre><code class="language-js"><div class="language-js"><pre><code>const b = 2
</code></pre></div></code></pre>
</template><template #tab2="{ value, isActive }"><pre><code class="language-js"><div class="language-js"><pre><code>const c = 3
</code></pre></div></code></pre>
</template></CodeTabs><CodeTabs id="11" :data='[{"id":"npm"},{"id":"pnpm"},{"id":"yarn"}]' :active="1"><template #title0="{ value, isActive }"><span>npm</span></template><template #title1="{ value, isActive }"><span>pnpm</span></template><template #title2="{ value, isActive }"><span>yarn</span></template><template #tab0="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>npm i
</code></pre></div></code></pre>
</template><template #tab1="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>pnpm i
</code></pre></div></code></pre>
</template><template #tab2="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>yarn
</code></pre></div></code></pre>
</template></CodeTabs><CodeTabs id="22" :data='[{"id":"a.ts"},{"id":"a.js"}]' tab-id="pm"><template #title0="{ value, isActive }"><span>a.ts</span></template><template #title1="{ value, isActive }"><span>a.js</span></template><template #tab0="{ value, isActive }"><pre><code class="language-ts"><div class="language-ts"><pre><code>const a = 1
</code></pre></div></code></pre>
</template><template #tab1="{ value, isActive }"><pre><code class="language-js"><div class="language-js"><pre><code>const a = 1
</code></pre></div></code></pre>
</template></CodeTabs>"
"<CodeTabs id="0" :data='[{"id":"tab-1"},{"id":"tab-2"},{"id":"tab-3"}]'><template #title0="{ value, isActive }"><span>tab-1</span></template><template #title1="{ value, isActive }"><span>tab-2</span></template><template #title2="{ value, isActive }"><span>tab-3</span></template><template #tab0="{ value, isActive }"><div class="language-lang"><pre><code>const a = 1
</code></pre>
</div></template><template #tab1="{ value, isActive }"><div class="language-lang"><pre><code>const b = 2
</code></pre>
</div></template><template #tab2="{ value, isActive }"><div class="language-lang"><pre><code>const c = 3
</code></pre>
</div></template></CodeTabs><CodeTabs id="11" :data='[{"id":"npm"},{"id":"pnpm"},{"id":"yarn"}]' :active="1"><template #title0="{ value, isActive }"><span>npm</span></template><template #title1="{ value, isActive }"><span>pnpm</span></template><template #title2="{ value, isActive }"><span>yarn</span></template><template #tab0="{ value, isActive }"><div class="language-lang"><pre><code>npm i
</code></pre>
</div></template><template #tab1="{ value, isActive }"><div class="language-lang"><pre><code>pnpm i
</code></pre>
</div></template><template #tab2="{ value, isActive }"><div class="language-lang"><pre><code>yarn
</code></pre>
</div></template></CodeTabs><CodeTabs id="22" :data='[{"id":"a.ts"},{"id":"a.js"}]' tab-id="pm"><template #title0="{ value, isActive }"><span>a.ts</span></template><template #title1="{ value, isActive }"><span>a.js</span></template><template #tab0="{ value, isActive }"><div class="language-lang"><pre><code>const a = 1
</code></pre>
</div></template><template #tab1="{ value, isActive }"><div class="language-lang"><pre><code>const a = 1
</code></pre>
</div></template></CodeTabs>"
`;
exports[`codeTabsPlugin > should work with options: { named: [npm,pnpm,yarn], extensions: [.js,.ts] } 1`] = `
"<CodeTabs id="0" :data='[{"id":"tab-1"},{"id":"tab-2"},{"id":"tab-3"}]'><template #title0="{ value, isActive }"><span>tab-1</span></template><template #title1="{ value, isActive }"><span>tab-2</span></template><template #title2="{ value, isActive }"><span>tab-3</span></template><template #tab0="{ value, isActive }"><pre><code class="language-js"><div class="language-js"><pre><code>const a = 1
</code></pre></div></code></pre>
</template><template #tab1="{ value, isActive }"><pre><code class="language-js"><div class="language-js"><pre><code>const b = 2
</code></pre></div></code></pre>
</template><template #tab2="{ value, isActive }"><pre><code class="language-js"><div class="language-js"><pre><code>const c = 3
</code></pre></div></code></pre>
</template></CodeTabs><CodeTabs id="11" :data='[{"id":"npm"},{"id":"pnpm"},{"id":"yarn"}]' :active="1"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #tab0="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>npm i
</code></pre></div></code></pre>
</template><template #tab1="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>pnpm i
</code></pre></div></code></pre>
</template><template #tab2="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>yarn
</code></pre></div></code></pre>
</template></CodeTabs><CodeTabs id="22" :data='[{"id":"a.ts"},{"id":"a.js"}]' tab-id="pm"><template #title0="{ value, isActive }"><VPIcon name="vscode-icons:file-type-typescript"/><span>a.ts</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-js"/><span>a.js</span></template><template #tab0="{ value, isActive }"><pre><code class="language-ts"><div class="language-ts"><pre><code>const a = 1
</code></pre></div></code></pre>
</template><template #tab1="{ value, isActive }"><pre><code class="language-js"><div class="language-js"><pre><code>const a = 1
</code></pre></div></code></pre>
</template></CodeTabs>"
"<CodeTabs id="0" :data='[{"id":"tab-1"},{"id":"tab-2"},{"id":"tab-3"}]'><template #title0="{ value, isActive }"><span>tab-1</span></template><template #title1="{ value, isActive }"><span>tab-2</span></template><template #title2="{ value, isActive }"><span>tab-3</span></template><template #tab0="{ value, isActive }"><div class="language-lang"><pre><code>const a = 1
</code></pre>
</div></template><template #tab1="{ value, isActive }"><div class="language-lang"><pre><code>const b = 2
</code></pre>
</div></template><template #tab2="{ value, isActive }"><div class="language-lang"><pre><code>const c = 3
</code></pre>
</div></template></CodeTabs><CodeTabs id="11" :data='[{"id":"npm"},{"id":"pnpm"},{"id":"yarn"}]' :active="1"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #tab0="{ value, isActive }"><div class="language-lang"><pre><code>npm i
</code></pre>
</div></template><template #tab1="{ value, isActive }"><div class="language-lang"><pre><code>pnpm i
</code></pre>
</div></template><template #tab2="{ value, isActive }"><div class="language-lang"><pre><code>yarn
</code></pre>
</div></template></CodeTabs><CodeTabs id="22" :data='[{"id":"a.ts"},{"id":"a.js"}]' tab-id="pm"><template #title0="{ value, isActive }"><VPIcon name="vscode-icons:file-type-typescript"/><span>a.ts</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-js"/><span>a.js</span></template><template #tab0="{ value, isActive }"><div class="language-lang"><pre><code>const a = 1
</code></pre>
</div></template><template #tab1="{ value, isActive }"><div class="language-lang"><pre><code>const a = 1
</code></pre>
</div></template></CodeTabs>"
`;

View File

@ -1,361 +1,361 @@
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
exports[`npmToPlugin > should work width options: [npm, yarn, pnpm] 1`] = `
"<CodeTabs id="0" :data='[{"id":"npm"},{"id":"yarn"},{"id":"pnpm"}]' tab-id="npm-to-0"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #tab0="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>
</code></pre></div></code></pre>
</template><template #tab1="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>
</code></pre></div></code></pre>
</template><template #tab2="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>
</code></pre></div></code></pre>
</template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"yarn"},{"id":"pnpm"}]' tab-id="npm-to-3"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #tab0="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>npm install
"<CodeTabs id="0" :data='[{"id":"npm"},{"id":"yarn"},{"id":"pnpm"}]' tab-id="npm-to-0"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #tab0="{ value, isActive }"><div class="language-lang"><pre><code>
</code></pre>
</div></template><template #tab1="{ value, isActive }"><div class="language-lang"><pre><code>
</code></pre>
</div></template><template #tab2="{ value, isActive }"><div class="language-lang"><pre><code>
</code></pre>
</div></template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"yarn"},{"id":"pnpm"}]' tab-id="npm-to-3"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #tab0="{ value, isActive }"><div class="language-lang"><pre><code>npm install
</code></pre></div></code></pre>
</template><template #tab1="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>yarn
</code></pre>
</div></template><template #tab1="{ value, isActive }"><div class="language-lang"><pre><code>yarn
</code></pre></div></code></pre>
</template><template #tab2="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>pnpm install
</code></pre>
</div></template><template #tab2="{ value, isActive }"><div class="language-lang"><pre><code>pnpm install
</code></pre></div></code></pre>
</template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"yarn"},{"id":"pnpm"}]' tab-id="npm-to-6"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #tab0="{ value, isActive }"><pre><code class="language-shell"><div class="language-shell"><pre><code>npm install
</code></pre>
</div></template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"yarn"},{"id":"pnpm"}]' tab-id="npm-to-6"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #tab0="{ value, isActive }"><div class="language-lang"><pre><code>npm install
</code></pre></div></code></pre>
</template><template #tab1="{ value, isActive }"><pre><code class="language-shell"><div class="language-shell"><pre><code>yarn
</code></pre>
</div></template><template #tab1="{ value, isActive }"><div class="language-lang"><pre><code>yarn
</code></pre></div></code></pre>
</template><template #tab2="{ value, isActive }"><pre><code class="language-shell"><div class="language-shell"><pre><code>pnpm install
</code></pre>
</div></template><template #tab2="{ value, isActive }"><div class="language-lang"><pre><code>pnpm install
</code></pre></div></code></pre>
</template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"yarn"},{"id":"pnpm"}]' tab-id="npm-to-9"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #tab0="{ value, isActive }"><pre><code class="language-bash"><div class="language-bash"><pre><code>npm install
</code></pre>
</div></template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"yarn"},{"id":"pnpm"}]' tab-id="npm-to-9"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #tab0="{ value, isActive }"><div class="language-lang"><pre><code>npm install
</code></pre></div></code></pre>
</template><template #tab1="{ value, isActive }"><pre><code class="language-bash"><div class="language-bash"><pre><code>yarn
</code></pre>
</div></template><template #tab1="{ value, isActive }"><div class="language-lang"><pre><code>yarn
</code></pre></div></code></pre>
</template><template #tab2="{ value, isActive }"><pre><code class="language-bash"><div class="language-bash"><pre><code>pnpm install
</code></pre>
</div></template><template #tab2="{ value, isActive }"><div class="language-lang"><pre><code>pnpm install
</code></pre></div></code></pre>
</template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"yarn"},{"id":"pnpm"}]' tab-id="npm-to-12"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #tab0="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>cross-env NODE_ENV=production npm run docs
</code></pre>
</div></template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"yarn"},{"id":"pnpm"}]' tab-id="npm-to-12"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #tab0="{ value, isActive }"><div class="language-lang"><pre><code>cross-env NODE_ENV=production npm run docs
</code></pre></div></code></pre>
</template><template #tab1="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>cross-env NODE_ENV=production yarn docs
</code></pre>
</div></template><template #tab1="{ value, isActive }"><div class="language-lang"><pre><code>cross-env NODE_ENV=production yarn docs
</code></pre></div></code></pre>
</template><template #tab2="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>cross-env NODE_ENV=production pnpm docs
</code></pre>
</div></template><template #tab2="{ value, isActive }"><div class="language-lang"><pre><code>cross-env NODE_ENV=production pnpm docs
</code></pre></div></code></pre>
</template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"yarn"},{"id":"pnpm"}]' tab-id="npm-to-15"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #tab0="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>npm i -D package1 package2
</code></pre>
</div></template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"yarn"},{"id":"pnpm"}]' tab-id="npm-to-15"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #tab0="{ value, isActive }"><div class="language-lang"><pre><code>npm i -D package1 package2
npm i --save-peer package3
npm run docs
</code></pre></div></code></pre>
</template><template #tab1="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>yarn add -D package1package2
</code></pre>
</div></template><template #tab1="{ value, isActive }"><div class="language-lang"><pre><code>yarn add -D package1package2
yarn add --peer package3
yarn docs
</code></pre></div></code></pre>
</template><template #tab2="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>pnpm add -D package1package2
</code></pre>
</div></template><template #tab2="{ value, isActive }"><div class="language-lang"><pre><code>pnpm add -D package1package2
pnpm add --save-peer package3
pnpm docs
</code></pre></div></code></pre>
</template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"yarn"},{"id":"pnpm"}]' tab-id="npm-to-18"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #tab0="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>npm install && npm run docs
</code></pre>
</div></template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"yarn"},{"id":"pnpm"}]' tab-id="npm-to-18"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #tab0="{ value, isActive }"><div class="language-lang"><pre><code>npm install && npm run docs
mkdir foo
</code></pre></div></code></pre>
</template><template #tab1="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>yarn && yarn docs
</code></pre>
</div></template><template #tab1="{ value, isActive }"><div class="language-lang"><pre><code>yarn && yarn docs
mkdir foo
</code></pre></div></code></pre>
</template><template #tab2="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>pnpm install && pnpm docs
</code></pre>
</div></template><template #tab2="{ value, isActive }"><div class="language-lang"><pre><code>pnpm install && pnpm docs
mkdir foo
</code></pre></div></code></pre>
</template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"yarn"},{"id":"pnpm"}]' tab-id="npm-to-21"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #tab0="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>npm run docs -- --clean-cache --clean-temp
</code></pre>
</div></template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"yarn"},{"id":"pnpm"}]' tab-id="npm-to-21"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #tab0="{ value, isActive }"><div class="language-lang"><pre><code>npm run docs -- --clean-cache --clean-temp
</code></pre></div></code></pre>
</template><template #tab1="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>yarn docs --clean-cache --clean-temp
</code></pre>
</div></template><template #tab1="{ value, isActive }"><div class="language-lang"><pre><code>yarn docs --clean-cache --clean-temp
</code></pre></div></code></pre>
</template><template #tab2="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>pnpm docs --clean-cache --clean-temp
</code></pre>
</div></template><template #tab2="{ value, isActive }"><div class="language-lang"><pre><code>pnpm docs --clean-cache --clean-temp
</code></pre></div></code></pre>
</template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"pnpm"},{"id":"yarn"}]' tab-id="npm-to-24"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #tab0="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>npm create vuepress-theme-plume@latest
</code></pre>
</div></template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"pnpm"},{"id":"yarn"}]' tab-id="npm-to-24"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #tab0="{ value, isActive }"><div class="language-lang"><pre><code>npm create vuepress-theme-plume@latest
</code></pre></div></code></pre>
</template><template #tab1="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>pnpm create vuepress-theme-plume@latest
</code></pre>
</div></template><template #tab1="{ value, isActive }"><div class="language-lang"><pre><code>pnpm create vuepress-theme-plume@latest
</code></pre></div></code></pre>
</template><template #tab2="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>yarn create vuepress-theme-plume@latest
</code></pre>
</div></template><template #tab2="{ value, isActive }"><div class="language-lang"><pre><code>yarn create vuepress-theme-plume@latest
</code></pre></div></code></pre>
</template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"pnpm"},{"id":"yarn"},{"id":"bun"},{"id":"deno"}]' tab-id="npm-to-27"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #title3="{ value, isActive }"><VPIcon name="vscode-icons:file-type-bun"/><span>bun</span></template><template #title4="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-deno"/><span>deno</span></template><template #tab0="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>npx vp-update
</code></pre>
</div></template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"pnpm"},{"id":"yarn"},{"id":"bun"},{"id":"deno"}]' tab-id="npm-to-27"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #title3="{ value, isActive }"><VPIcon name="vscode-icons:file-type-bun"/><span>bun</span></template><template #title4="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-deno"/><span>deno</span></template><template #tab0="{ value, isActive }"><div class="language-lang"><pre><code>npx vp-update
</code></pre></div></code></pre>
</template><template #tab1="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>pnpm dlx vp-update
</code></pre>
</div></template><template #tab1="{ value, isActive }"><div class="language-lang"><pre><code>pnpm dlx vp-update
</code></pre></div></code></pre>
</template><template #tab2="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>yarn dlx vp-update
</code></pre>
</div></template><template #tab2="{ value, isActive }"><div class="language-lang"><pre><code>yarn dlx vp-update
</code></pre></div></code></pre>
</template><template #tab3="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>bunx vp-update
</code></pre>
</div></template><template #tab3="{ value, isActive }"><div class="language-lang"><pre><code>bunx vp-update
</code></pre></div></code></pre>
</template><template #tab4="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>deno run -A vp-update
</code></pre>
</div></template><template #tab4="{ value, isActive }"><div class="language-lang"><pre><code>deno run -A vp-update
</code></pre></div></code></pre>
</template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"yarn"},{"id":"pnpm"}]' tab-id="npm-to-30"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #tab0="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>mkdir foo
</code></pre>
</div></template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"yarn"},{"id":"pnpm"}]' tab-id="npm-to-30"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #tab0="{ value, isActive }"><div class="language-lang"><pre><code>mkdir foo
</code></pre></div></code></pre>
</template><template #tab1="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>mkdir foo
</code></pre>
</div></template><template #tab1="{ value, isActive }"><div class="language-lang"><pre><code>mkdir foo
</code></pre></div></code></pre>
</template><template #tab2="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>mkdir foo
</code></pre>
</div></template><template #tab2="{ value, isActive }"><div class="language-lang"><pre><code>mkdir foo
</code></pre></div></code></pre>
</template></CodeTabs><p>anything</p>
<pre><code class="language-sh"><div class="language-sh"><pre><code></code></pre></div></code></pre>
"
</code></pre>
</div></template></CodeTabs><p>anything</p>
<div class="language-lang"><pre><code></code></pre>
</div>"
`;
exports[`npmToPlugin > should work width options: { tabs: [npm, yarn, pnpm] } 1`] = `
"<CodeTabs id="0" :data='[{"id":"npm"},{"id":"yarn"},{"id":"pnpm"}]' tab-id="npm-to-0"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #tab0="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>
</code></pre></div></code></pre>
</template><template #tab1="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>
</code></pre></div></code></pre>
</template><template #tab2="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>
</code></pre></div></code></pre>
</template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"yarn"},{"id":"pnpm"}]' tab-id="npm-to-3"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #tab0="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>npm install
"<CodeTabs id="0" :data='[{"id":"npm"},{"id":"yarn"},{"id":"pnpm"}]' tab-id="npm-to-0"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #tab0="{ value, isActive }"><div class="language-lang"><pre><code>
</code></pre>
</div></template><template #tab1="{ value, isActive }"><div class="language-lang"><pre><code>
</code></pre>
</div></template><template #tab2="{ value, isActive }"><div class="language-lang"><pre><code>
</code></pre>
</div></template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"yarn"},{"id":"pnpm"}]' tab-id="npm-to-3"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #tab0="{ value, isActive }"><div class="language-lang"><pre><code>npm install
</code></pre></div></code></pre>
</template><template #tab1="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>yarn
</code></pre>
</div></template><template #tab1="{ value, isActive }"><div class="language-lang"><pre><code>yarn
</code></pre></div></code></pre>
</template><template #tab2="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>pnpm install
</code></pre>
</div></template><template #tab2="{ value, isActive }"><div class="language-lang"><pre><code>pnpm install
</code></pre></div></code></pre>
</template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"yarn"},{"id":"pnpm"}]' tab-id="npm-to-6"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #tab0="{ value, isActive }"><pre><code class="language-shell"><div class="language-shell"><pre><code>npm install
</code></pre>
</div></template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"yarn"},{"id":"pnpm"}]' tab-id="npm-to-6"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #tab0="{ value, isActive }"><div class="language-lang"><pre><code>npm install
</code></pre></div></code></pre>
</template><template #tab1="{ value, isActive }"><pre><code class="language-shell"><div class="language-shell"><pre><code>yarn
</code></pre>
</div></template><template #tab1="{ value, isActive }"><div class="language-lang"><pre><code>yarn
</code></pre></div></code></pre>
</template><template #tab2="{ value, isActive }"><pre><code class="language-shell"><div class="language-shell"><pre><code>pnpm install
</code></pre>
</div></template><template #tab2="{ value, isActive }"><div class="language-lang"><pre><code>pnpm install
</code></pre></div></code></pre>
</template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"yarn"},{"id":"pnpm"}]' tab-id="npm-to-9"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #tab0="{ value, isActive }"><pre><code class="language-bash"><div class="language-bash"><pre><code>npm install
</code></pre>
</div></template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"yarn"},{"id":"pnpm"}]' tab-id="npm-to-9"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #tab0="{ value, isActive }"><div class="language-lang"><pre><code>npm install
</code></pre></div></code></pre>
</template><template #tab1="{ value, isActive }"><pre><code class="language-bash"><div class="language-bash"><pre><code>yarn
</code></pre>
</div></template><template #tab1="{ value, isActive }"><div class="language-lang"><pre><code>yarn
</code></pre></div></code></pre>
</template><template #tab2="{ value, isActive }"><pre><code class="language-bash"><div class="language-bash"><pre><code>pnpm install
</code></pre>
</div></template><template #tab2="{ value, isActive }"><div class="language-lang"><pre><code>pnpm install
</code></pre></div></code></pre>
</template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"yarn"},{"id":"pnpm"}]' tab-id="npm-to-12"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #tab0="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>cross-env NODE_ENV=production npm run docs
</code></pre>
</div></template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"yarn"},{"id":"pnpm"}]' tab-id="npm-to-12"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #tab0="{ value, isActive }"><div class="language-lang"><pre><code>cross-env NODE_ENV=production npm run docs
</code></pre></div></code></pre>
</template><template #tab1="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>cross-env NODE_ENV=production yarn docs
</code></pre>
</div></template><template #tab1="{ value, isActive }"><div class="language-lang"><pre><code>cross-env NODE_ENV=production yarn docs
</code></pre></div></code></pre>
</template><template #tab2="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>cross-env NODE_ENV=production pnpm docs
</code></pre>
</div></template><template #tab2="{ value, isActive }"><div class="language-lang"><pre><code>cross-env NODE_ENV=production pnpm docs
</code></pre></div></code></pre>
</template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"yarn"},{"id":"pnpm"}]' tab-id="npm-to-15"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #tab0="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>npm i -D package1 package2
</code></pre>
</div></template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"yarn"},{"id":"pnpm"}]' tab-id="npm-to-15"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #tab0="{ value, isActive }"><div class="language-lang"><pre><code>npm i -D package1 package2
npm i --save-peer package3
npm run docs
</code></pre></div></code></pre>
</template><template #tab1="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>yarn add -D package1package2
</code></pre>
</div></template><template #tab1="{ value, isActive }"><div class="language-lang"><pre><code>yarn add -D package1package2
yarn add --peer package3
yarn docs
</code></pre></div></code></pre>
</template><template #tab2="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>pnpm add -D package1package2
</code></pre>
</div></template><template #tab2="{ value, isActive }"><div class="language-lang"><pre><code>pnpm add -D package1package2
pnpm add --save-peer package3
pnpm docs
</code></pre></div></code></pre>
</template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"yarn"},{"id":"pnpm"}]' tab-id="npm-to-18"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #tab0="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>npm install && npm run docs
</code></pre>
</div></template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"yarn"},{"id":"pnpm"}]' tab-id="npm-to-18"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #tab0="{ value, isActive }"><div class="language-lang"><pre><code>npm install && npm run docs
mkdir foo
</code></pre></div></code></pre>
</template><template #tab1="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>yarn && yarn docs
</code></pre>
</div></template><template #tab1="{ value, isActive }"><div class="language-lang"><pre><code>yarn && yarn docs
mkdir foo
</code></pre></div></code></pre>
</template><template #tab2="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>pnpm install && pnpm docs
</code></pre>
</div></template><template #tab2="{ value, isActive }"><div class="language-lang"><pre><code>pnpm install && pnpm docs
mkdir foo
</code></pre></div></code></pre>
</template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"yarn"},{"id":"pnpm"}]' tab-id="npm-to-21"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #tab0="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>npm run docs -- --clean-cache --clean-temp
</code></pre>
</div></template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"yarn"},{"id":"pnpm"}]' tab-id="npm-to-21"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #tab0="{ value, isActive }"><div class="language-lang"><pre><code>npm run docs -- --clean-cache --clean-temp
</code></pre></div></code></pre>
</template><template #tab1="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>yarn docs --clean-cache --clean-temp
</code></pre>
</div></template><template #tab1="{ value, isActive }"><div class="language-lang"><pre><code>yarn docs --clean-cache --clean-temp
</code></pre></div></code></pre>
</template><template #tab2="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>pnpm docs --clean-cache --clean-temp
</code></pre>
</div></template><template #tab2="{ value, isActive }"><div class="language-lang"><pre><code>pnpm docs --clean-cache --clean-temp
</code></pre></div></code></pre>
</template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"pnpm"},{"id":"yarn"}]' tab-id="npm-to-24"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #tab0="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>npm create vuepress-theme-plume@latest
</code></pre>
</div></template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"pnpm"},{"id":"yarn"}]' tab-id="npm-to-24"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #tab0="{ value, isActive }"><div class="language-lang"><pre><code>npm create vuepress-theme-plume@latest
</code></pre></div></code></pre>
</template><template #tab1="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>pnpm create vuepress-theme-plume@latest
</code></pre>
</div></template><template #tab1="{ value, isActive }"><div class="language-lang"><pre><code>pnpm create vuepress-theme-plume@latest
</code></pre></div></code></pre>
</template><template #tab2="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>yarn create vuepress-theme-plume@latest
</code></pre>
</div></template><template #tab2="{ value, isActive }"><div class="language-lang"><pre><code>yarn create vuepress-theme-plume@latest
</code></pre></div></code></pre>
</template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"pnpm"},{"id":"yarn"},{"id":"bun"},{"id":"deno"}]' tab-id="npm-to-27"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #title3="{ value, isActive }"><VPIcon name="vscode-icons:file-type-bun"/><span>bun</span></template><template #title4="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-deno"/><span>deno</span></template><template #tab0="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>npx vp-update
</code></pre>
</div></template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"pnpm"},{"id":"yarn"},{"id":"bun"},{"id":"deno"}]' tab-id="npm-to-27"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #title3="{ value, isActive }"><VPIcon name="vscode-icons:file-type-bun"/><span>bun</span></template><template #title4="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-deno"/><span>deno</span></template><template #tab0="{ value, isActive }"><div class="language-lang"><pre><code>npx vp-update
</code></pre></div></code></pre>
</template><template #tab1="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>pnpm dlx vp-update
</code></pre>
</div></template><template #tab1="{ value, isActive }"><div class="language-lang"><pre><code>pnpm dlx vp-update
</code></pre></div></code></pre>
</template><template #tab2="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>yarn dlx vp-update
</code></pre>
</div></template><template #tab2="{ value, isActive }"><div class="language-lang"><pre><code>yarn dlx vp-update
</code></pre></div></code></pre>
</template><template #tab3="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>bunx vp-update
</code></pre>
</div></template><template #tab3="{ value, isActive }"><div class="language-lang"><pre><code>bunx vp-update
</code></pre></div></code></pre>
</template><template #tab4="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>deno run -A vp-update
</code></pre>
</div></template><template #tab4="{ value, isActive }"><div class="language-lang"><pre><code>deno run -A vp-update
</code></pre></div></code></pre>
</template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"yarn"},{"id":"pnpm"}]' tab-id="npm-to-30"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #tab0="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>mkdir foo
</code></pre>
</div></template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"yarn"},{"id":"pnpm"}]' tab-id="npm-to-30"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #tab0="{ value, isActive }"><div class="language-lang"><pre><code>mkdir foo
</code></pre></div></code></pre>
</template><template #tab1="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>mkdir foo
</code></pre>
</div></template><template #tab1="{ value, isActive }"><div class="language-lang"><pre><code>mkdir foo
</code></pre></div></code></pre>
</template><template #tab2="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>mkdir foo
</code></pre>
</div></template><template #tab2="{ value, isActive }"><div class="language-lang"><pre><code>mkdir foo
</code></pre></div></code></pre>
</template></CodeTabs><p>anything</p>
<pre><code class="language-sh"><div class="language-sh"><pre><code></code></pre></div></code></pre>
"
</code></pre>
</div></template></CodeTabs><p>anything</p>
<div class="language-lang"><pre><code></code></pre>
</div>"
`;
exports[`npmToPlugin > should work with default options 1`] = `
"<CodeTabs id="0" :data='[{"id":"npm"},{"id":"pnpm"},{"id":"yarn"}]' tab-id="npm-to-0"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #tab0="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>
</code></pre></div></code></pre>
</template><template #tab1="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>
</code></pre></div></code></pre>
</template><template #tab2="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>
</code></pre></div></code></pre>
</template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"pnpm"},{"id":"yarn"}]' tab-id="npm-to-3"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #tab0="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>npm install
"<CodeTabs id="0" :data='[{"id":"npm"},{"id":"pnpm"},{"id":"yarn"}]' tab-id="npm-to-0"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #tab0="{ value, isActive }"><div class="language-lang"><pre><code>
</code></pre>
</div></template><template #tab1="{ value, isActive }"><div class="language-lang"><pre><code>
</code></pre>
</div></template><template #tab2="{ value, isActive }"><div class="language-lang"><pre><code>
</code></pre>
</div></template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"pnpm"},{"id":"yarn"}]' tab-id="npm-to-3"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #tab0="{ value, isActive }"><div class="language-lang"><pre><code>npm install
</code></pre></div></code></pre>
</template><template #tab1="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>pnpm install
</code></pre>
</div></template><template #tab1="{ value, isActive }"><div class="language-lang"><pre><code>pnpm install
</code></pre></div></code></pre>
</template><template #tab2="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>yarn
</code></pre>
</div></template><template #tab2="{ value, isActive }"><div class="language-lang"><pre><code>yarn
</code></pre></div></code></pre>
</template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"pnpm"},{"id":"yarn"}]' tab-id="npm-to-6"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #tab0="{ value, isActive }"><pre><code class="language-shell"><div class="language-shell"><pre><code>npm install
</code></pre>
</div></template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"pnpm"},{"id":"yarn"}]' tab-id="npm-to-6"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #tab0="{ value, isActive }"><div class="language-lang"><pre><code>npm install
</code></pre></div></code></pre>
</template><template #tab1="{ value, isActive }"><pre><code class="language-shell"><div class="language-shell"><pre><code>pnpm install
</code></pre>
</div></template><template #tab1="{ value, isActive }"><div class="language-lang"><pre><code>pnpm install
</code></pre></div></code></pre>
</template><template #tab2="{ value, isActive }"><pre><code class="language-shell"><div class="language-shell"><pre><code>yarn
</code></pre>
</div></template><template #tab2="{ value, isActive }"><div class="language-lang"><pre><code>yarn
</code></pre></div></code></pre>
</template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"pnpm"},{"id":"yarn"}]' tab-id="npm-to-9"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #tab0="{ value, isActive }"><pre><code class="language-bash"><div class="language-bash"><pre><code>npm install
</code></pre>
</div></template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"pnpm"},{"id":"yarn"}]' tab-id="npm-to-9"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #tab0="{ value, isActive }"><div class="language-lang"><pre><code>npm install
</code></pre></div></code></pre>
</template><template #tab1="{ value, isActive }"><pre><code class="language-bash"><div class="language-bash"><pre><code>pnpm install
</code></pre>
</div></template><template #tab1="{ value, isActive }"><div class="language-lang"><pre><code>pnpm install
</code></pre></div></code></pre>
</template><template #tab2="{ value, isActive }"><pre><code class="language-bash"><div class="language-bash"><pre><code>yarn
</code></pre>
</div></template><template #tab2="{ value, isActive }"><div class="language-lang"><pre><code>yarn
</code></pre></div></code></pre>
</template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"pnpm"},{"id":"yarn"}]' tab-id="npm-to-12"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #tab0="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>cross-env NODE_ENV=production npm run docs
</code></pre>
</div></template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"pnpm"},{"id":"yarn"}]' tab-id="npm-to-12"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #tab0="{ value, isActive }"><div class="language-lang"><pre><code>cross-env NODE_ENV=production npm run docs
</code></pre></div></code></pre>
</template><template #tab1="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>cross-env NODE_ENV=production pnpm docs
</code></pre>
</div></template><template #tab1="{ value, isActive }"><div class="language-lang"><pre><code>cross-env NODE_ENV=production pnpm docs
</code></pre></div></code></pre>
</template><template #tab2="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>cross-env NODE_ENV=production yarn docs
</code></pre>
</div></template><template #tab2="{ value, isActive }"><div class="language-lang"><pre><code>cross-env NODE_ENV=production yarn docs
</code></pre></div></code></pre>
</template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"pnpm"},{"id":"yarn"}]' tab-id="npm-to-15"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #tab0="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>npm i -D package1 package2
</code></pre>
</div></template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"pnpm"},{"id":"yarn"}]' tab-id="npm-to-15"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #tab0="{ value, isActive }"><div class="language-lang"><pre><code>npm i -D package1 package2
npm i --save-peer package3
npm run docs
</code></pre></div></code></pre>
</template><template #tab1="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>pnpm add -D package1package2
</code></pre>
</div></template><template #tab1="{ value, isActive }"><div class="language-lang"><pre><code>pnpm add -D package1package2
pnpm add --save-peer package3
pnpm docs
</code></pre></div></code></pre>
</template><template #tab2="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>yarn add -D package1package2
</code></pre>
</div></template><template #tab2="{ value, isActive }"><div class="language-lang"><pre><code>yarn add -D package1package2
yarn add --peer package3
yarn docs
</code></pre></div></code></pre>
</template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"pnpm"},{"id":"yarn"}]' tab-id="npm-to-18"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #tab0="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>npm install && npm run docs
</code></pre>
</div></template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"pnpm"},{"id":"yarn"}]' tab-id="npm-to-18"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #tab0="{ value, isActive }"><div class="language-lang"><pre><code>npm install && npm run docs
mkdir foo
</code></pre></div></code></pre>
</template><template #tab1="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>pnpm install && pnpm docs
</code></pre>
</div></template><template #tab1="{ value, isActive }"><div class="language-lang"><pre><code>pnpm install && pnpm docs
mkdir foo
</code></pre></div></code></pre>
</template><template #tab2="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>yarn && yarn docs
</code></pre>
</div></template><template #tab2="{ value, isActive }"><div class="language-lang"><pre><code>yarn && yarn docs
mkdir foo
</code></pre></div></code></pre>
</template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"pnpm"},{"id":"yarn"}]' tab-id="npm-to-21"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #tab0="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>npm run docs -- --clean-cache --clean-temp
</code></pre>
</div></template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"pnpm"},{"id":"yarn"}]' tab-id="npm-to-21"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #tab0="{ value, isActive }"><div class="language-lang"><pre><code>npm run docs -- --clean-cache --clean-temp
</code></pre></div></code></pre>
</template><template #tab1="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>pnpm docs --clean-cache --clean-temp
</code></pre>
</div></template><template #tab1="{ value, isActive }"><div class="language-lang"><pre><code>pnpm docs --clean-cache --clean-temp
</code></pre></div></code></pre>
</template><template #tab2="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>yarn docs --clean-cache --clean-temp
</code></pre>
</div></template><template #tab2="{ value, isActive }"><div class="language-lang"><pre><code>yarn docs --clean-cache --clean-temp
</code></pre></div></code></pre>
</template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"pnpm"},{"id":"yarn"}]' tab-id="npm-to-24"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #tab0="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>npm create vuepress-theme-plume@latest
</code></pre>
</div></template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"pnpm"},{"id":"yarn"}]' tab-id="npm-to-24"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #tab0="{ value, isActive }"><div class="language-lang"><pre><code>npm create vuepress-theme-plume@latest
</code></pre></div></code></pre>
</template><template #tab1="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>pnpm create vuepress-theme-plume@latest
</code></pre>
</div></template><template #tab1="{ value, isActive }"><div class="language-lang"><pre><code>pnpm create vuepress-theme-plume@latest
</code></pre></div></code></pre>
</template><template #tab2="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>yarn create vuepress-theme-plume@latest
</code></pre>
</div></template><template #tab2="{ value, isActive }"><div class="language-lang"><pre><code>yarn create vuepress-theme-plume@latest
</code></pre></div></code></pre>
</template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"pnpm"},{"id":"yarn"},{"id":"bun"},{"id":"deno"}]' tab-id="npm-to-27"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #title3="{ value, isActive }"><VPIcon name="vscode-icons:file-type-bun"/><span>bun</span></template><template #title4="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-deno"/><span>deno</span></template><template #tab0="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>npx vp-update
</code></pre>
</div></template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"pnpm"},{"id":"yarn"},{"id":"bun"},{"id":"deno"}]' tab-id="npm-to-27"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #title3="{ value, isActive }"><VPIcon name="vscode-icons:file-type-bun"/><span>bun</span></template><template #title4="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-deno"/><span>deno</span></template><template #tab0="{ value, isActive }"><div class="language-lang"><pre><code>npx vp-update
</code></pre></div></code></pre>
</template><template #tab1="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>pnpm dlx vp-update
</code></pre>
</div></template><template #tab1="{ value, isActive }"><div class="language-lang"><pre><code>pnpm dlx vp-update
</code></pre></div></code></pre>
</template><template #tab2="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>yarn dlx vp-update
</code></pre>
</div></template><template #tab2="{ value, isActive }"><div class="language-lang"><pre><code>yarn dlx vp-update
</code></pre></div></code></pre>
</template><template #tab3="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>bunx vp-update
</code></pre>
</div></template><template #tab3="{ value, isActive }"><div class="language-lang"><pre><code>bunx vp-update
</code></pre></div></code></pre>
</template><template #tab4="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>deno run -A vp-update
</code></pre>
</div></template><template #tab4="{ value, isActive }"><div class="language-lang"><pre><code>deno run -A vp-update
</code></pre></div></code></pre>
</template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"pnpm"},{"id":"yarn"}]' tab-id="npm-to-30"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #tab0="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>mkdir foo
</code></pre>
</div></template></CodeTabs><CodeTabs id="0" :data='[{"id":"npm"},{"id":"pnpm"},{"id":"yarn"}]' tab-id="npm-to-30"><template #title0="{ value, isActive }"><VPIcon name="logos:npm-icon"/><span>npm</span></template><template #title1="{ value, isActive }"><VPIcon name="vscode-icons:file-type-light-pnpm"/><span>pnpm</span></template><template #title2="{ value, isActive }"><VPIcon name="vscode-icons:file-type-yarn"/><span>yarn</span></template><template #tab0="{ value, isActive }"><div class="language-lang"><pre><code>mkdir foo
</code></pre></div></code></pre>
</template><template #tab1="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>mkdir foo
</code></pre>
</div></template><template #tab1="{ value, isActive }"><div class="language-lang"><pre><code>mkdir foo
</code></pre></div></code></pre>
</template><template #tab2="{ value, isActive }"><pre><code class="language-sh"><div class="language-sh"><pre><code>mkdir foo
</code></pre>
</div></template><template #tab2="{ value, isActive }"><div class="language-lang"><pre><code>mkdir foo
</code></pre></div></code></pre>
</template></CodeTabs><p>anything</p>
<pre><code class="language-sh"><div class="language-sh"><pre><code></code></pre></div></code></pre>
"
</code></pre>
</div></template></CodeTabs><p>anything</p>
<div class="language-lang"><pre><code></code></pre>
</div>"
`;

View File

@ -5,9 +5,10 @@ import { codeTabs } from '../src/node/container/codeTabs.js'
function createMarkdown(options?: CodeTabsOptions) {
const md = new MarkdownIt()
md.options.highlight = (str, lang) => {
return `<div class="language-${lang}"><pre><code>${str}</code></pre></div>`
}
md.options.highlight = str => `<pre><code>${str}</code></pre>`
const fence = md.renderer.rules.fence!
md.renderer.rules.fence = (...args) => `<div class="language-lang">${fence(...args)}</div>`
md.use(codeTabs, options)
return md
}

View File

@ -5,9 +5,14 @@ import { codeTabs } from '../src/node/container/codeTabs.js'
import { npmToPlugins, parseLine } from '../src/node/container/npmTo.js'
function createMarkdown(options?: NpmToOptions) {
return new MarkdownIt({
highlight: (str, lang) => `<div class="language-${lang}"><pre><code>${str}</code></pre></div>`,
}).use(codeTabs).use(npmToPlugins, options)
const md = new MarkdownIt()
md.options.highlight = str => `<pre><code>${str}</code></pre>`
const fence = md.renderer.rules.fence!
md.renderer.rules.fence = (...args) => `<div class="language-lang">${fence(...args)}</div>`
md.use(codeTabs).use(npmToPlugins, options)
return md
}
const FENCE = '```'

View File

@ -0,0 +1,456 @@
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
exports[`collapsedLinesPlugin > should not work with false 1`] = `
"<div class="language-"><pre><code>const line1 = 1
const line2 = 2
const line3 = 3
const line4 = 4
const line5 = 5
const line6 = 6
const line7 = 7
const line8 = 8
const line9 = 9
const line10 = 10
</code></pre>
</div><div class="language-"><pre><code>const line1 = 1
const line2 = 2
const line3 = 3
const line4 = 4
const line5 = 5
const line6 = 6
const line7 = 7
const line8 = 8
const line9 = 9
const line10 = 10
const line11 = 11
const line12 = 12
const line13 = 13
const line14 = 14
const line15 = 15
const line16 = 16
const line17 = 17
const line18 = 18
const line19 = 19
const line20 = 20
</code></pre>
</div><div class="language- has-collapsed collapsed" style="--vp-collapsed-lines:15;"><pre><code>const line1 = 1
const line2 = 2
const line3 = 3
const line4 = 4
const line5 = 5
const line6 = 6
const line7 = 7
const line8 = 8
const line9 = 9
const line10 = 10
const line11 = 11
const line12 = 12
const line13 = 13
const line14 = 14
const line15 = 15
const line16 = 16
const line17 = 17
const line18 = 18
const line19 = 19
const line20 = 20
</code></pre>
<div class="collapsed-lines"></div></div><div class="language- has-collapsed collapsed" style="--vp-collapsed-lines:10;"><pre><code>const line1 = 1
const line2 = 2
const line3 = 3
const line4 = 4
const line5 = 5
const line6 = 6
const line7 = 7
const line8 = 8
const line9 = 9
const line10 = 10
const line11 = 11
const line12 = 12
</code></pre>
<div class="collapsed-lines"></div></div><div class="language-"><pre><code>const line1 = 1
const line2 = 2
const line3 = 3
const line4 = 4
const line5 = 5
const line6 = 6
const line7 = 7
const line8 = 8
const line9 = 9
const line10 = 10
const line11 = 11
const line12 = 12
const line13 = 13
const line14 = 14
const line15 = 15
const line16 = 16
const line17 = 17
const line18 = 18
const line19 = 19
const line20 = 20
</code></pre>
</div>"
`;
exports[`collapsedLinesPlugin > should not work with includes styles 1`] = `
"<div class="language-" style="color: red;"><pre><code>const line1 = 1
const line2 = 2
const line3 = 3
const line4 = 4
const line5 = 5
const line6 = 6
const line7 = 7
const line8 = 8
const line9 = 9
const line10 = 10
</code></pre>
</div><div class="language- has-collapsed collapsed" style="--vp-collapsed-lines:15;color: red;"><pre><code>const line1 = 1
const line2 = 2
const line3 = 3
const line4 = 4
const line5 = 5
const line6 = 6
const line7 = 7
const line8 = 8
const line9 = 9
const line10 = 10
const line11 = 11
const line12 = 12
const line13 = 13
const line14 = 14
const line15 = 15
const line16 = 16
const line17 = 17
const line18 = 18
const line19 = 19
const line20 = 20
</code></pre>
<div class="collapsed-lines"></div></div><div class="language- has-collapsed collapsed" style="--vp-collapsed-lines:15;color: red;"><pre><code>const line1 = 1
const line2 = 2
const line3 = 3
const line4 = 4
const line5 = 5
const line6 = 6
const line7 = 7
const line8 = 8
const line9 = 9
const line10 = 10
const line11 = 11
const line12 = 12
const line13 = 13
const line14 = 14
const line15 = 15
const line16 = 16
const line17 = 17
const line18 = 18
const line19 = 19
const line20 = 20
</code></pre>
<div class="collapsed-lines"></div></div><div class="language- has-collapsed collapsed" style="--vp-collapsed-lines:10;color: red;"><pre><code>const line1 = 1
const line2 = 2
const line3 = 3
const line4 = 4
const line5 = 5
const line6 = 6
const line7 = 7
const line8 = 8
const line9 = 9
const line10 = 10
const line11 = 11
const line12 = 12
</code></pre>
<div class="collapsed-lines"></div></div><div class="language-" style="color: red;"><pre><code>const line1 = 1
const line2 = 2
const line3 = 3
const line4 = 4
const line5 = 5
const line6 = 6
const line7 = 7
const line8 = 8
const line9 = 9
const line10 = 10
const line11 = 11
const line12 = 12
const line13 = 13
const line14 = 14
const line15 = 15
const line16 = 16
const line17 = 17
const line18 = 18
const line19 = 19
const line20 = 20
</code></pre>
</div>"
`;
exports[`collapsedLinesPlugin > should work with default 1`] = `
"<div class="language-"><pre><code>const line1 = 1
const line2 = 2
const line3 = 3
const line4 = 4
const line5 = 5
const line6 = 6
const line7 = 7
const line8 = 8
const line9 = 9
const line10 = 10
</code></pre>
</div><div class="language-"><pre><code>const line1 = 1
const line2 = 2
const line3 = 3
const line4 = 4
const line5 = 5
const line6 = 6
const line7 = 7
const line8 = 8
const line9 = 9
const line10 = 10
const line11 = 11
const line12 = 12
const line13 = 13
const line14 = 14
const line15 = 15
const line16 = 16
const line17 = 17
const line18 = 18
const line19 = 19
const line20 = 20
</code></pre>
</div><div class="language- has-collapsed collapsed" style="--vp-collapsed-lines:15;"><pre><code>const line1 = 1
const line2 = 2
const line3 = 3
const line4 = 4
const line5 = 5
const line6 = 6
const line7 = 7
const line8 = 8
const line9 = 9
const line10 = 10
const line11 = 11
const line12 = 12
const line13 = 13
const line14 = 14
const line15 = 15
const line16 = 16
const line17 = 17
const line18 = 18
const line19 = 19
const line20 = 20
</code></pre>
<div class="collapsed-lines"></div></div><div class="language- has-collapsed collapsed" style="--vp-collapsed-lines:10;"><pre><code>const line1 = 1
const line2 = 2
const line3 = 3
const line4 = 4
const line5 = 5
const line6 = 6
const line7 = 7
const line8 = 8
const line9 = 9
const line10 = 10
const line11 = 11
const line12 = 12
</code></pre>
<div class="collapsed-lines"></div></div><div class="language-"><pre><code>const line1 = 1
const line2 = 2
const line3 = 3
const line4 = 4
const line5 = 5
const line6 = 6
const line7 = 7
const line8 = 8
const line9 = 9
const line10 = 10
const line11 = 11
const line12 = 12
const line13 = 13
const line14 = 14
const line15 = 15
const line16 = 16
const line17 = 17
const line18 = 18
const line19 = 19
const line20 = 20
</code></pre>
</div>"
`;
exports[`collapsedLinesPlugin > should work with number 1`] = `
"<div class="language- has-collapsed collapsed" style="--vp-collapsed-lines:10;"><pre><code>const line1 = 1
const line2 = 2
const line3 = 3
const line4 = 4
const line5 = 5
const line6 = 6
const line7 = 7
const line8 = 8
const line9 = 9
const line10 = 10
</code></pre>
<div class="collapsed-lines"></div></div><div class="language- has-collapsed collapsed" style="--vp-collapsed-lines:10;"><pre><code>const line1 = 1
const line2 = 2
const line3 = 3
const line4 = 4
const line5 = 5
const line6 = 6
const line7 = 7
const line8 = 8
const line9 = 9
const line10 = 10
const line11 = 11
const line12 = 12
const line13 = 13
const line14 = 14
const line15 = 15
const line16 = 16
const line17 = 17
const line18 = 18
const line19 = 19
const line20 = 20
</code></pre>
<div class="collapsed-lines"></div></div><div class="language- has-collapsed collapsed" style="--vp-collapsed-lines:15;"><pre><code>const line1 = 1
const line2 = 2
const line3 = 3
const line4 = 4
const line5 = 5
const line6 = 6
const line7 = 7
const line8 = 8
const line9 = 9
const line10 = 10
const line11 = 11
const line12 = 12
const line13 = 13
const line14 = 14
const line15 = 15
const line16 = 16
const line17 = 17
const line18 = 18
const line19 = 19
const line20 = 20
</code></pre>
<div class="collapsed-lines"></div></div><div class="language- has-collapsed collapsed" style="--vp-collapsed-lines:10;"><pre><code>const line1 = 1
const line2 = 2
const line3 = 3
const line4 = 4
const line5 = 5
const line6 = 6
const line7 = 7
const line8 = 8
const line9 = 9
const line10 = 10
const line11 = 11
const line12 = 12
</code></pre>
<div class="collapsed-lines"></div></div><div class="language-"><pre><code>const line1 = 1
const line2 = 2
const line3 = 3
const line4 = 4
const line5 = 5
const line6 = 6
const line7 = 7
const line8 = 8
const line9 = 9
const line10 = 10
const line11 = 11
const line12 = 12
const line13 = 13
const line14 = 14
const line15 = 15
const line16 = 16
const line17 = 17
const line18 = 18
const line19 = 19
const line20 = 20
</code></pre>
</div>"
`;
exports[`collapsedLinesPlugin > should work with true 1`] = `
"<div class="language-"><pre><code>const line1 = 1
const line2 = 2
const line3 = 3
const line4 = 4
const line5 = 5
const line6 = 6
const line7 = 7
const line8 = 8
const line9 = 9
const line10 = 10
</code></pre>
</div><div class="language- has-collapsed collapsed" style="--vp-collapsed-lines:15;"><pre><code>const line1 = 1
const line2 = 2
const line3 = 3
const line4 = 4
const line5 = 5
const line6 = 6
const line7 = 7
const line8 = 8
const line9 = 9
const line10 = 10
const line11 = 11
const line12 = 12
const line13 = 13
const line14 = 14
const line15 = 15
const line16 = 16
const line17 = 17
const line18 = 18
const line19 = 19
const line20 = 20
</code></pre>
<div class="collapsed-lines"></div></div><div class="language- has-collapsed collapsed" style="--vp-collapsed-lines:15;"><pre><code>const line1 = 1
const line2 = 2
const line3 = 3
const line4 = 4
const line5 = 5
const line6 = 6
const line7 = 7
const line8 = 8
const line9 = 9
const line10 = 10
const line11 = 11
const line12 = 12
const line13 = 13
const line14 = 14
const line15 = 15
const line16 = 16
const line17 = 17
const line18 = 18
const line19 = 19
const line20 = 20
</code></pre>
<div class="collapsed-lines"></div></div><div class="language- has-collapsed collapsed" style="--vp-collapsed-lines:10;"><pre><code>const line1 = 1
const line2 = 2
const line3 = 3
const line4 = 4
const line5 = 5
const line6 = 6
const line7 = 7
const line8 = 8
const line9 = 9
const line10 = 10
const line11 = 11
const line12 = 12
</code></pre>
<div class="collapsed-lines"></div></div><div class="language-"><pre><code>const line1 = 1
const line2 = 2
const line3 = 3
const line4 = 4
const line5 = 5
const line6 = 6
const line7 = 7
const line8 = 8
const line9 = 9
const line10 = 10
const line11 = 11
const line12 = 12
const line13 = 13
const line14 = 14
const line15 = 15
const line16 = 16
const line17 = 17
const line18 = 18
const line19 = 19
const line20 = 20
</code></pre>
</div>"
`;

View File

@ -0,0 +1,68 @@
import MarkdownIt from 'markdown-it'
import { describe, expect, it } from 'vitest'
import { collapsedLinesPlugin } from '../src/node/markdown/collapsedLinesPlugin.js'
const FENCE = '```'
function createMarkdown(collapsedLines?: boolean | number, hasStyles = false) {
const md = new MarkdownIt()
md.options.highlight = str => `<pre><code>${str}</code></pre>`
const fence = md.renderer.rules.fence!
md.renderer.rules.fence = (...args) =>
`<div class="language-"${hasStyles ? ' style="color: red;"' : ''}>${fence(...args)}</div>`
md.use(collapsedLinesPlugin, collapsedLines ? { collapsedLines } : undefined)
return md
}
describe('collapsedLinesPlugin', () => {
const genLines = (n: number) =>
Array.from({ length: n }).map((_, i) => `const line${i + 1} = ${i + 1}`).join('\n')
const code = `\
${FENCE}
${genLines(10)}
${FENCE}
${FENCE}js
${genLines(20)}
${FENCE}
${FENCE}js :collapsed-lines
${genLines(20)}
${FENCE}
${FENCE}js :collapsed-lines=10
${genLines(12)}
${FENCE}
${FENCE}js :no-collapsed-lines
${genLines(20)}
${FENCE}
`
it('should work with default', () => {
const md = createMarkdown()
expect(md.render(code)).toMatchSnapshot()
})
it('should work with true', () => {
const md = createMarkdown(true)
expect(md.render(code)).toMatchSnapshot()
})
it('should work with number', () => {
const md = createMarkdown(10)
expect(md.render(code)).toMatchSnapshot()
})
it('should not work with includes styles', () => {
const md = createMarkdown(true, true)
expect(md.render(code)).toMatchSnapshot()
})
it('should not work with false', () => {
const md = createMarkdown(false)
expect(md.render(code)).toMatchSnapshot()
})
})

View File

@ -0,0 +1,49 @@
import type { App } from 'vuepress/core'
import type { CopyCodeOptions } from '../src/node/types.js'
import MarkdownIt from 'markdown-it'
import { describe, expect, it } from 'vitest'
import { copyCodeButtonPlugin } from '../src/node/copy-code-button/index.js'
function createMarkdown(options: boolean | CopyCodeOptions = {}, lang = 'en-US') {
const md = new MarkdownIt()
md.options.highlight = str => `<pre><code>${str}</code></pre>`
const fence = md.renderer.rules.fence!
md.renderer.rules.fence = (...args) => `<div class="language-lang">${fence(...args)}</div>`
const app = {
env: { isDebug: false },
siteData: {
lang,
locales: { '/': { lang }, '/zh/': { lang: 'zh-CN' }, '/en/': { lang: 'en-US' } },
},
} as unknown as App
copyCodeButtonPlugin(md, app, options)
return md
}
describe('copy code button plugin', () => {
it('should work with default', () => {
const md = createMarkdown()
expect(md.render('```js\nconst a = 1\n```', { filePathRelative: '/test.md' })).toContain('<button class="copy"')
expect(md.render('```js\nconst a = 1\n```', { filePathRelative: '/zh/test.md' })).toContain('<button class="copy"')
expect(md.render('```js\nconst a = 1\n```', { filePathRelative: '/xxx/test.md' })).toContain('<button class="copy"')
expect(md.render('```js\nconst a = 1\n```', {})).toContain('<button class="copy"')
})
it('should work with true', () => {
const md = createMarkdown(true)
expect(md.render('```js\nconst a = 1\n```', { filePathRelative: '/test.md' })).toContain('<button class="copy"')
expect(md.render('```js\nconst a = 1\n```', {})).toContain('<button class="copy"')
})
it('should not work with disable', () => {
const md = createMarkdown(false)
expect(md.render('```js\nconst a = 1\n```', { filePathRelative: '/test.js' })).not.toContain('<button class="copy"')
})
})

View File

@ -29,12 +29,11 @@ export function createCopyCodeButtonRender(app: App, options?: boolean | CopyCod
= userLocales[path] || copyCodeButtonLocales[path === '/' ? root : path]
})
return (filePathRelative) => {
const relativePath = ensureLeadingSlash(filePathRelative ?? '')
return (filePathRelative: string) => {
const relativePath = ensureLeadingSlash(filePathRelative)
const localePath = resolveLocalePath(locales, relativePath)
const { title, copied } = locales[localePath]
const { title, copied } = locales[localePath] ?? {}
return `<button class="${className}" title="${title ?? 'Copy code'}" data-copied="${copied ?? 'Copied'}"></button>`
return `<button class="${className}" title="${title}" data-copied="${copied}"></button>`
}
}

View File

@ -1,5 +1,5 @@
import type { Markdown } from 'vuepress/markdown'
import { resolveCollapsedLines } from '../utils/index.js'
import { resolveCollapsedLines } from '../utils/collapsedLines.js'
export interface MarkdownItCollapsedLinesOptions {
/**