【问题标题】:Run Sequelize migration files from separate third-party Node module?从单独的第三方节点模块运行 Sequelize 迁移文件?
【发布时间】:2019-11-17 05:41:15
【问题描述】:
我正在开发处理发送电子邮件并将它们存储在数据库中的第三方 NODE 模块,所以我们称之为邮件模块。为了让某人使用它的功能,将它导入到他的项目中并使用它的功能来发送和存储电子邮件就足够了。
这里的问题是导入邮件模块的人需要手动创建用于存储电子邮件的数据库表,因为 Sequelize CLI 不会在单独的模块中看到迁移脚本。在 mail-module 中有 Sequelize 迁移脚本,但开发人员在模块中查找它比将其复制到自己的项目中并作为其项目的一部分运行很麻烦。
有什么方法可以避免这种手动工作并进行配置,以便开发人员(邮件模块的用户)运行自己的迁移脚本时,也会执行邮件模块迁移脚本?
【问题讨论】:
标签:
node.js
orm
sequelize.js
node-modules
sequelize-cli
【解决方案1】:
您不一定需要将邮件模块迁移复制到主模块。您可以为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。希望这能解决您的问题。