sync-dotenv-slack
Version:
Keep .env in sync with teammates on Slack
119 lines (87 loc) • 3.35 kB
Markdown
# sync-dotenv-slack
> Keep .env in sync with teammates on Slack

 [](https://coveralls.io/github/codeshifu/sync-dotenv-slack?branch=master)
While having a `.env.example` file committed to source control might help in letting teammates know that certain environmental variables are required to get up and running with a project, getting them the values can be a pain. Even worse, alerting them when any of those values (or variables) changes can be a drag.
`sync-dotenv-slack` automates the process of keeping your teammates in the loop when `.env` changes (locally) by securely notifying them on Slack.
## Features
- Automatic synchronization when env (key/value) changes
- Securely upload env contents as a file snippet to Slack channel
- Private/Public Slack channel support
- Exclude/Include specific env (values) to upload
## Table of contents
- [Prerequisites](#prerequisites)
- [Installation](#installation)
- [Setup](#setup)
- [Usage](#usage)
- [Configuration](#config)
- [Contributing](#contributing)
- [License](#license)
- [Contributors](#contributors)
## Prerequisites
- [Slack](https://slack.com/downloads)
## Installation
```sh
$ npm install -D sync-dotenv-slack
```
## Setup
- Create a Slack app (with required permissions) for your workspace. [Follow this guide](https://gist.github.com/akhilome/6268ef912895af4224b421719e68df3c)
- Add Slack app tokens to your project `.env`
```
ENVBOT_SLACK_BOT_TOKEN=xoxb-******-******-******
ENVBOT_SLACK_USER_TOKEN=xoxp-*****-*****-*****-*****
```
## Usage
To use this tool, an `envbot` object needs to be added to your project's `package.json` like so. See the [config](#config) section for more info
```js
// package.json
"scripts": {
...
"sync-dotenv-slack": "envbot"
},
"envbot": {
"channel": "general",
"include": ["*", "!SECRET"]
}
```
You can then run `$ npm run sync-dotenv-slack`
or
Automagically sync before every push using [husky](https://github.com/typicode/husky) or similar tool (**recommended**)
```diff
{
...
+ "husky": {
+ "hooks": {
+ "pre-push": "npm run sync-dotenv-slack"
+ }
+ }
}
```
## Config
You can configure the `envbot` object with the following options in package.json
#### channel
Type: `string`
Slack channel (name) to post/upload env to.
#### include
Type: `[string]`
An array of environment variable(s) to include/exclude their values when posting to Slack.
##### Using the include option
```bash
# include all env values
["*"]
# include all env values but AWS_SECRET
["!AWS_SECRET"]
# ignore all env values but DB_NAME
["!TOKEN", "DB_NAME"]
# ignore all env values but DB_NAME & DB_HOST
["DB_NAME", "DB_HOST"]
```
## Contributing
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
Please make sure to update tests as appropriate.
## License
This project is licensed under
[MIT](https://github.com/codeshifu/sync-dotenv-slack/blob/master/LICENSE)
## Contributors
- [akhilome](https://github.com/akhilome)
- [codeshifu](https://github.com/codeshifu)