Запустить Sequelize миграционные файлы из отдельного стороннего модуля Node? - PullRequest
1 голос
/ 07 июля 2019

Я работаю над сторонним модулем NODE, который занимается отправкой электронной почты и хранением их в БД, поэтому давайте назовем его mail-module. Для того чтобы кто-то использовал его функциональные возможности, достаточно импортировать его в свой проект и использовать его функции для отправки и хранения электронных писем.

Проблема здесь в том, что кому-то, кто импортирует почтовый модуль, ему нужно вручную создавать таблицы БД для хранения электронной почты, потому что Sequelize CLI не видит скрипты миграции в отдельных модулях. В почтовом модуле есть сценарии миграции Sequelize, но разработчикам неудобно искать его в модуле, чем копировать его в своем собственном проекте и запускать как часть своего проекта.

Есть ли способ избежать этой ручной работы и настроить ее так, чтобы, когда разработчик (пользователь mail-модуля) запускал свои собственные скрипты миграции, скрипты миграции почтового модуля также выполнялись?

1 Ответ

1 голос
/ 09 июля 2019

Вам не обязательно копировать миграцию почтового модуля в основной модуль. Вы можете указать опцию --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"
  }
}

Таким образом, вы запустите все миграции с помощью следующей команды: npm run dbs-migrate. Надеюсь, это решит вашу проблему.

...