UNPKG

livescript-next

Version:

Enable latest ES features for LiveScript

85 lines (62 loc) 2.33 kB
# livescript-next Enable latest ES features for LiveScript. [![build status](https://travis-ci.org/dk00/livescript-next.svg)](https://travis-ci.org/dk00/livescript-next) [![coverage](https://codecov.io/gh/dk00/livescript-next/branch/master/graph/badge.svg)](https://codecov.io/gh/dk00/livescript-next) [![npm](https://img.shields.io/npm/v/livescript-next.svg)](https://www.npmjs.com/package/livescript-next) [Try it here](//rawgit.com/dk00/livescript-next/master/docs/) 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!`: ```ls import name, name1: alias import module: {name0, name1: alias1} export {name, default: name, alias: name} ``` ```js 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](//github.com/dk00/livescript-next/wiki) for what are added and what are going to be added. ## Usage with babel in node 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`): ```ls babel-options = presets: <[stage-0]> plugins: <[transform-es2015-modules-commonjs]> parser-opts: parser: \livescript-next ``` Register require hook and require the entry file: ```ls require \livescript delete require.extensions\.ls require \babel-register <| babel-options require \./index.ls ``` ## Features - Module - [x] Named import and export - [ ] Export declaration - [ ] Import only side-effect - ES Destructuring assignment/parameter output - [x] Basic support - [x] With default value - [x] Spread operator - [x] Named destructing - [x] External helper - [x] Async function - [x] Arrow function - [ ] Class ## API - `convert :: ast -> ast` Convert from LiveScript AST to babel AST - `parse :: code -> ast` Parse LiveScript code and convert it to babel AST - `compile :: code -> {code, map}` ## Require hook for node See [examples](/examples)