GitHub - litingyes/vite-plugin-vue-preview: a vite plugin for code preview / 一个代码预览插件 (original) (raw)

vite-plugin-vue-preview

Downloads Downloads Version License

简体中文

A Vite plugin made for previewing and editing Vue components in Markdown and, of course, exporting a VuePreview component to be used directly in Vue applications.

Tip

For most simple code preview scenarios that don't strongly bind to a vue component, it's even more recommended to use the sandboxrun

Demo

Install

pnpm add vite-plugin-vue-preview@1

Features

Props

VuePreview

interface Props { // Initialization code string code: string // Whether to collapse the code when the component is mounted collapse: boolean // Whether to turn on ssr ssr: boolean // Whether the incoming props string is encoded by encodeURIComponent (necessary mainly in vitepress) encode: boolean // The body style in the iframe element previewBodyStyle: Partial | string // Styling of the root component in the iframe element previewAppStyle?: Partial | string // Third-party dependencies (CDN) that can be introduced by the demo component importMap?: Record<string, string> | string }

CSS Styles

/* VuePreview border-radius / --vue-preview-radius / VuePreview border-color / --vue-preview-color-border / VuePreview box-shadow / --vue-preview-box-shadow / VuePreview color / --vue-preview-color-icon / VuePreview hover:color / --vue-preview-color-icon-bg-hover / VuePreview background-color of loading model / --vue-preview-color-model-bg / VuePreview color of loading icon */ --vue-preview-color-loading

Usage

Vue

Import the VuePreview component and style

import { createApp } from 'vue' import { VuePreview } from 'vite-plugin-vue-preview' import 'vite-plugin-vue-preview/style.css'

const app = createApp()

app.component('VuePreview', VuePreview)

Vitepress

Import the VuePreview component / style and plugin

// vite.config.ts import { defineConfig } from 'vite' import { VuePreviewPlugin } from 'vite-plugin-vue-preview'

export default defineConfig({ plugins: [VuePreviewPlugin()], })

// .vitepress/theme/index.ts import DefaultTheme from 'vitepress/theme' import { VuePreview } from 'vite-plugin-vue-preview' import 'vite-plugin-vue-preview/style.css'

export default { ...DefaultTheme, enhanceApp(ctx) { DefaultTheme.enhanceApp(ctx) ctx.app.component('VuePreview', VuePreview) }, }

Once you've set up the above, you're ready to use it in your markdown file:

```vue preview
<template>
<h1>Demo: vite-plugin-vue-preview</h1>
</template>
```

Plugin Configuration

There is no elegant way to pass component Props in a MarkDown file, so passing in specific component Props is supported in the plugin configuration for global configuration

// vite.config.ts import { defineConfig } from 'vite' import { vuePreviewPlugin } from 'vite-plugin-vue-preview'

export default defineConfig({ plugins: [vuePreviewPlugin({ props: { previewBodyStyle: { display: 'flex', justifyContent: 'center', alignItems: 'center', }, previewAppStyle: { display: 'flex', justifyContent: 'center', alignItems: 'center', flexDirection: 'column', }, importMap: { '@vue/shared': 'https://unpkg.com/@vue/shared@latest/dist/shared.esm-bundler.js', }, }, })], })