Skip to content

Log warning when "target" is too high for the node version #1248

@cspotcode

Description

@cspotcode

Blocked by #1445

Building off of #1202, we know the maximum "target" you can use for the given node version, so we can log a helpful warning when your target is wrong:

Warning: You are using a "target" option that may be incompatible with your node version.
For node vXYZ we recommend "target": "es2018" or lower.
To disable this warning, add the following to your tsconfig:
    "ts-node": {"disableNodeCompatibilityWarnings": true}
To override your "target" within ts-node, add the following to your tsconfig:
    "ts-node": {"compilerOptions": {"target": "es2018"}}
To derive your tsconfig from a recommended set of options, add the following to your tsconfig:
    "extends": "ts-node/node12/tsconfig.json"

Questions

  • Should this warning be logged for programmatic usage? For ts-node/register? For --loader ts-node/esm? I don't think libraries should send output to stderr, but ts-node/register is a weird case because it's almost exclusively used from the CLI.
  • Should the disableNodeCompatibilityWarnings option be renamed to allow more than 2 modes?
    • `"forceNodeCompatibility": "auto" | "warn" | "off"
    • `"autoNodeCompatibility": "enabled" | "warn" | "disabled"
    • in auto / enabled mode, we override the "target" option with an appropriate value.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions