17 lines
1.6 KiB
Text
17 lines
1.6 KiB
Text
---
|
|
title: What's Emigrate?
|
|
description: An introduction to Emigrate, the modern database agnostic migration tool.
|
|
---
|
|
|
|
Emigrate is written in [TypeScript](https://www.typescriptlang.org) and is a migration tool for any database or data.
|
|
|
|
* It's database agnostic - you can use it with any database, or even with non-database data.
|
|
* It's the successor of [klei-migrate](https://github.com/klei/migrate) and is designed to be compatible with [Immigration](https://github.com/blakeembrey/node-immigration) and many of its storage plugins, as well as [Migrate](https://github.com/tj/node-migrate).
|
|
* It supports migration files written using [CommonJS or ES Modules out of the box](../../plugins/loaders/default/), with any of the following extensions: `.js`, `.cjs` or `.mjs`, and supports [async functions](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function), [Promises](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) or using the [NodeJS Callback Pattern](https://nodejs.org/en/learn/asynchronous-work/javascript-asynchronous-programming-and-callbacks#handling-errors-in-callbacks).
|
|
* Other languages can be used by using a [Loader Plugin](../../plugins/loaders/).
|
|
* The migration history can be stored anywhere using a [Storage Plugin](../../plugins/storage/).
|
|
* The output can be customized using [Reporters](../../plugins/reporters/).
|
|
|
|
:::tip[Did you know?]
|
|
Thanks to [the plugin system](../../plugins/) you can even write migrations in plain SQL! So no need for Java-based tools like Liquibase or Flyway.
|
|
:::
|