0
0

More than 3 years have passed since last update.

[環境構築]Node.js+TypeScript

Last updated at Posted at 2021-08-21

背景

毎度毎度、セットアップの度に調べているので、自分用のメモです。

私自身はReact Nativeの開発が主ですが、簡単にjsやtsの動作確認したいときに、Playground的に利用します。

前提

  • Mac
    homebrewを使う場所があるのと動作確認をMacでやっただけで、Windowsでもほぼ変わらないと思います。
  • Node.jsがセットアップされている
  • yarnがインストールされている
    もちろん、npmでも代用可
  • gitがインストールされていること
    Macだとデフォルトでインストールされてます(Apple Git-xxxという謎バージョン)

プロジェクトセットアップ

// フォルダ作成
mkdir node-and-ts
// カレントの移動
cd node-and-ts
// パッケージの初期化(package.jsonが作成される)
yarn init -y

gitセットアップ

git自体の説明はここでは省略します。
初期化と除外ファイルの設定を行います。

初期化

// カレントに.gitフォルダと必要ファイルが作成される
// 隠しフォルダなので見れないかも
git init
// 一応できているか確認
ls -f

.gitignoreの作成

giboってのを使う簡単にできるらしいのでインストールして使ってみます
出力項目の内容を.gitignoreファイル作って貼り付けてもOK。

giboのインストール

brew install gibo

.gitignoreの作成

gibo dump macos linux windows node > .gitignore

出力

以下をコピって、.gitignoreファイルに貼り付けてもよい

### https://raw.github.com/github/gitignore/b0012e4930d0a8c350254a3caeedf7441ea286a3/Global/macOS.gitignore

# General
.DS_Store
.AppleDouble
.LSOverride

# Icon must end with two \r
Icon

# Thumbnails
._*

# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent

# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk


### https://raw.github.com/github/gitignore/b0012e4930d0a8c350254a3caeedf7441ea286a3/Global/Linux.gitignore

*~

# temporary files which can be created if a process still has a handle open of a deleted file
.fuse_hidden*

# KDE directory preferences
.directory

# Linux trash folder which might appear on any partition or disk
.Trash-*

# .nfs files are created when an open file is removed but is still being accessed
.nfs*


### https://raw.github.com/github/gitignore/b0012e4930d0a8c350254a3caeedf7441ea286a3/Global/Windows.gitignore

# Windows thumbnail cache files
Thumbs.db
Thumbs.db:encryptable
ehthumbs.db
ehthumbs_vista.db

# Dump file
*.stackdump

# Folder config file
[Dd]esktop.ini

# Recycle Bin used on file shares
$RECYCLE.BIN/

# Windows Installer files
*.cab
*.msi
*.msix
*.msm
*.msp

# Windows shortcuts
*.lnk


### https://raw.github.com/github/gitignore/b0012e4930d0a8c350254a3caeedf7441ea286a3/Node.gitignore

# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
.pnpm-debug.log*

# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json

# Runtime data
pids
*.pid
*.seed
*.pid.lock

# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov

# Coverage directory used by tools like istanbul
coverage
*.lcov

# nyc test coverage
.nyc_output

# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt

# Bower dependency directory (https://bower.io/)
bower_components

# node-waf configuration
.lock-wscript

# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release

# Dependency directories
node_modules/
jspm_packages/

# Snowpack dependency directory (https://snowpack.dev/)
web_modules/

# TypeScript cache
*.tsbuildinfo

# Optional npm cache directory
.npm

# Optional eslint cache
.eslintcache

# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/

# Optional REPL history
.node_repl_history

# Output of 'npm pack'
*.tgz

# Yarn Integrity file
.yarn-integrity

# dotenv environment variables file
.env
.env.test
.env.production

# parcel-bundler cache (https://parceljs.org/)
.cache
.parcel-cache

# Next.js build output
.next
out

# Nuxt.js build / generate output
.nuxt
dist

# Gatsby files
.cache/
# Comment in the public line in if your project uses Gatsby and not Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support
# public

# vuepress build output
.vuepress/dist

# Serverless directories
.serverless/

# FuseBox cache
.fusebox/

# DynamoDB Local files
.dynamodb/

# TernJS port file
.tern-port

# Stores VSCode versions used for testing VSCode extensions
.vscode-test

# yarn v2
.yarn/cache
.yarn/unplugged
.yarn/build-state.yml
.yarn/install-state.gz
.pnp.*

typescriptのインストールと初期化

インストール

typescript自体と型情報をインストール

// 16の部分はご利用中のnodeバージョンを指定する
// インストールされると、node_modulesフォルダが作成され、インストールしたパッケージが保存される
yarn add --dev typescript @types/node@16 ts-node
// nodeバージョンの確認方法
node- v

初期化

// tsconfig.jsonファイルが作成される
yarn tsc --init

tsconfig設定

設定したいこと
1. tsファイルのフォルダを指定する(srcフォルダ内に作成する)
2. ts->jsにトランスパイルした際のjsファイルの出力先
3. トランスパイルの対象ECMAScriptバージョンを変更
4. SourceMapをtrueにして、デバッグ時などに利用する(される)

1. tsファイルのフォルダを指定する(srcフォルダ内に作成する)
// compilerOptionsと同じ並びにincludeを追加して対象フォルダを指定
// tscなどのトランスパイル時に指定したフォルダからtsファイルを探してくれる
{
  "compilerOptions": {
     ...省略...
- }
+ },
+ "include": [
+   "src/**/*"
+ ],
}
2. ts->jsにトランスパイルした際のjsファイルの出力先
// もともとコメントアウトされてるoutDirに記載
{
  "compilerOptions": {
     ...省略...
-   //"outDir": "./",
+   "outDir": "./dist",
    ...省略...
}
3. トランスパイルの対象ECMAScriptバージョンを変更
// targetを変更
{
  "compilerOptions": {
     ...省略...
-   "target": "es5",
+   "target": "ES2021",
    ...省略...
}
4. SourceMapをtrueにして、デバッグ時などに利用する(される)
// もともとコメントアウトされてるoutDirに記載
{
  "compilerOptions": {
     ...省略...
-   //"sourceMap": true,
+   "sourceMap": true,
    ...省略...
}

tsconfigの設定内容についての詳細情報

以下のサイトに細かく記載されてます。
TypeScript: TSConfig リファレンス - すべてのTSConfigのオプションのドキュメント

ECMAScriptについて

ECMAScriptについては毎度忘れるのでメモ
ECMAScriptはJavaScriptの仕様。
仕様自体はちょくちょく更新されるけど、毎年決まった時期の仕様の状態をECMA2020とかECMA2021とかいって管理してる。
一般的には新しくなるにつれ、良くなっていくはずだがChromeやEdgeが新しいECMA Scriptに対応してるわけではないので、Webページ開発者はその点を気にして設定を変える必要がある、ES6(ECMA2015)とかなのか。
私はWebページの開発者でもないので、なんとなく新しいものを使っておく。

ECMAScript

TypescriptでHello World

1. プロジェクトフォルダ内にsrcフォルダ作成
2. srcフォルダ内にhello.tsを作成
3. hello.tsの中身を編集
console.log("Hello World");
4. トランスパイルと実行を分けて行う
// tscを実行してts->jsにする
// 成功するとdistフォルダにhello.jsとしてトランスパイル結果が出力される
yarn tsc
// Node.jsでhello.jsを実行
node ./dist/hello.js
>> Hello World
5. トランスパイルと実行を一括で行う
yarn ts-node ./src/hello.ts
>> Hello World

参考URL

TypeScript + Node.js プロジェクトのはじめかた2020 - Qiita
gibo GitHub
ECMAScript
TypeScript: TSConfig リファレンス - すべてのTSConfigのオプションのドキュメント

0
0
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
0
0