webpack NX + Nest.js + TypeORM -网络包+迁移

pkwftd7m  于 2022-11-24  发布在  Webpack
关注(0)|答案(1)|浏览(180)

因此,我使用NX(Nest.js + Angular)启动了一个项目。我需要一个数据库,所以我配置了TypeORM。在“服务”模式下一切都工作正常,但是,我应该如何配置迁移呢?
在一个常规的Nest.js项目中,dist目录中的所有内容都与您的项目具有相同的结构,因此迁移也会在那里编译和复制。因此,如果您正确配置了TypeORM,将migrationsRun标志设置为true,并正确设置了migrations路径,则迁移会在应用启动时运行。
问题是,NX使用webpack,所以你在dist中没有一个完整的结构,而只有一个main.js文件,没有其他文件。
我的问题是:解决这个问题的最好方法是什么?我应该尝试重新配置webpack吗?还是有更好的方法?
我的项目结构大致如下:

project/
├─ apps/
│  ├─ api/
│  │  ├─ src/
│  │  │  ├─ config/
│  │  │  │  ├─ database/
│  │  │  │  │  ├─ typeorm.config.ts
│  │  │  ├─ database/
│  │  │  │  ├─ migrations/
|  |  |  |  |  ├─ 1668904379611-SomeMigration.ts
├─ dist/
│  ├─ apps/
│  │  ├─ api/
│  │  │  ├─ main.js

typeorm.config.ts

host: process.env.MYSQL_HOST,
  port: +process.env.MYSQL_PORT,
  username: process.env.MYSQL_USER,
  database: process.env.MYSQL_DATABASE,
  password: process.env.MYSQL_PASSWORD,
  entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
  migrations: [__dirname + '/../../**/database/migrations/*{.ts,.js}'],
  extra: {
    charset: 'utf8mb4_unicode_ci',
  },
  synchronize: false,
  migrationsRun: true,
  logging: true,
  autoLoadEntities: true,

//编辑
我发现这是Webpack的问题,而不是NX本身。Webpack将所有内容都捆绑到一个main.js文件中。

2nbm6dog

2nbm6dog1#

因此,在我的项目中,我们在一个名为lib的文件夹中有数据库的常规配置,该文件夹是通过NX命令生成的,对于每个服务,我们从lib中获取常规配置,并从其自身的配置中获取每个服务的迁移,然后我们在package.json中定义了一些目标来运行迁移。
//服务模块

//数据存储选项. ts

//项目名称

    • 提示:**该项目是一个单存储库,因此每个服务都有自己的package.json,因此对于每个有数据库的服务,我们将这些目标放在它自己的package.json文件中。

我希望这对你有帮助。😊

相关问题