ts-node icon indicating copy to clipboard operation
ts-node copied to clipboard

`--doctor` option logs advice to help with project configuration

Open cspotcode opened this issue 4 years ago • 2 comments

Desired Behavior

When invoked with new --doctor / "doctor" / TS_NODE_DOCTOR option, will eagerly log verbose advice about project configuration.

For example, if using a "target" option that is (partially) incompatible with your node version, will log a block of text warning about the incompatibilities.

Can also register an error handler that augments recognized errors with additional help text. For example, can detect when errors may be fixed by --files

Can propose moving options into tsconfig file.

Can detect unrecognized tsconfig.ts-node options.

Can detect unrecognized CLI flags.

Can point out when files are being loaded as ESM and you're not using the ESM loader.

Is this request related to a problem?

User confusion. I wonder if something like this can help.

Alternatives

More docs

cspotcode avatar Jan 28 '21 21:01 cspotcode

Could we combine this with the existing logging, perhaps have --doctor enable a subset of log messages?

The debug module supports wildcard matching of a DEBUG environment variable, so you can create namespaced categories of logging. For example

DEBUG=ts-node:* ts-node ./index.ts # enables all ts-node debug logging
DEBUG=* ts-node ./index.ts # enables all debug logging for all libraries that use the debug module
DEBUG=ts-node:doctor ts-node ./index.ts # enables only "doctor" logs

Could we do something similar, perhaps backwards-compatible with our current TS_NODE_DEBUG env var?

DEBUG=ts-node:warn-suggestions ts-node ./index.ts # enable all debug messages that warn and suggest configuration fixes

cspotcode avatar Mar 15 '21 03:03 cspotcode

Dunno why I said the advice was unsolicited. :)

cspotcode avatar Mar 15 '21 03:03 cspotcode