我如何为 typeorm CLI 指定迁移目录

Mat*_*újo 10 postgresql node.js typeorm

新的 typeorm 发布后,迁移时会遇到一些麻烦。

前段时间我正在使用该代码并且它有效

entities: ['./src/modules/**/infra/typeorm/entities/*.ts'],
migrations: ['./src/shared/infra/typeorm/migrations/*.ts'],
cli: {
  migrationsDir: './src/shared/infra/typeorm/migrations'
}
Run Code Online (Sandbox Code Playgroud)

但现在我无法指定 cli 属性。要创建新的迁移,我必须指定整个迁移路径

npm run typeorm migration:create ./src/database/migrations -n SomeTest
Run Code Online (Sandbox Code Playgroud)

有没有另一种方法可以在不指定整个路径的情况下做到这一点?

小智 19

创建 ormconfig.ts

import { DataSource } from 'typeorm';

export const AppDataSource = new DataSource({
  type: 'postgres',
  host: 'localhost',
  port: 5432,
  username: 'postgres',
  password: 'password',
  database: 'postgres',
  entities: ['dist/**/*.entity.js'],
  logging: true,
  synchronize: false,
  migrationsRun: false,
  migrations: ['dist/**/migrations/*.js'],
  migrationsTableName: 'history',
});
Run Code Online (Sandbox Code Playgroud)

安装“cross-var”包 在 package.json 文件中添加命令

"typeorm": "ts-node -r tsconfig-paths/register ./node_modules/typeorm/cli -d ormconfig.ts",
"migration:create": "cross-var ts-node -r tsconfig-paths/register ./node_modules/typeorm/cli migration:create ./src/migrations/$npm_config_name",
"migration:generate": "cross-var npm run typeorm -- migration:generate ./src/migrations/$npm_config_name",
"migration:run": "npm run build && npm run typeorm -- migration:run",
"migration:revert": "npm run typeorm -- migration:revert"
Run Code Online (Sandbox Code Playgroud)

命令示例

"npm run migration:create --name=Test1"
Run Code Online (Sandbox Code Playgroud)

看看这个项目


Jef*_*fox 16

截至 2022 年 6 月,该文档已过时-n MigrationName,不再受支持。你可以这样做:

typescript esm: npx typeorm-ts-node-esm migration:create src/database/migration/MigrationFileName其中MigrationFileName是要创建的文件名,src/database/migration/是路径。

打字稿通用: npx typeorm-ts-node-commonjs migration:create

PS 这可能会迟到,但这可以拯救其他人。PS 我自己才发现这一点。如果将来这不起作用,请告诉我,这样我也会知道。


ana*_*and 6

我的 package.json 中有以下脚本来解决这个问题。

"migration:run": "typeorm -d src/datasource/datasource.ts migration:run",
"migration:create":"cd ./src/db/migrations && typeorm-ts-node-commonjs migration:create",
Run Code Online (Sandbox Code Playgroud)

因此,每当我想创建新的迁移文件时,我都可以简单地运行 npm run migration:create nameOfMigration而不指定整个目录。