Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

vue-inbrowser-compiler

vue-styleguidist81.1kMIT4.72.4TypeScript support: included

compile vue single file components right in your browser

vue, compile, live, browser, buble, acorn

readme

vue-inbrowser-compiler

Compile vue components code into vue components objects inside of your browser

install

yarn add vue-inbrowser-compiler

usage

This library is meant to help write components for vue that can be edited through text.

compile

Compiles a string of pseudo javascript code written in es2015. It returns the body of a function as a string. Once you execute the function, it will return a VueJS component.

prototype: compile(code: string, config: BubleConfig): {script: string, style: string}

import { compile } from 'vue-inbrowser-compiler'

/**
 * render a component
 */
function getComponent(code) {
  const conpiledCode = compile(
    code,
    // pass in config options to buble to set up the output
    {
      target: { ie: 11 }
    }
  )
  const func = new Function(conpiledCode.script)
  return func()
}

The formats of the code here are the same as vue-live and vue-styleguidist

pseudo jsx

Most common use case is a simple vue template.

<button color="blue">Test This Buttton</button>

will be transformed into

return {
  template: '<Button color="blue">Test This Buttton</Button>'
}

A more advanced use case if you want to use variables

// initialize variables here and use them below
let show = true
let today = new Date();

// starting from the first line that starts with a <tag>,
// the rest is considered a template
<input type="checkbox" v-model="show">
<date-picker
  style="text-align:center;"
  v-if="show"
  :value="today"/>

will turn into

let show = true
let today = new Date();

return {
    data(){
        return{
            show: show,
            today: today
        }
    }
    template: `<input type="checkbox" v-model="show">
<date-picker
  style="text-align:center;"
  v-if="show"
  :value="today"/>`
}

Vue apps

A simple way to make it explicit

new Vue({
  template: `
<div>
  <input v-model="value" type="checkbox">
  <h1 v-if="value">I am checked</h1>
</div>`,
  data() {
    return {
      value: false
    }
  }
})

Single File Components

<template>
  <div class="hello">
    <h1>Colored Text</h1>
    <button>{{ msg }}</button>
  </div>
</template>

<script>
  export default {
    data() {
      return {
        msg: 'Push Me'
      }
    }
  }
</script>

<style>
  .hello {
    text-align: center;
    color: #900;
  }
</style>

isCodeVueSfc

Detects if the code given corresponds to a VueJS Single File Component. If there is a <template> or a <script> tag, it will return true, otherwise return false.

prototype: isCodeVueSfc(code: string):boolean

import { isCodeVueSfc } from 'vue-inbrowser-compiler'

if (isCodeVueSfc(code)) {
  doStuffForSFC(code)
} else {
  doStuffForJSFiles(code)
}

addScopedStyle

Takes the css style passed in first argument, scopes it using the suffix and adds it to the current page.

prototype: addScopedStyle(css: string, suffix: string):void

adaptCreateElement

In order to make JSX work with the compiler, you need to specify a pragma. Since tis pragma has a different form for VueJs than for ReactJs, we need to provide an adapter.

import { compile, adaptCreateElement } from 'vue-inbrowser-compiler'

/**
 * render a JSX component
 */
function getComponent(code) {
  const conpiledCode = compile(
    code,
    // in this config we set up the jsx pragma to a higher order function
    {
      jsx: '__pragma__(h)'
    }
  )
  const func = new Function('__pragma__', conpiledCode.script)
  // now pass the higher order function to the function call
  return func(adaptCreateElement)
}

changelog

Change Log

4.72.4

Patch Changes

4.72.1

Patch Changes

4.72.0

Minor Changes

4.71.1

Patch Changes

4.69.2

Patch Changes

4.69.0

Patch Changes

4.64.1

Patch Changes

4.62.2

Patch Changes

4.62.0

Minor Changes

Patch Changes

4.60.0

Patch Changes

4.56.5

Patch Changes

4.56.2

Patch Changes

4.55.0

Minor Changes

Patch Changes

4.54.1

Patch Changes

4.53.1

Patch Changes

4.50.0

Minor Changes

Patch Changes

4.45.0

Minor Changes

Patch Changes

4.44.24

Patch Changes

All notable changes to this project will be documented in this file. See Conventional Commits for commit guidelines.

4.44.23 (2022-03-25)

Note: Version bump only for package vue-inbrowser-compiler

4.44.22 (2022-03-18)

Note: Version bump only for package vue-inbrowser-compiler

4.44.21 (2022-03-18)

Note: Version bump only for package vue-inbrowser-compiler

4.44.20 (2022-03-18)

Bug Fixes

  • create postinstall to adapt vue3 (7de0803)

4.44.17 (2022-02-28)

Bug Fixes

  • avoid adding h to pragmas in vue3 (bb265cb)
  • remove h from vue3 in inbrowser compiler (cf7305a)

4.44.0 (2022-01-17)

4.44.16 (2022-02-22)

4.44.2 (2022-01-18)

Note: Version bump only for package vue-inbrowser-compiler

4.44.15 (2022-01-31)

Note: Version bump only for package vue-inbrowser-compiler

4.44.14 (2022-01-31)

Note: Version bump only for package vue-inbrowser-compiler

4.44.13 (2022-01-31)

Note: Version bump only for package vue-inbrowser-compiler

4.44.12 (2022-01-31)

Note: Version bump only for package vue-inbrowser-compiler

4.44.11 (2022-01-31)

Note: Version bump only for package vue-inbrowser-compiler

4.44.10 (2022-01-31)

Note: Version bump only for package vue-inbrowser-compiler

4.44.9 (2022-01-31)

Note: Version bump only for package vue-inbrowser-compiler

4.44.8 (2022-01-31)

Note: Version bump only for package vue-inbrowser-compiler

4.44.7 (2022-01-31)

Note: Version bump only for package vue-inbrowser-compiler

4.44.6 (2022-01-31)

Note: Version bump only for package vue-inbrowser-compiler

4.44.5 (2022-01-31)

Note: Version bump only for package vue-inbrowser-compiler

4.44.4 (2022-01-31)

Note: Version bump only for package vue-inbrowser-compiler

4.44.3 (2022-01-31)

Note: Version bump only for package vue-inbrowser-compiler

4.44.0 (2022-01-17)

Note: Version bump only for package vue-inbrowser-compiler

4.43.3 (2022-01-13)

Note: Version bump only for package vue-inbrowser-compiler

4.43.2 (2022-01-03)

Note: Version bump only for package vue-inbrowser-compiler

4.43.1 (2021-12-23)

Bug Fixes

  • should escape interpolation inside template string (a90c1d4)

4.43.0 (2021-11-21)

Note: Version bump only for package vue-inbrowser-compiler

4.42.0 (2021-11-18)

Note: Version bump only for package vue-inbrowser-compiler

4.41.2 (2021-09-09)

Note: Version bump only for package vue-inbrowser-compiler

4.41.0 (2021-08-13)

Bug Fixes

4.40.0 (2021-06-07)

Note: Version bump only for package vue-inbrowser-compiler

4.39.0 (2021-05-24)

Note: Version bump only for package vue-inbrowser-compiler

4.38.3 (2021-05-24)

Note: Version bump only for package vue-inbrowser-compiler

4.37.0 (2021-04-05)

Note: Version bump only for package vue-inbrowser-compiler

4.33.6 (2020-11-05)

Note: Version bump only for package vue-inbrowser-compiler

4.33.5 (2020-10-23)

Bug Fixes

  • compiler: only allow max version of each bro (a062a54)
  • compiler: types of buble transform (6134866)

4.33.4 (2020-10-22)

Bug Fixes

  • compiler: error location reporting (34121b5)

4.33.2 (2020-10-19)

Note: Version bump only for package vue-inbrowser-compiler

4.33.0 (2020-10-12)

Note: Version bump only for package vue-inbrowser-compiler

4.32.1 (2020-09-08)

Note: Version bump only for package vue-inbrowser-compiler

4.31.2 (2020-08-23)

Note: Version bump only for package vue-inbrowser-compiler

4.31.1 (2020-08-20)

Note: Version bump only for package vue-inbrowser-compiler

4.27.0 (2020-07-17)

Note: Version bump only for package vue-inbrowser-compiler

4.23.3 (2020-05-20)

Note: Version bump only for package vue-inbrowser-compiler

4.16.0 (2020-04-09)

Note: Version bump only for package vue-inbrowser-compiler

4.14.0 (2020-03-18)

Note: Version bump only for package vue-inbrowser-compiler

4.2.2 (2019-12-18)

Note: Version bump only for package vue-inbrowser-compiler

4.0.1 (2019-11-15)

Note: Version bump only for package vue-inbrowser-compiler

4.0.0-beta.20 (2019-11-15)

Note: Version bump only for package vue-inbrowser-compiler

4.0.0-beta.8 (2019-10-28)

Note: Version bump only for package vue-inbrowser-compiler

4.0.0-beta.3 (2019-10-24)

Note: Version bump only for package vue-inbrowser-compiler

4.0.0-beta.1 (2019-10-23)

Note: Version bump only for package vue-inbrowser-compiler

3.25.1-beta.1 (2019-10-23)

Bug Fixes

  • split compiler & utils - efficient code split (9ef9d06)

BREAKING CHANGES

  • compiler now exports compiler function as default
  • isCodeVueSfc, styleScoper and adaptCreateElement are now their own package

3.23.0 (2019-09-19)

Features

  • compiler: styleScoper deals with deep (ff89890)

3.22.1 (2019-08-19)

Note: Version bump only for package vue-inbrowser-compiler

3.21.0 (2019-08-17)

Note: Version bump only for package vue-inbrowser-compiler

3.19.0 (2019-08-02)

Bug Fixes

  • combining new Vue and imports was impossible (d37359c)

Features

3.16.3 (2019-07-19)

Bug Fixes

  • accept multiple style parts (9a6b031)
  • use style normalize sfc component (fcae13c)

Performance Improvements

3.16.2 (2019-07-17)

Bug Fixes

  • compiler: make the jsx spread work vue style (27dd670)
  • make regexp more precise (29ba8b5)

3.16.1 (2019-07-16)

Bug Fixes

  • compiler: add normal attributes in attrs (be6de16)
  • allow for new Vue in jsx (45c62c9)

3.16.0 (2019-07-15)

Bug Fixes

Features

  • add Higher order funciton to Compile pragmas (5783eb4)
  • allow compiler to render/compile JSX (5084a39)

3.15.1 (2019-06-27)

Bug Fixes

  • make sure imported variables are declared (bc50ab1)
  • compiler: make sure files with the same name wont conflict (98a1b76), closes #471

3.14.4 (2019-06-14)

Bug Fixes

  • compiler: re-enable compilation in vue SFC (5bb99c3), closes #456

3.14.2 (2019-06-06)

Bug Fixes

  • docgen: make sure v-slot templates are understood too (e9ab6d5)

3.14.1 (2019-06-05)

Bug Fixes

  • docgen: template was used to use slots - sfc was detected (642d875), closes #448

3.14.0 (2019-06-05)

Bug Fixes

  • bring back last version of acorn (1f7ee42)

3.13.10 (2019-06-04)

Bug Fixes

  • detect pure template no script as sfc (e2a0a48)
  • downgrade acorn (40b60cb)

3.13.8 (2019-05-29)

Note: Version bump only for package vue-inbrowser-compiler