Запустить файлы миграции Sequelize из отдельного стороннего модуля Node?

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

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

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


person milosdju    schedule 07.07.2019    source источник


Ответы (1)


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

person Anna Tolochko    schedule 09.07.2019