运行 从单独的第三方节点模块中继承迁移文件?

Run Sequelize migration files from separate third-party Node module?

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

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

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

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

假设 ./node_modules/.bin/sequelize db:migrate 运行s 迁移在主模块中,并且您有邮件模块迁移目录,比方说,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"
  }
}

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