1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ぼくの TypeScript

Posted at

毎回調べるのが面倒なので備忘録。src 内のソースを呼んで dist に吐き出す nodejs 向けの設定例。

インストール

npm install typescript --save-dev

参考: https://www.typescriptlang.org/

tsconfig の作成

tsconfig.json とは tsc を入力ファイル無しで実行すると参照する設定ファイル。環境ごとのおすすめ設定を https://github.com/tsconfig/bases/ の中から選んで extends に指定するとおすすめを元に細かく設定できる。

npm install --save-dev @tsconfig/node16-strictest

tsconfig.json の内容例:

{
  "extends": "@tsconfig/node16/tsconfig.json",
  "compilerOptions": {
    "incremental": true,
    "noEmitOnError": true,
    "outDir": "dist"
  },
  "include": ["src/**/*"]
}
  • extends: おすすめ設定ファイルの名前。
  • files: コンパイルするファイルを一つ一つ指定する。
  • include: コンパイルするファイルやディレクトリをまとめて指定する。拡張子が指定しなければ ts, tsx, d.ts などを選んだ事にする。
  • exclude: include の中で除外するファイルやディレクトリ。
  • compilerOptions.outDir: .js ファイル出力先。無ければ .ts ファイルと同じ場所に出力する。
  • compilerOptions.incremental: ビルドが速くなるらしい。
  • compilerOptions.noEmitOnError: true だとエラー時 .js を出力しない。デフォルトは false

参考:

構文検査ツール ESLint の設定

npm install eslint --save-dev
npm init @eslint/config

質問に答えると設定完了 (airbnb guide を選んでいます)

✔ How would you like to use ESLint? · style
✔ What type of modules does your project use? · esm
✔ Which framework does your project use? · none
✔ Does your project use TypeScript? · Yes
✔ Where does your code run? · browser
✔ How would you like to define a style for your project? · guide
✔ Which style guide do you want to follow? · airbnb
✔ What format do you want your config file to be in? · YAML

参考:

TypeScript ESLint の設定

上記質問に Does your project use TypeScript? · Yes と答えたので typescript-eslint はインストールされている。.eslintrc.yml の extends に追加。これをやらないと TypeScript と ESLint が喧嘩する。

  - plugin:@typescript-eslint/recommended
  - plugin:@typescript-eslint/recommended-requiring-type-checking

参考:
https://typescript-eslint.io/docs/

コード整形ツール Prettier の設定

npm install --save-dev --save-exact prettier eslint-config-prettier
echo {}> .prettierrc.json

.prettierignore ファイルを作成して整形したくないディレクトリを書く。

.serverless/
node_modules/
dist/

.eslintrc.yml に extends: [ prettier ] を追加すると、ESLint と prettier が喧嘩しなくなる。最終的にぼくの .eslintrc.yml はこんな風になった。

env:
  browser: true
  es2021: true
extends:
  - airbnb-base
  - plugin:@typescript-eslint/recommended
  - plugin:@typescript-eslint/recommended-requiring-type-checking
  - prettier
parser: "@typescript-eslint/parser"
parserOptions:
  ecmaVersion: latest
  sourceType: module
plugins:
  - "@typescript-eslint"
rules:
  no-console: off

todo: monorepo で husky を使う方法

参考

package.json に登録する

あとは実行しやすいように package.json の script に書く。

  "scripts": {
    "watch": "tsc --watch",
    "lint": "eslint . --fix",
    "prettier": "prettier --write ."
  },
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?