---
name: "js_of_ocaml"
section: "1"
platform: "linux"
package: "js-of-ocaml"
version: "5.9.1-1+b8"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/js_of_ocaml"
---

# js\_of\_ocaml(1)

Js\_of\_ocaml compiler

## NAME

js\_of\_ocaml - Js\_of\_ocaml compiler

## SYNOPSIS

**js\_of\_ocaml** \[*COMMAND*\] …

## DESCRIPTION

Js\_of\_ocaml is a compiler from OCaml bytecode to Javascript. It makes it possible to run pure OCaml programs in JavaScript environments like web browsers and Node.js.

## OPTIONS (TOPLEVEL)

- **--export**=*VAL*

  File containing the list of unit to export in a toplevel, with Dynlink or with --linkall. If absent, all units will be exported.

- **--nocmis**, **--no-cmis**

  Do not include cmis when compiling toplevel.

- **--toplevel**

  Compile a toplevel and embed necessary cmis (unless '--no-cmis' is provided). Exported compilation units can be configured with '--export'. Note you you'll also need to link against js\_of\_ocaml-toplevel.

## OPTIONS (FILESYSTEM)

- **--extern-fs**

  Configure pseudo-filesystem to allow registering files from outside. (default)

- **--file**=*FILE*

  Register \[*FILE*\] to the pseudo filesystem.

- **-I** *DIR*

  Add \[*DIR*\] to the list of include directories.

- **--no-extern-fs**

  Configure pseudo-filesystem to NOT allow registering files from outside.

- **--ofs**=*FILE*

  Output the filesystem to \[*FILE*\].

## COMMANDS

- **build-fs** \[**-I** *DIR*\] \[**-o** *FILE*\] \[*OPTION*\]… \[*FILES*\]…

  Js\_of\_ocaml pseudo filesystem utility

- **build-runtime** \[*OPTION*\]… \[*JS\_FILES*\]…

  Build standalone runtime. Used for separate compilation.

- **check-runtime** \[**--target-env**=*{isomorphic,browser,nodejs}*\] \[*OPTION*\]… \[*FILES*\]…

  Check runtime

- **compile** \[*OPTION*\]… \[*JS\_FILES*\]… *PROGRAM*

  Js\_of\_ocaml compiler

- **link** \[*OPTION*\]… \[*JS\_FILES*\]…

  Js\_of\_ocaml linker

- **print-standard-runtime** \[*OPTION*\]…

  Print standard runtime to stdout

## ARGUMENTS

- *JS\_FILES*

  Link JavaScript files \[*JS\_FILES*\]. One can refer to path relative to Findlib packages with the syntax '+pkg\_name/file.js'

- *PROGRAM* (required)

  Compile the bytecode program \[*PROGRAM*\]. Use '-' to read from the standard input instead.

## OPTIONS

- **--custom-header**=*VAL*

  Provide a custom header for the generated JavaScript file, useful for making the script an executable file with #!/usr/bin/env node

- **--debug**=*SECTION*

  enable debug \[*SECTION*\].

- **--debuginfo**, **--debug-info**

  Output debug information.

- **--disable**=*OPT*

  Disable optimization \[*OPT*\].

- **--dynlink**

  Enable dynlink of bytecode files. Use this if you want to be able to use the Dynlink module. Note that you'll also need to link with 'js\_of\_ocaml-compiler.dynlink'.

- **--enable**=*OPT*

  Enable optimization \[*OPT*\].

- **--include-runtime**

  Include (partial) runtime when compiling cmo and cma files to JavaScript.

- **--keep-unit-names**

  Keep unit name

- **--linkall**

  Link all primitives and compilation units. Exported compilation units can be configured with '--export'.

- **--no-sourcemap**, **--no-source-map**

  Don't generate source map. All other source map related flags will be ignored.

- **--noinline**, **--no-inline**

  Disable inlining.

- **--noruntime**, **--no-runtime**

  Do not include the standard runtime.

- **-o** *FILE*

  Set output file name to \[*FILE*\].

- **--opt**=*NUM*

  Set optimization profile : \[*NUM*\].

- **--pretty**

  Pretty print the output.

- **-q**, **--quiet**

  suppress non-error messages.

- **--set**=*PARAM=VALUE*

  Set compiler options.

- **--setenv**=*PARAM=VALUE*

  Set environment variable statically.

- **--source-map-inline**

  Inline sourcemap in the generated JavaScript.

- **--source-map-no-source**

  Do not inline sources in source map.

- **--source-map-root**=*VAL*

  root dir for source map.

- **--sourcemap**, **--source-map**

  Generate source map.

- **--target-env**=*{isomorphic,browser,nodejs}* (absent=**isomorphic**)

  Runtime compile target.

- **--Werror**

  turn all warnings into errors.

- **--wrap-with-fun**=*VAL* (absent=**\<Immediately Invoked Function Expression\>**)

  Wrap the generated JavaScript code inside a function that needs to be applied with the global object.

## COMMON OPTIONS

- **--help**\[=*FMT*\] (default=**auto**)

  Show this help in format *FMT*. The value *FMT* must be one of **auto**, **pager**, **groff** or **plain**. With **auto**, the format is **pager** or **plain** whenever the **TERM** env var is **dumb** or undefined.

- **--version**

  Show version information.

## EXIT STATUS

**js\_of\_ocaml** exits with:

- 0

  on success.

- 123

  on indiscriminate errors reported on standard error.

- 124

  on command line parsing errors.

- 125

  on unexpected internal errors (bugs).

## BUGS

Bugs are tracked on github at *https://github.com/ocsigen/js\_of\_ocaml/issues*.

## SEE ALSO

[ocaml(1)](/ocaml/1.md)

## AUTHORS

Jerome Vouillon, Hugo Heuzard.

## LICENSE

Copyright (C) 2010-2020.

js\_of\_ocaml is free software, you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, with linking exception; either version 2.1 of the License, or (at your option) any later version.
