Skip to content
Ingvar Stepanyan edited this page Oct 2, 2020 · 25 revisions

Generator

syntax

escodegen.generate(AST[, options]);

options

default options,

    {
        format: {
            indent: {
                style: '    ',
                base: 0,
                adjustMultilineComment: false
            },
            newline: '\n',
            space: ' ',
            json: false,
            renumber: false,
            hexadecimal: false,
            quotes: 'single',
            escapeless: false,
            compact: false,
            parentheses: true,
            semicolons: true,
            safeConcatenation: false
        },
        moz: {
            starlessGenerator: false,
            parenthesizedComprehensionBlock: false,
            comprehensionExpressionStartsWithAssignment: false
        },
        parse: null,
        comment: false,
        sourceMap: undefined,
        sourceMapRoot: null,
        sourceMapWithCode: false,
        file: undefined,
        sourceContent: originalSource,
        directive: false,
        verbatim: undefined
    }

option.format

  • escodegen.FORMAT_DEFAULTS - a preset with default format options, see above.
  • escodegen.FORMAT_MINIFY - a preset with compact format options.

option.format.indent.style

Indent string. Default is 4 spaces ('    ').

option.format.indent.base

Base indent level. Default is 0.

option.format.indent.adjustMultilineComment

Adjust the indentation of multiline comments to keep asterisks vertically aligned. Default is false.

option.format.newline

New line string. Default is '\n'.

option.format.space

White space string. Default is standard ' ' (\x20).

option.format.json

Enforce JSON format of numeric and string literals. This option takes precedence over option.format.hexadecimal and option.format.quotes. Default is false.

option.format.renumber

Try to generate shorter numeric literals than toString() (9.8.1). Default is false.

option.format.hexadecimal

Generate hexadecimal a numeric literal if it is shorter than its equivalents. Requires option.format.renumber. Default is false.

option.format.quotes

Delimiter to use for string literals. Accepted values are: 'single', 'double', and 'auto'. When 'auto' is specified, escodegen selects a delimiter that results in a shorter literal. Default is 'single'.

option.format.escapeless

Escape as few characters in string literals as necessary. Default is false.

option.format.compact

Do not include superfluous whitespace characters and line terminators. Default is false.

option.format.parentheses

Preserve parentheses in new expressions that have no arguments. Default is true.

option.format.semicolons

Preserve semicolons at the end of blocks and programs. Default is true.

option.parse

Mozilla Parser API compatible parse function, e.g., the parse function exported by esprima. If it is provided, generator tries to use the 'raw' representation. See esprima raw information. Default is null.

option.comment

If comments are attached to AST, escodegen is going to emit comments to output code. Default is false.

option.sourceMap, option.sourceMapRoot, option.sourceMapWithCode, option.file & option.sourceContent

sourceMap is the source maps's source filename, that's a name that will show up in the browser debugger for the generated source (if source-maps is enabled). If a non-empty string value is provided, generate a source map. If sourceMapWithCode is true generator returns output hash, where output.map is a source-map representation, which can be serialized as output.map.toString(). output.code is a string with generated JS code (note that it's not going to have //@ sourceMappingURL comment in it). Optionally option.sourceContent string can be passed (which represents original source of the file, for example it could be a source of coffeescript from which JS is being generated), if provided generated source map will have original source embedded in it. Optionally option.sourceMapRoot can be provided, in which case option.sourceMap will be treated as relative to it. For more information about source map itself, see source map library document, V3 draft and HTML5Rocks introduction. Default is undefined. sourceMapRoot is the source root for the source map (see the Mozilla documentation). If sourceMapWithCode is truthy, an object is returned from generate() of the form: { code: .. , map: .. }. If file is provided, it will be used as file property of generated source map.

option.directive

Recognize DirectiveStatement and distinguish it from ExpressionStatement

option.verbatim

Providing verbatim code generation option to Expression nodes. verbatim option is provided by user as string. When generating Expression code, looking up node[option.verbatim] value and dump it instead of normal code generation.

For example,

escodegen.generate({
    type: 'Literal',
    value: 200,
    'x-verbatim-property': '2e2'
}, { verbatim: 'x-verbatim-property' });

generates

2e2

Also, an object can be assigned in 'x-verbatim-property' property.

escodegen.generate({
    type: 'Literal',
    value: 200,
    'x-verbatim-property': {
        content : '2e2',
        precedence : escodegen.Precedence.Primary
    }
}, { verbatim: 'x-verbatim-property' });

For more detail on verbatim, refer to More user-controllable verbatim property · Issue #173