2.0.0 • Published 5 years ago

vuepress-plugin-playground v2.0.0

Weekly downloads
2
License
MIT
Repository
github
Last release
5 years ago

sidebar: auto

Vuepress Playground Plugin

npm status

::: warning According to the SFC Spec, "each *.vue file can contain at most one \<script> block at a time."

Please DO NOT use <script> tags in your markdown file for importing or declaring purposes. :::

Example

Take a look at demo.

Install

npm install -D vuepress-plugin-playground
// in your .vuepress/config.js
module.exports = {
  plugins: [require('vuepress-plugin-playground')]
}

Usage

You can write SFC-styled code in a fenced code block with lang attr being vue or html.

Put a @demo annotation in your code block, and it would be treated as a real SFC file:

  • ```vue @demo
  • ```html @demo
```html @demo
<template>
  ...
</template>

<script>
  export default {}
</script>

<style>
  /* Your CSS code here */
</style>
```

Following is a counter example:

<template>
  <button @click="count++" :class="$style.button">
    Clicked: {{ count + 1 }} times.
  </button>
</template>

<script>
  export default {
    data() {
      return { count: 1 }
    }
  }
</script>

<!-- Notice: styles are ALWAYS treated as scoped -->
<style>
  button {
    line-height: 2;
    padding: 0 1em;
  }
</style>

<style module scoped>
  .button {
    font-size: 14px;
    font-weight: bold;
  }
</style>

Display Without Source Code

Use the @effect-only annotation ——

```html @effect-only

Here is the result ——

<template>
  <button @click="count++" :class="$style.button">
    Clicked: {{ count }} times.
  </button>
</template>

<script>
  export default {
    data() {
      return { count: 1 }
    }
  }
</script>

<!-- Notice: styles are ALWAYS treated as scoped -->
<style>
  button {
    line-height: 2;
    padding: 0 1em;
  }
</style>

<style module scoped>
  .button {
    font-size: 12px;
    font-weight: bold;
  }
</style>

Import Code Snippets

You can import code snippets via following syntax:

<<< @/.vuepress/snippets/test.vue @demo {1,2}
<<< @/.vuepress/snippets/test.vue @effect-only

(SEE vuepress doc)

Result:

<<< @/.vuepress/snippets/test.vue @demo {1,2}

<<< @/.vuepress/snippets/test.vue @effect-only

Customize Styles

Define a gloabl component, <CustomStage /> for example:

<template>
  <some-tag>
    <slot name="demo">
    <slot name="code">
  </some-tag>
</template>

<script>
  export default {
    props: ['source']
  }
</script>

::: tip props.source

  • source.vue
  • source.template
  • source.templateAttrs
  • source.script
  • source.scriptAttrs
  • source.styleAttrs :::

Then configure in your .vuepress/config.js:

module.exports = {
  plugins: [
    [
      require('vuepress-plugin-playground'),
      {
        componentTag: 'CustomStage'
      }
    ]
  ]
}

TODO

  • [] Integration with codesandbox/codepen/jsbin
2.0.0

5 years ago

1.3.0

5 years ago

1.2.0

5 years ago

1.1.2

5 years ago

1.1.0

5 years ago

1.0.4

5 years ago

1.0.3

5 years ago

1.0.2

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago