パッケージを入れる
基本的には、以下を入れる。
$ npm i typeorm reflect-metadata
$ npm i @types/node typescript ts-node tsconfig-paths --save-dev
MySQL を使うなら
$ npm i mysql
PostgreSQL を使うなら
$ npm i pg
あとバリデが必要なら
npm i class-validator --save-dev
あたりを入れる。
npm scripts に typeorm をつくる
"scripts": {
"typeorm": "ts-node -r tsconfig-paths/register ./node_modules/typeorm/cli.js"
}
とかしておくと
$ npm run typeorm migration:run
とか
$ npm run typeorm migration:generate -- -n InitialSchema
とかできて便利な気がする。
tsconfig.json
まあ target とかは、よしなに変える。
{
"compilerOptions": {
"target": "es2015",
"module": "commonjs",
"outDir": "./dist",
"rootDir": "./src",
"strict": true,
"moduleResolution": "node",
"baseUrl": "./",
"esModuleInterop": true,
"experimentalDecorators": true,
"emitDecoratorMetadata": true
}
}
大事なのは experimentalDecorators と emitDecoratorMetadata が true になっていること。
ormconfig.js
環境変数は、dotenv とか使うと良いと思う。
module.exports = {
type: 'mysql',
host: process.env.DB_HOST,
port: process.env.DB_PORT,
username: process.env.DB_USERNAME,
password: process.env.DB_PASSWORD,
database: process.env.DB_DATABASE,
charset: process.env.DB_CHARSET,
timezone: process.env.DB_TIMEZONE,
entities: ['./src/models/entities/*.ts'],
migrations: ['./src/models/migrations/*.ts'],
cli: {
entitiesDir: './src/models/entities',
migrationsDir: './src/models/migrations'
}
}
ちなみに .env.example は、こんな感じ。
DB_HOST=
DB_PORT=3306
DB_USERNAME=
DB_PASSWORD=
DB_DATABASE=
DB_CHARSET=utf8mb4
DB_TIMEZONE=utc
一言
以上、個人的メモでした。