mongoomig
Description
Yet another mongoose migration tool
Key features
- Async/await is default concept
- Mongoose 4.11 support without deprecation warning
- Could be configured through command line arguments, environment variables or config file
- No dependencies, just one peer dependency - mongoose
- Typescript support
Installation
Install with npm:
$ npm install mongoomig
Usage
-
Create a migration. The following command creates a new migration file ./migrations/${date}-first-migration.js
$ mongoomig create first-migration
-
Write migration code
'use strict';const User = ;moduleexports =async {await User;}async {await User;}; -
Execute the migration
$ mongoomig up
-
(Optional) Add the migration command to package.json script:
"scripts": {
"start": "node index.js",
"migrate": "mongoomig up"
}
Also, you can check the example.
With Typescript
You can compile your modules before migration, or use ts-node instead:
npm install -D ts-nodemongomig up --require ts-node/register
Options
Command line
Usage: mongoomig [options] <command> Commands: up [name] Migrate up till given migration down [name] Migrate down till given migration create <name> Create a new migration list Show migrations which are applied Options: -c, --config=<path> Load config from json or js file, default to ./migrations/config.js -u, --url=<url> Mongodb connection string --collection=<name> Migrations collection, defaults to migrations -p, --path=<path> Where your migrations are stored, defaults to ./migrations --reconnectInterval=<ms> Try to reconnect every <ms>, default 300 --reconnectTries=<count> Try to reconnect <count> times, default 100 -r, --require=<module> Require a module before loading migrations -s, --silent Silent mode, defaults to false -d, --debug Debug mode, defaults to false
Environment variables
Also, you can set a such options through environment variable. Just set MONGOOMIG_<OPTION_NAME_UPPERCASED>. For example, the MONGOOMIG_COLLECTION environment variable is equal to the collection option.
Additionally, mongoomig tries to load the url option from the MONGO_URL environment variable if another ways are not available.
Config file
Another way is to specify options inside a config. By default, this package tries to read a config from migrations/config.js. Here is the example of such a config:
'use strict'; moduleexports = url: 'mongodb://localhost/tiny-blog';
API
If you would like to run migrations from your code instead of command line, you can use API.
const Migration = ; const migration = path url ;await migration;await migration;
A good example is index.js of this package.
License
Licensed under MIT.