Files
coffeescript/documentation/sections/usage.md
Geoffrey Booth e620434a2e Docs improvements: content in Markdown, organization into subtemplates, fixed tests (#4401)
* Replace tiny bitmaps with base64-encoded URIs

* Optimize SVGs; replace logo PNG with SVG

* Modernize favicon

* Embed CSS; a bit unorthodox, but we’re a single page so there’s no point in separate .css files and their separate HTTP requests

* Documentation is now markdown, converted to HTML on compilation

* Render the examples when we’re rendering index.html; they compile so quickly that there’s no need to pre-render them and save the intermediate .js files

* Split apart index.html into components that Cakefile assembles, so that we can add in logic to include different files for v1 versus v2

* Split building index.html and building test.html into two tasks; collapse the parts of `releaseHeader` into one compact function

* Move include logic into templates

* Get error messages tests to work in the browser

* Update output index.html

* Split body into nav and body

* Watch subtemplates

* Revert "Split body into nav and body"

This reverts commit ec9e559ec0.

* Add marked

* Update gitignore

* Use idiomatic markdown output for code blocks (<pre><code>)

* Handle ids within the template, not in the Cakefile; remove marked’s auto-generated and conflicting ids

* Move the `codeFor` function into versioned folders, so that v1 and v2 docs can have different example code blocks/editors

* Update packages, including new highlight.js which supports our newer keywords and triple backticks (docs output is unchanged)
2016-12-15 21:05:44 -08:00

4.0 KiB

Usage

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:

`-c, --compile` Compile a `.coffee` script into a `.js` JavaScript file of the same name.
`-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`.
`-j, --join [FILE]` Before compiling, concatenate all scripts together in the order they were passed, and write them into the specified file. (Deprecated.)
`-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:
`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:
`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).
`-t, --tokens` Instead of parsing the CoffeeScript, just lex it, and print out the token stream:
`[IDENTIFIER square] [= =] [PARAM_START (]` ...
`-n, --nodes` Instead of compiling the CoffeeScript, just lex and parse it, and print out the parse tree:
Block
  Assign
    Value IdentifierLiteral: square
    Code
      Param IdentifierLiteral: x
      Block
        Op *
          Value IdentifierLiteral: x
          Value IdentifierLiteral: x
`--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.
`--no-header` Suppress the “Generated by CoffeeScript” header.

Examples:

  • Compile a directory tree of .coffee files in src into a parallel tree of .js files in lib:
    coffee --compile --output lib/ src/
  • Watch a file for changes, and recompile it every time the file is saved:
    coffee --watch --compile experimental.coffee
  • Concatenate a list of files into a single script:
    coffee --join project.js --compile src/*.coffee
  • Print out the compiled JS from a one-liner:
    coffee -bpe "alert i for i in [0..10]"
  • All together now, watch and recompile an entire project as you work on it:
    coffee -o lib/ -cw src/
  • Start the CoffeeScript REPL (Ctrl-D to exit, Ctrl-Vfor multi-line):
    coffee