mirror of
https://github.com/jashkenas/coffeescript.git
synced 2022-11-09 12:23:24 -05:00

* Upgrade Babeli (now babel-minify) which fixes the bug that was forcing us to run Babel twice for transpilation * Add --transpile option (WIP) * Node API always compiles a string, so it doesn’t need the option to pass a path to an options file, it can always just pass an object to `transpile`; get `transpile` working with `eval` * Not allowing argument to `--transpile` so don’t need to cover so many cases * Don’t need to worry about `sourceMaps` option to pass to Babel, `inputSourceMap` overrides it * Rewrite Webpack test to use Node API * Make the compiler safe again for browsers and Webpack/Browserify * Node version of CoffeeScript.compile passes reference to Babel if transpile is requested * Test Node API for transpile option * Test for merged source maps * Test for Node API error message * Only stop searching for Babel options if a package.json has a truthy "babel" key * Update docs
40 lines
No EOL
3.6 KiB
Markdown
40 lines
No EOL
3.6 KiB
Markdown
### Command Line
|
||
|
||
Once installed, you should have access to the `coffee` command, which can execute scripts, compile `.coffee` files into `.js`, and provide an interactive REPL. The `coffee` command takes the following options:
|
||
|
||
| Option | Description |
|
||
| --- | --- |
|
||
| `-c, --compile` | Compile a `.coffee` script into a `.js` JavaScript file of the same name. |
|
||
| `-t, --transpile` | Pipe the CoffeeScript compiler’s output through Babel before saving or running the generated JavaScript. Requires `babel-core` to be installed, and options to pass to Babel in a `.babelrc` file or a `package.json` with a `babel` key in the path of the file or folder to be compiled. See [Transpilation](#transpilation).
|
||
| `-m, --map` | Generate source maps alongside the compiled JavaScript files. Adds `sourceMappingURL` directives to the JavaScript as well. |
|
||
| `-M, --inline-map` | Just like `--map`, but include the source map directly in the compiled JavaScript files, rather than in a separate file. |
|
||
| `-i, --interactive` | Launch an interactive CoffeeScript session to try short snippets. Identical to calling `coffee` with no arguments. |
|
||
| `-o, --output [DIR]` | Write out all compiled JavaScript files into the specified directory. Use in conjunction with `--compile` or `--watch`. |
|
||
| `-w, --watch` | Watch files for changes, rerunning the specified command when any file is updated. |
|
||
| `-p, --print` | Instead of writing out the JavaScript as a file, print it directly to **stdout**. |
|
||
| `-s, --stdio` | Pipe in CoffeeScript to STDIN and get back JavaScript over STDOUT. Good for use with processes written in other languages. An example:<br>`cat src/cake.coffee | coffee -sc` |
|
||
| `-l, --literate` | Parses the code as Literate CoffeeScript. You only need to specify this when passing in code directly over **stdio**, or using some sort of extension-less file name. |
|
||
| `-e, --eval` | Compile and print a little snippet of CoffeeScript directly from the command line. For example:<br>`coffee -e "console.log num for num in [10..1]"` |
|
||
| `-r, --require [MODULE]`  | `require()` the given module before starting the REPL or evaluating the code given with the `--eval` flag. |
|
||
| `-b, --bare` | Compile the JavaScript without the [top-level function safety wrapper](#lexical-scope). |
|
||
| `--no-header` | Suppress the “Generated by CoffeeScript” header. |
|
||
| `--nodejs` | The `node` executable has some useful options you can set, such as `--debug`, `--debug-brk`, `--max-stack-size`, and `--expose-gc`. Use this flag to forward options directly to Node.js. To pass multiple flags, use `--nodejs` multiple times. |
|
||
| `--tokens` | Instead of parsing the CoffeeScript, just lex it, and print out the token stream. Used for debugging the compiler. |
|
||
| `-n, --nodes` | Instead of compiling the CoffeeScript, just lex and parse it, and print out the parse tree. Used for debugging the compiler. |
|
||
|
||
#### Examples:
|
||
|
||
* Compile a directory tree of `.coffee` files in `src` into a parallel tree of `.js` files in `lib`:<br>
|
||
`coffee --compile --output lib/ src/`
|
||
* Watch a file for changes, and recompile it every time the file is saved:<br>
|
||
`coffee --watch --compile experimental.coffee`
|
||
* Concatenate a list of files into a single script:<br>
|
||
`coffee --join project.js --compile src/*.coffee`
|
||
* Print out the compiled JS from a one-liner:<br>
|
||
`coffee -bpe "alert i for i in [0..10]"`
|
||
* All together now, watch and recompile an entire project as you work on it:<br>
|
||
`coffee -o lib/ -cw src/`
|
||
* Start the CoffeeScript REPL (`Ctrl-D` to exit, `Ctrl-V`for multi-line):<br>
|
||
`coffee`
|
||
|
||
To use `--transpile`, see [Transpilation](#transpilation). |