Skip to content

Instantly share code, notes, and snippets.

@rstacruz
Last active October 17, 2024 15:36
Show Gist options
  • Save rstacruz/648cb4dc68a76c761dc9e989832d9a50 to your computer and use it in GitHub Desktop.
Save rstacruz/648cb4dc68a76c761dc9e989832d9a50 to your computer and use it in GitHub Desktop.
Setting up Babel and TypeScript

Install Babel 7 and TypeScript

yarn add --dev \
  @babel/core \
  @babel/cli \
  @babel/preset-env \
  @babel/preset-typescript \
  typescript

Babel config

Configure babel.config.js to add preset-typescript in there.

module.exports = {
  presets: ['@babel/preset-typescript', '@babel/preset-env']
}

TypeScript config

Create tsconfig.json.

{
  "compilerOptions": {
    // Target latest version of ECMAScript.
    "target": "esnext",
    // Search under node_modules for non-relative imports.
    "moduleResolution": "node",
    // Process & infer types from .js files.
    "allowJs": true,
    // Don't emit; allow Babel to transform files.
    "noEmit": true,
    // Enable strictest settings like strictNullChecks & noImplicitAny.
    "strict": true,
    // Import non-ES modules as default imports.
    "esModuleInterop": true,
    "jsx": "react"
  },
  "include": [
    "src" // <-- change this to where your source files are
  ]
}

Add tsc script

Add the tsc script to your package.json. Configure your CI to run yarn run tsc for checks.

"scripts": {
  "watch": "babel --watch src --out-dir lib --extensions .ts,.tsx",
  "build": "babel src --out-dir lib --extensions .ts,.tsx",
  "tsc": "tsc"
}

Just run tsc

This will run type checks.

yarn run tsc

Also see

@hddananjaya
Copy link

There is an extra - in --out-dir. Don't forget to remove it as well.

@RonRon-sudo
Copy link

Could you please fix code example in "Add tsc script` block?

Instead of ---out-dir should be --out-dir (two dashes).

Thank you.

Update for Windows users:

Also, it it required to remove quotes around extensions - '.ts,.tsx' -> .ts,.tsx

Thanks. Your windows tip really saved me a lot of time.

@rstacruz
Copy link
Author

rstacruz commented Sep 4, 2024

Took a while, updated the gist with your corrections! Thanks all.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment