pas2js command line arguments

From Lazarus wiki
Jump to navigationJump to search

English (en)

Pascal to JavaScript transpiler pas2js command line arguments


Put + after a boolean switch option to enable it, - to disable it
  @<x>    : Read compiler options from file <x> in addition to the default
  -B      : Rebuild all
  -d<x>   : Defines the symbol <x>. Optional: -d<x>:=<value>
  -i<x>   : Write information and halt. <x> is a combination of the following:
    D     : Write compiler date
    SO    : Write compiler OS
    SP    : Write compiler host processor
    TO    : Write target platform
    TP    : Write target processor
    V     : Write short compiler version
    W     : Write full compiler version
  -F...   Set file names and paths:
   -Fe<x> : Redirect output to <x>. UTF-8 encoded.
   -Fi<x> : Add <x> to include paths
   -Fu<x> : Add <x> to unit paths
   -FU<x> : Set unit output path to <x>
  -I<x>   : Add <x> to include paths, same as -Fi
  -J...  Extra options of pas2js
   -Jc    : Write all JavaScript concatenated into the output file
   -Je<x> : Encode messages as <x>.
     -Jeconsole : Console codepage. This is the default.
     -Jesystem  : System codepage. On non Windows console and system are the same.
     -Jeutf-8   : Unicode UTF-8. Default when using -Fe.
   -Ji<x> : Insert JS file <x> into main JS file. E.g. -Jirtl.js. Can be
            given multiple times. To remove a file name append a minus, e.g.
   -Jl    : lower case identifiers
   -Jm    : generate source maps
     -Jmsourceroot=<x> : use x as "sourceRoot", prefix URL for source file names.
     -Jmbasedir=<x> : write source file names relative to directory x.
     -Jminclude : include Pascal sources in source map.
     -Jm- : disable generating source maps
   -Ju<x> : Add <x> to foreign unit paths. Foreign units are not compiled.
  -l      : Write logo
  -MDelphi: Delphi 7 compatibility mode
  -MObjFPC: FPC's Object Pascal compatibility mode (default)
  -NS<x>  : add <x> to namespaces. Namespaces with trailing - are removed.
            Delphi calls this flag "unit scope names".
  -n      : Do not read the default config files
  -o<x>   : Change main JavaScript file to <x>, "." means stdout
  -O<x>   : Optimizations:
    -O-   : Disable optimizations
    -O1   : Level 1 optimizations (quick and debugger friendly)
    -Oo<x> : Enable or disable optimization. The x is case insensitive:
      -OoEnumNumbers[-] : write enum value as number instead of name. Default in -O1.
      -OoRemoveNotUsedPrivates[-] : Default is enabled
      -OoRemoveNotUsedDeclarations[-] : Default enabled for programs with -Jc
  -P<x>   : Set target processor. Case insensitive:
    -Pecmascript5 : default
  -S<x>   : Syntax options. <x> is a combination of the following letters:
    c     : Support operators like C (*=,+=,/= and -=)
    d     : Same as -Mdelphi
    2     : Same as -Mobjfpc (default)
  -T<x>   : Set target platform
    -Tbrowser : default
    -Tnodejs  : add, includes -Jc
  -u<x>   : Undefines the symbol <x>
  -v<x>   : Be verbose. <x> is a combination of the following letters:
    e     : show errors (default)
    w     : show warnings
    n     : show notes
    h     : show hints
    i     : show info
    l     : show line numbers
    a     : show everything
    0     : show nothing (except errors)
    b     : show file names with full path
    c     : show conditionals
    t     : show tried/used files
    d     : show debug notes and info, enables -vni
    q     : show message numbers
    x     : show used tools
  -vm<x>,<y>: Do not show messages numbered <x> and <y>.
  -?      : Show this help
  -h      : Show this help

Macros:  $Name, $Name$ or $Name()
  $Pas2jsFullVersion: major.minor.release<extra>
  $Pas2jsVersion: major.minor.release
  $Env(): environment variable, e.g. $Env(HOME)
  $CfgDir: Use within a config file. The directory of this config file

Config files

  • Empty lines are ignored
  • Lines starting with hash+space '# ' are comments
  • One option per line
  • Directives are started by #keyword, where keyword is case insensitive:
    • #IFDEF macroname
    • #IFNDEF macroname
    • #IF expression - same as source directive $if, except only macronames
    • #ELSEIF
    • #ELSE
    • #ENDIF
    • #ERROR text