- Published on
既存プロジェクトにreact-typescriptの環境構築
- Authors
- Name
- Kikusan
環境構築
yarn version
# yarn version v1.22.17
yarn init -y # フォルダの初期化 package.json, yarn.lockの生成
yarn add webpack webpack-cli --dev # webpackとwebpackCLIのインストール
yarn add @babel/core @babel/preset-env babel-loader --dev # babelとwebpackでのbabelビルドをするloaderをインストール
# typescriptのインストール
yarn add typescript --dev
yarn run tsc --init # tsconfig.jsonが生成される 設定は編集可能
# typescriptのコンパイル設定
yarn add @babel/preset-typescript --dev
# reactのインストール
yarn add react react-dom
yarn add @types/react @types/react-dom --dev
# JSXのコンパイル設定
yarn add @babel/preset-react --dev
# webpack-dev-serverのインストール
yarn add webpack-dev-server --dev
# Jestのインストール
yarn add jest @types/jest babel-jest --dev # tsxがテストできるようにbabel-jestもインストール
yarn run jest --init #jest.config.jsの生成 package.jsonにコマンド追加とかも選べる
# jsdomをtest環境に選択するとnode.js内でもブラウザ環境でテストできる
# Enzymeのインストール (reactのテスト補助ユーティリティ)
yarn add --dev enzyme @types/enzyme enzyme-adapter-react-16 @types/enzyme-adapter-react-16
# styled-componentsの導入 コンポーネントとスタイルをセットで扱うライブラリ
yarn add styled-components
yarn add @types/styled-components babel-plugin-styled-components --dev
- babel.config.jsを配置: babelの設定を記述
module.exports = {
presets: [
'@babel/preset-env',
'@babel/preset-react',
'@babel/preset-typescript'
],
plugins: [
'@babel/plugin-transform-runtime',
'babel-plugin-styled-components'
]
}
- webpack.config.jsの配置: webpackの設定記述
const path = require('path');
module.exports = {
mode: process.env.NODE_ENV || 'development', // 環境変数がなければ'development'で見やすいコード, 'production'では1行で出力
entry: './src/app.tsx', // 読み込みエントリファイル
output: {
filename: 'main.js', // 出力ファイル
path: path.resolve(__dirname, 'dist'), // 自フォルダ
},
resolve: {
extensions: ['.js', '.ts', 'tsx']
},
module: {
rules: [
{
// jsx/tsxを対象
test: /\.(j|t)sx?$/, // テストコード
exclude: /node_modules/, // 除外
use: {
loader: 'babel-loader', // babel使用でビルド
}
}
]
},
devServer: { // webpack-dev-serverでライブリロード
static: {
directory: __dirname,
},
port: 5000
},
};
- package.jsonにbuildコマンドを追加
{
// ・・・
"scripts": {
"build": "webpack", // ビルドコマンド
"lint:ts": "tsc --noEmit", // ts コンパイルエラー検知コマンド
"test": "jest", // jestテストコマンド
"serve": "webpack-dev-server" // ライブリロードできるサーバ起動コマンド
}
}
yarn run build
jqueryコードをTypeScriptで書き換えるには?
yarn add jquery # jqueryのインストール,コンパイラで使えるようにする
yarn add @types/jquery --dev # jqueryで使う型定義をインストール: Definitely Typedというリポジトリがある
- jsファイルをtsファイルに変更する
- <script /> でのインポートをとりやめ、tsファイル内で
import $ from 'jquery'
でインポートする - エラーを見て解消する
- ES Modulesに従いファイルを分割する
jqueryコードをReactで書き換えるには?
- tsファイルをtsxファイルに変更する
- htmlにrootとなるタグを追加し、tsxを修正する。
Jestの使用
- reactのテストのためにsrc/setupEnzyme.tsを作成
import { configure } from 'enzyme'
import EnzymeAdapter from 'enzyme-adapter-react-16'
configure({ adapter: new EnzymeAdapter() })
- src/jest.config.jsに以下を追記して
setupファイルを読みこみ、
拡張子が.tsxのファイルに対してbabel-jestが実行されるようにする
module.exports = {
// ・・・
setupFilesAfterEnv: ['<rootDir>/src/setupEnzyme.ts'],
transform: {
"^.+\\.tsx?$": "babel-jest"
}
}
- *.test.tsxファイルを作成し、テストを記述する