Giter VIP home page Giter VIP logo

babel-plugin-lightscript's Introduction

babel-plugin-lightscript

Compiles LightScript to JavasScript when used with Babel.

The plugin only processes files that include .lsc or .lsx in their filenames.

It converts a "LightScript AST" produced by babylon-lightscript into a conventional "Babel AST".

If you are using ES7 features (like import), JSX, and Flow, use babel-preset-lightscript to target ES6 instead of using the plugin directly.

If you are using babel-plugin-lightscript with other plugins, be sure it is the first plugin.

Options

You may disable the standard library:

{
  "plugins": [
    ["lightscript", { "stdlib": false }]
  ]
}

Or disable its inclusion of lodash:

{
  "plugins": [
    ["lightscript", {
      "stdlib": {
        "lodash": false,
      }
    }]
  ]
}

Or tell it to use require() instead of import:

{
  "plugins": [
    ["lightscript", {
      "stdlib": {
        "require": true,
      }
    }]
  ]
}

Contributing

You will need to link babel-plugin-lightscript to itself:

cd babel-plugin-lightscript
npm link
npm link babel-plugin-lightscript
npm install
npm run build
npm test

Please report issues on the main lightscript repo instead of here.

babel-plugin-lightscript's People

Contributors

haltcase avatar rattrayalex avatar wcjohnson avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

wcjohnson

babel-plugin-lightscript's Issues

gulp

Is it posible to compile lightscript via gulp? is there a gulp-lightscript library?

Stdlib internal methods -- inline them?

If you use one of the non-lodash stdlib methods like looseEq the AST transforms automatically import babel-plugin-lightscript into the final code.

Since babel plugins are devDependencies 100% of the time in the current ecosystem, I don't think most people will realize that they need babel-plugin-lightscript as a dependency rather than a devDependency which means their app may crash when NODE_ENV="production". And I'm not sure making a Babel plugin into a dependency is a good idea even if it is well documented that you need it.

Would you consider just inlining the builtin stdlib methods using AST transforms since they are all oneliners anyway?

[Bug] `for-in` array loops not promoting to block bodies.

The following doesn't compile on master:

for idx i in Array(10): for idx j in Array(10): if i > 3: i

The issue is that the last if is being treated as an expr and the code to ensure a block body was never moved to the array case. I'm submitting a PR with a fix.

Node 4 support

While Node 4 is still maintained it might be smart to have this plugin support it. This is especially true since it makes it difficult for third parties using LightScript to maintain node 4 support. Once April 1st 2018 rolls around it can be dropped for good.

For example, my shiny new babel plugin fails to build in my node 4 test environment because this plugin can't be parsed, even though I'm targeting node >= 4.

Should be easy enough to swap out babel-preset-eslatest-node6 for babel-preset-env and set the target, and that's easily updated in a year when node 4 dies. Thoughts?

Inner functions are not implicitly returned

Currently, this:

fn () ->
  value = 42

  inner () ->
    value

results in this:

function fn() {
  const value = 42;

  function inner() {
    return value;
  }
}

but it inner should be implicitly returned like so:

function fn() {
  const value = 42;

  function inner() {
    return value;
  }

  return inner;
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.