Enable latest ES features for LiveScript.
This project implements a bridge from LiveScript to modern JavaScript, by converting the LiveScript AST into Babel AST and then using the Babel toolchain to generate JS:
LS code -> LiveScript parser -> convert -> Babel AST -> Babel transform -> JS
ES modules can be used without JS code literals, use import
and export
instead, just like using require!
:
import name, name1: alias
import module: {name0, name1: alias1}
export {name, default: name, alias: name}
import name from "name";
import alias from "name1";
import { name0, name1 as alias1 } from "module";
export { name, name as default, name as alias };
See wiki for what are added and what are going to be added.
Install required packages:
npm i --save-dev livescript livescript-next babel-plugin-preset-stage-0 transform-es2015-modules-commonjs
Set babel options(or specify this in .babelrc
):
babel-options =
presets: <[stage-0]>
plugins: <[transform-es2015-modules-commonjs]>
parser-opts: parser: \livescript-next
Register require hook and require the entry file:
require \livescript
delete require.extensions\.ls
require \babel-register <| babel-options
require \./index.ls
- Module
- Named import and export
- Export declaration
- Import only side-effect
- ES Destructuring assignment/parameter output
- Basic support
- With default value
- Spread operator
- Named destructing
- External helper
- Async function
- Arrow function
- Class
convert :: ast -> ast
Convert from LiveScript AST to babel ASTparse :: code -> ast
Parse LiveScript code and convert it to babel ASTcompile :: code -> {code, map}
See examples