No description
Instead of mixing storages and reporters with other plugins in the plugin option they now have their own separate options. This is for increased future flexibility and to be more similar to other CLI tools. BREAKING CHANGE: the storage to use must now be specified using the "storage" configuration option or the "--storage" CLI option instead of having it among other plugins. |
||
|---|---|---|
| .changeset | ||
| .github | ||
| .husky | ||
| bin | ||
| packages | ||
| .editorconfig | ||
| .gitignore | ||
| .npmrc | ||
| .nvmrc | ||
| .prettierignore | ||
| .prettierrc | ||
| commitlint.config.js | ||
| LICENSE | ||
| package.json | ||
| pnpm-lock.yaml | ||
| pnpm-workspace.yaml | ||
| README.md | ||
| turbo.json | ||
Emigrate
The modern, modular and flexible migration tool for any database
It's effectively a successor of klei-migrate and Immigration.
Features
- Database agnostic
- Emigrate can migrate any database
- Works at any scale
- Supports any database as storage so multiple instances can share the same migration history
- Uses smart locking to ensure only one instance migrates a certain migration at a time
- Thanks to the smart locking it's safe to run migrations in parallel
- Can be run inside containers
- It's common for Docker or Kubernetes to kill containers with health checks if migrations takes too long to run
- Emigrate makes sure the migration history does not get stuck in a locked state if that's the case
- Supports any file type for your migration files
- You can easily write migrations in JavaScript, TypeScript or plain SQL (or any other language)
- JavaScript migration files written using CommonJS or ES modules (ESM) are supported out of the box
- You can customize the template for your migration files to fit your needs (or use a plugin to do it for you)
- Easy to debug
- Emigrate will store any errors that occur during migration in the migration history so you can easily debug them
Installation
Install the Emigrate CLI in your project:
npm install --save-dev @emigrate/cli
Usage
Create a new migration:
emigrate new -d migrations -e .js create some fancy table
Will create a new empty JavaScript migration file with the name "YYYYMMDDHHmmssuuu_create_some_fancy_table.js" in the migrations directory.
License
Emigrate is licensed under the MIT license. See LICENSE for the full license text.