Init TypeScript Project

Install TS and more

pnpm init
pnpm add -D typescript sucrase nodemon
mkdir src
touch src/server.ts
echo "const a: number = 5; console.log(a);" >> src/server.ts
echo "node_modules \\\\n.env" >> .gitignore
echo "{
    \\\\"watch\\\\": [
        \\\\"src\\\\"
    ],
    \\\\"ext\\\\": \\\\"ts\\\\",
    \\\\"execMap\\\\": {
        \\\\"ts\\\\": \\\\"sucrase-node src/server.ts\\\\"
    }
}" >> nodemon.json

add on package.json

"scripts": {
"dev": "nodemon src/server.ts",
"build": "sucrase ./src -d .dist --transforms typescript, imports"
},

Eslint

Install eslint

pnpm add -D eslint @typescript-eslint/parser @typescript-eslint/eslint-plugin

init eslint

pnpm eslint --init

add on .eslintrc.js

echo "module.exports = {
  env: {
    node: true,
    es2021: true
  },
  extends: ['standard', 'plugin:@typescript-eslint/recommended'],
  parser: '@typescript-eslint/parser',
  parserOptions: {
    ecmaVersion: 'latest',
    sourceType: 'module'
  },
  plugins: ['@typescript-eslint'],
  rules: {}
}" >> .eslintrc.js

settings.json (vs code)

  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": true
  },
 
  "[javascript]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },

  "[typescript]": {
    "editor.formatOnSave": false
  },

  "[typescriptreact]": {
    "editor.formatOnSave": false
  },

Install prettier (if necessary)

pnpm add prettier eslint-config-prettier eslint-plugin-prettier -D