我正在开发第三方 NODE 模块,该模块处理发送电子邮件并将其存储在数据库中,所以我们将其称为邮件模块。为了让某人使用它的功能,将其导入到他的项目中并使用其功能来发送和存储电子邮件就足够了。
这里的问题是,导入邮件模块的人需要手动创建数据库表来存储电子邮件,因为 Sequelize CLI 在单独的模块中看不到迁移脚本。在 mail-module 中有 Sequelize 迁移脚本,但开发人员在模块中查找它比将其复制到自己的项目中并作为其项目的一部分运行更麻烦。
是否有任何方法可以避免这种手动工作并进行配置,以便当开发人员(邮件模块的用户)运行自己的迁移脚本时,也会执行邮件模块迁移脚本?
最佳答案
您不一定需要将邮件模块迁移复制到主模块。您可以为 db:migrate
命令指定 --migrations-path
选项。
假设 ./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"
}
}
这样,您将使用以下命令运行所有迁移:npm run dbs-migrate
。希望这能解决您的问题。
关于node.js - 从单独的第三方 Node 模块运行 Sequelize 迁移文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56922523/