vuepress-plugin-demo-code

Downloads per month Version Next Version License

English | 简体中文

demo-code plugin for vuepress.

With this plugin, you can both display demo and code via following syntax.

::: demo
<div @click="onClick">Click me!</div>

<script>
export default {
  methods: {
    onClick: () => { window.alert(1) },
  },
}
</script>
:::

Please click here to see the demo

# Features

  • Only one source code
  • Foldable code
  • Support online editing
    • ✔ Codepen
    • ✔ JSFiddle
    • ✔ CodeSandbox
  • Designed for long code
    • Sticky fold button
    • Auto scroll to top when you fold code

# Install

$ npm i -D vuepress-plugin-demo-code
# OR
$ pnpm i -D vuepress-plugin-demo-code
# OR
$ yarn add -D vuepress-plugin-demo-code
$ npm i -D vuepress-plugin-demo-code@next
# OR
$ pnpm i -D vuepress-plugin-demo-code@next
# OR
$ yarn add -D vuepress-plugin-demo-code@next

# Usage

Write vuepress config

module.exports = {
  plugins: ['demo-code'],
}

# Options

This plugin supports the following configurations.

module.exports = {
  plugins: [
    ['demo-code', {
      jsLibs: [
        // umd
        'https://unpkg.com/tua-storage/dist/TuaStorage.umd.js',
      ],
      cssLibs: [
        'https://unpkg.com/animate.css@3.7.0/animate.min.css',
      ],
      vueVersion: '^3',
      showText: 'show code',
      hideText: 'hide',
      styleStr: 'text-decoration: underline;',
      minHeight: 200,
      onlineBtns: {
        codepen: true,
        jsfiddle: true,
        codesandbox: true,
      },
      jsfiddle: {
        framework: 'library/pure', // default
        // framework: 'vue/2.6.11',
      },
      codesandbox: {
        deps: { 'lodash': 'latest' },
        json: '',
        query: '',
        embed: '',
      },
      demoCodeMark: 'demo-code',
      copyOptions: { ... },
    }]
  ],
}

# jsLibs

  • Type: Array
  • Default: []

Js libraries for the demo.

# cssLibs

  • Type: Array
  • Default: []

Css libraries for the demo.

# vueVersion

  • Type: String (semantic versioning syntax)
  • Default: ^2.6.14

The semantic version string of vue. For more information on semantic versioning syntax, see the npm semver calculator (opens new window).

# showText

  • Type: String
  • Default: show code

The display text of unfold code button.

# hideText

  • Type: String
  • Default: hide code

The display text of fold code button.

# minHeight

  • Type: Number
  • Default: 200(px)

The height of the code when it is folded.

# onlineBtns

  • Type: Object
  • Default: { codepen: true, jsfiddle: true, codesandbox: true }

Display online edit buttons.

# jsfiddle

  • Type: Object
  • Default: { framework: 'library/pure' }

It passes jsfiddle options (opens new window).

# codesandbox

  • Type: Object
  • Default: { deps: {}, json: '', query: 'module=App.vue'', embed: '' }

It passes CodeSandbox options (opens new window).

deps is dependencies

# demoCodeMark

  • Type: String
  • Default: demo

The mark of the plugin, follows the tag after :::.

# copyOptions

  • Type: Object/Boolean
  • Default: { align: 'top', selector: '.demo-and-code-wrapper div[class*="language-"] pre' }

It passes vuepress-plugin-code-copy (opens new window)'s options, or false to disable it.

# License

MIT (opens new window)

Copyright (c) StEve Young

# Contributors ✨

Thanks goes to these wonderful people (emoji key (opens new window)):


StEve Young

💻 📖 🚇 🌍

leandrofngl

🐛

Tian Jian

🐛

Spence

💻

This project follows the all-contributors (opens new window) specification. Contributions of any kind welcome!