Awesome
<img src="http://js2.coffee/assets/logo-white.svg" width="250" alt="js2coffee">
Compile JavaScript into CoffeeScript.
This 2.0 release is a complete rewrite featuring a better parser (Esprima). See what's new in 2.0 for an overview of new features and consult the migration guide for info on updating from 0.x.
<br>Install
Available on npm and bower.
npm install --global js2coffee
js2coffee --help
Also available via CDN (window.js2coffee
):
<br>
https://cdn.rawgit.com/js2coffee/js2coffee/v2.1.0/dist/js2coffee.js
Command line
The command line utility accepts both filenames or stdin.
$ js2coffee file.js [file2.js ...]
$ cat file.js | js2coffee
<br>
JavaScript API
Available via npm (require('js2coffee')
), or via CDN in the browser (as window.js2coffee
):
result = js2coffee.build(source);
result.code // code string
result.ast // transformed AST
result.map // source map
result.warnings // array of warnings
Errors are in this format:
catch (e) {
e.message // "index.js:3:1: Unexpected INDENT\n\n 3 var\n ---^"
e.description // "Unexpected INDENT"
e.start // { line: 1, column: 4 }
e.end // { line: 1, column: 10 }
e.sourcePreview // '...'
}
Warnings are in this format:
result.warnings.forEach((warn) => {
warn.description // "Variable 'x' defined twice
warn.start // { line: 1, column: 4 }
warn.end // { line: 1, column: 9 }
warn.filename // "index.js"
})
<br>
Docs
-
Migration guide - guide for migrating from 0.x.
-
Hacking guide - want to contribute? here are tips to get you started.
-
AST format - technical description of the CoffeeScript AST format.
-
Special cases - a list of edge cases that js2coffee accounts for.
-
Compatibility mode - list of tweaks that compatibility mode (
--compat
) addresses. -
Goals - outline of the project's goals.
-
Specs - examples of how JavaScript compiles to CoffeeScript.
Thanks
js2coffee © 2012+, Rico Sta. Cruz. Released under the MIT License.<br> Authored by Rico Sta. Cruz with help from co-maintainers and contributors (list).
Maintainers:
-
Rico Sta. Cruz (@rstacruz) — ricostacruz.com · twitter @rstacruz
-
Anton Wilhelm (@timaschew) — twitter @timaschew
-
Benjamin Lupton (@balupton) — balupton.com · twitter @balupton