👏
必要最低限のTypeScriptプロジェクトをCLIで作成する
最初に
TypeScriptで最小限のプロジェクトの作成を極力コマンドラインで作れるようにしてみました。
もっと効率いい方法もありそうですが、取り回しの面を考えて以下のようにしてみました。
前提条件
- node: v16.8.0
-
gh
をインストールしておく(参考: https://github.com/cli/cli#installation) -
fzf
+ghq
の環境を作る(参考: https://qiita.com/tomoyamachi/items/e51d2906a5bb24cf1684) -
yarn
で環境作成
githubのrepoを作る
# 任意のディレクトリに移動
$ cd ~
# 環境変数を設定
$ export GITHUB_USER=kohski
$ export REPO_NAME=ts-init-2
# ghqでlocal repositoryを作成する
# fzf + ghqの環境を整備しておくと便利(参考: https://qiita.com/tomoyamachi/items/e51d2906a5bb24cf1684)
$ ghq create $GITHUB_USER/$REPO_NAME
# ディレクトリを移動する
$ cd ~/repos/github.com/$GITHUB_USER/$REPO_NAME
# remoteリポジトリを作る => promptには適宜回答する
$ gh repo create
# 最低限の.gitignoreを追加
$ echo -e "**/node_modules\n**/dist" > .gitignore
TypeScriptのセットアップ
# yarnを用いてプロジェクトを作成。ひとまずは全部デフォルトで実施。
$ yarn init -y
# 最低限のパッケージを追加
$ yarn add --dev typescript @types/node
# tsconfig.jsonの雛形を作成
$ echo -e echo -e '{"compilerOptions":{"target":"es2020","module":"commonjs","outDir":"./dist","esModuleInterop":true,"forceConsistentCasingInFileNames":true,"strict":true,"exactOptionalPropertyTypes":true,"noUncheckedIndexedAccess":true,"skipLibCheck":true},"include":["./src/**/*.ts"]}' > tsconfig.json
# プロジェクト用のディレクトリとファイルを作成
$ mkdir src/index.ts dist
tsconfig.jsonの内容
最後のechoコマンドの内容は以下のようになっています(ブルーベリー本第9章を参考にしています)
- targetを
es2020
にする - compilerOptions.outDirを
./dist
に変更 - includeを
./src
に変更 - exactOptionalPropertyTypesを追加
- noUncheckedIndexedAccessを追加
tsc --init
でのデフォルトからの差分は以下です。
tsconfig.json
{
"compilerOptions": {
- "target": "es2016",
+ "target": "es2020",
"module": "commonjs",
- // "outDir": "./",
+ "outDir": "./dist",
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"strict": true,
+ "exactOptionalPropertyTypes": true,
+ "noUncheckedIndexedAccess": true,
"skipLibCheck": true
},
+ "include": ["./src/**/*.ts"]
}
おわりに
簡単ですが以上です。
本当にちょっと動かしたいなら、ts-nodeやDenoなどもあるのですが、GitHubのRepository作成も込みで以上のようにしてみました。
Discussion