从单独的第三方 Node 模块运行 Sequelize 迁移文件?

mil*_*dju 3 orm node.js sequelize.js node-modules sequelize-cli

我正在开发第三方 NODE 模块,该模块处理发送电子邮件并将其存储在数据库中,所以我们称其为邮件模块。为了让某人使用它的功能,将其导入到他的项目中并使用其功能来发送和存储电子邮件就足够了。

这里的问题是,导入邮件模块的人需要手动创建数据库表来存储电子邮件,因为 Sequelize CLI 在单独的模块中看不到迁移脚本。在 mail-module 中有 Sequelize 迁移脚本,但对于开发人员来说,在模块中查找它比将其复制到自己的项目中并作为其项目的一部分运行更麻烦。

有没有办法避免这种手动工作并进行配置,以便当开发人员(邮件模块的用户)运行自己的迁移脚本时,也会执行邮件模块迁移脚本?

Ann*_*hko 5

您不一定需要将邮件模块迁移复制到主模块。您可以指定命令--migrations-path的选项db:migrate

假设./node_modules/.bin/sequelize db:migrate在主模块中运行迁移,并且您的邮件模块迁移目录位于 中,那么node_modules/main-module/lib/migrations您可以在 中组合以下脚本中的命令package.json

{
  ...
  "scripts": {
    "dbs-migrate": "./node_modules/.bin/sequelize db:migrate && ./node_modules/.bin/sequelize db:migrate --migrations-path ./node_modules/mail-module/lib/migrations"
  }
}
Run Code Online (Sandbox Code Playgroud)

这样,您将使用以下命令运行所有迁移:npm run dbs-migrate。希望这能解决您的问题。