Serverless Migrate Plugin
Allows to create and run migrations using the serverless context
Serverless plugin for migrate
==============================
[](http://www.serverless.com)
[](https://badge.fury.io/js/serverless-migrate-plugin)
This is a plugin for the [Serverless][serverless-web] framework that allows you to manage and run database-agnostic
migrations. To do so, it works on top of [migrate][migrate-npm].
## Features
With this plugin you can
* Make the commands of `migrate` available via the `serverless` CLI.
* Be aware of the environment variables configured in your _serverless.yml_.
* Add the env variable `SERVERLESS_ROOT_PATH` which points to the root directory of your project.
* Configure aspects of your migration using your _serverless.yml_: no need to specify them as options with the CLI.
* Set values to env variables just for the migration context.
* Specify an custom character indicator of the last run migration.
Basically, these migrations can do anything that involves applying I/O changes and undo them.
Watch the [CHANGELOG](./CHANGELOG.md) to see what has been added to the date.
## Quick start
To get into details, check out the [example](example) project of this repository. It contains a README with an
explanation about all the valid commands and configuration variables you can use. For starters, this is what you must do
to start working right away with migrations:
1. Install `serverless-migrate-plugin` in your project:
```bash
npm i serverless-migrate-plugin
```
1. Add it to your _serverless.yml_ to the `plugins` section:
```yaml
plugins:
- serverless-migrate-plugin
```
1. Add a `custom.migrate` section to your _serverless.yml_ with the parameters you want to override:
```yaml
custom:
migrate:
stateFile: .migrate2
store: ./sample-store
lastRunIndicator: <
noDescriptionText: '?'
ignoreMissing: true
dateFormat: "yyyy-MM-dd hh:mm:ssZ"
templateFile: "my-project-template.js"
environment:
ANOTHER_ENV: overrriden value
```
You can learn more about these variables in the [example](./example/README.md#custom-variables).
1. Create your first migration:
```bash
sls migrate create -n
```
Now you are ready to implement your migrations. Once you have finished, you can run them using `sls migrate up`and
`sls migrate down`. If you want to know more about any commands just run:
```bash
sls migrate --help
```
It is also recommended that you understand how the [migrate](https://github.com/tj/node-migrate) library works, like how
to [create migrations](https://github.com/tj/node-migrate#creating-migrations).
## Built With
* [Serverless framework](https://serverless.com/): A powerful, unified experience to develop, deploy,
test, secure, and monitor your Serverless applications.
* [Migrate](https://github.com/tj/node-migrate): Abstract migration framework for node.
* [NodeJS](https://nodejs.org/): As runtime for Javascript 8+.
## Author
* **Eliecer Hernandez** - [eliecerhdz@gmail.com](mailto:eliecerhdz@gmail.com).
For more information, please visit my [website](http://eliux.github.io).
## License
This project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md) file for details.
[migrate-npm]: https://www.npmjs.com/package/migrate
[serverless-web]: https://www.serverless.com