DEV Community

Bruce Axtens
Bruce Axtens

Posted on

1 2

Sometimes the Typescript CLI seems strangely opaque

Here's my tsconfig.json

{
  "compileOnSave": true,
  "compilerOptions": {
    "allowSyntheticDefaultImports": true,
    "esModuleInterop": true,
    "target": "ES3",
    "lib": ["ESNext"],
    "strict": false,
    "moduleResolution": "node",
    "module": "commonjs",
    "types": ["C:\\Web\\XChecker\\XwChecker\\Rulesets\\d.ts"],
    "removeComments": true
  },
  "include": ["*.ts"]
}
Enter fullscreen mode Exit fullscreen mode

My project has a number of .ts files and a file of types in d.ts/index.d.ts.

I want to compile just one, JUST ONE, of the .ts files in my project and output it to a file with an .rr extension.

Now the --outFile works but I can't figure out what the CLI is supposed to be told such that all the settings in the tsconfig.json apply. Currently I get a screenful of errors about TS2304: Cannot find name 'blah'

Yeah, need help!

Top comments (1)

Collapse
 
bugmagnet profile image
Bruce Axtens

To answer my own question, based on the response on StackOverflow, one needs to create a file-specific version of the tsconfig.json and use that when compiling the single file.

So here's the original tsconfig.json:

{
  "compileOnSave": true,
  "compilerOptions": {
    "allowSyntheticDefaultImports": true,
    "esModuleInterop": true,
    "target": "ES3",
    "lib": ["ESNext"],
    "strict": false,
    "moduleResolution": "node",
    "module": "system",
    "types": [".\\types"],
    "removeComments": true,
  },
  "include": ["*.ts"]
}
Enter fullscreen mode Exit fullscreen mode

I now have a separate BOML.tsconfig file (BOML is the name of the single target in this case) which is:

{
  "compileOnSave": true,
  "compilerOptions": {
    "allowSyntheticDefaultImports": true,
    "esModuleInterop": true,
    "target": "ES3",
    "lib": ["ESNext"],
    "strict": false,
    "moduleResolution": "node",
    "module": "system",
    "types": [".\\types"],
    "removeComments": true,
    "outFile": "BOML.RR"
  },
  "files": ["BOML.ts"]
}
Enter fullscreen mode Exit fullscreen mode

To compile: npx tsc -p boml.tsconfig and I get a nice boml.rr at the end

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay