Skip to content
forked from vuejs/repl

Vue SFC REPL as a Vue 3 component

License

Notifications You must be signed in to change notification settings

vuetifyjs/vue-repl

This branch is 42 commits ahead of, 198 commits behind vuejs/repl:main.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

f4a420e · Apr 21, 2025
Sep 11, 2023
Jun 22, 2023
Apr 21, 2025
Sep 12, 2023
Jan 20, 2022
Jun 23, 2023
Jul 26, 2023
Jun 22, 2023
Jun 14, 2023
Jun 23, 2023
Oct 16, 2022
Sep 12, 2023
Sep 12, 2023
Apr 21, 2025
Apr 21, 2025
Jun 23, 2023
Jun 23, 2023
Jun 24, 2023
Apr 21, 2025
Mar 8, 2024

Repository files navigation

@vue/repl

Vue SFC REPL as a Vue 3 component.

Basic Usage

Note: 2.0 now supports Monaco Editor, but also requires explicitly passing in the editor to be used for tree-shaking.

With CodeMirror Editor

Basic editing experience with no intellisense. Lighter weight, fewer network requests, better for embedding use cases.

<script setup>
import { Repl } from '@vue/repl'
import CodeMirror from '@vue/repl/codemirror-editor'
import '@vue/repl/style.css'
</script>

<template>
  <Repl :editor="CodeMirror" />
</template>

With Monaco Editor

With Volar support, autocomplete, type inference, and semantic highlighting. Heavier bundle, loads dts files from CDN, better for standalone use cases.

<script setup>
import { Repl } from '@vue/repl'
import Monaco from '@vue/repl/monaco-editor'
import '@vue/repl/style.css'
</script>

<template>
  <Repl :editor="Monaco" />
</template>

Advanced Usage

Customize the behavior of the REPL by manually initializing the store.

<script setup>
import { watchEffect } from 'vue'
import { Repl, ReplStore } from '@vue/repl'
import Monaco from '@vue/repl/monaco-editor'

// retrieve some configuration options from the URL
const query = new URLSearchParams(location.search)

const store = new ReplStore({
  // initialize repl with previously serialized state
  serializedState: location.hash.slice(1),

  // starts on the output pane (mobile only) if the URL has a showOutput query
  showOutput: query.has('showOutput'),
  // starts on a different tab on the output pane if the URL has a outputMode query
  // and default to the "preview" tab
  outputMode: query.get('outputMode') || 'preview',

  // specify the default URL to import Vue runtime from in the sandbox
  // default is the CDN link from jsdelivr.com with version matching Vue's version
  // from peerDependency
  defaultVueRuntimeURL: 'cdn link to vue.runtime.esm-browser.js',
})

// persist state to URL hash
watchEffect(() => history.replaceState({}, '', store.serialize()))

// pre-set import map
store.setImportMap({
  imports: {
    myLib: 'cdn link to esm build of myLib',
  },
})

// use a specific version of Vue
store.setVueVersion('3.2.8')
</script>

<template>
  <Repl :store="store" :editor="Monaco" :showCompileOutput="true" />
</template>

About

Vue SFC REPL as a Vue 3 component

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • TypeScript 45.3%
  • Vue 32.7%
  • HTML 11.8%
  • CSS 9.9%
  • Other 0.3%