a faster, safer, easier JavaScript
Powered by Oktavia

This document describes the behaviour of the JSX compiler in detail.


--add-search-path path

Adds given search path to an internal list of paths used by the compiler for searching imported source files. It is not recommended to specify paths by using references to parent directories (i.e. "..") since that may cause confusion in the search logic. Repeat the option to specify more than one paths.


When specified, the compiler executes the program immediately following a successfull compilation. Implies --executable node.


When specified, the compiler executes the unit tests defined in the source file. For how to write tests conforming to the interface, please refer to Unit tests for JSX.


The option specifies the way to execute (or not to execute) the program when loaded. If omitted, no function will be called when the compiled program is being loaded.

--executable node
Target platform is node.js. _Main.main(:string[]):void of the source file (that was given to the compiler as an argument) will be called right after the program is being loaded. Command line arguments are passed to the function as the arguments.
--executable web
Target platform is web browsers. _Main.main(:string[]):void is called when the web browser issues a DOMContentLoaded event. The argument to the function will always be an empty string array.
--executable common
Target platform is CommonJS. The only difference from --executable node is that the arguments are taken from the system module of CommonJS, instead of from the process module of node.js.


Disables run-time type checking and debug logging, enables optimizations that are known to have performance / size benefits.


Enables the profiler. For more information please refer to Usisng the Profiler.


Minifies the generated program.


Disables run-time type checking. The option is automatically turned on when --release is used.

--optimize cmd1,cmd2,...

Specifies the optimization subcommands to be used. Some notable subcommands are as follows.

ignore log statements (implied by --release)
ignore assert statements (implied by --release)
ignore debug statements (implied by --release)

See --help for complete list of subcommands.