https://github.com/zentered/envsync
Synchronize .env files with Google Cloud Secrets Manager
https://github.com/zentered/envsync
Last synced: 11 months ago
JSON representation
Synchronize .env files with Google Cloud Secrets Manager
- Host: GitHub
- URL: https://github.com/zentered/envsync
- Owner: zentered
- License: mit
- Created: 2022-11-25T11:26:06.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2025-06-09T14:58:31.000Z (about 1 year ago)
- Last Synced: 2025-07-10T11:13:20.870Z (12 months ago)
- Language: JavaScript
- Homepage:
- Size: 341 KB
- Stars: 1
- Watchers: 1
- Forks: 1
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# EnvSync
`EnvSync` is an attempt to make it easier for developers to initialize an
environment or update environment variables with on a single source of truth.
`EnvSync` currently works with Google Cloud Platform (Secrets Manager). It reads
the environment configuration from an `.env.example` file that is commonly used
to help developers get started with a new project, fetches the values from the
Google Cloud Platform (Secrets Manager) and writes them to a `.env` file.
For example, if you have the following `.env.example` file:
```bash
GCP_PROJECT=myproject-dev
API_URL=http://localhost:3000
AUTH0_CLIENT_SECRET=envsync//auth0-api-client-secret/latest
```
Will write the following `.env` file:
```bash
GCP_PROJECT=myproject-dev
API_URL=http://localhost:3000
AUTH0_CLIENT_SECRET=secret-value-from-gcp-project
```
**Important**: The first variable in the example should be `GCP_PROJECT` as
we're using that to determine the right project. A `keyfile.json`
([Create and manage service account keys](https://cloud.google.com/iam/docs/creating-managing-service-account-keys))
is required in the same folder as the `.env.example` file.
### Installation & Usage
```bash
npm install @zentered/envsync
# pnpm i @zentered/envsync
# yarn add @zentered/envsync
```
#### Two things are required to use `EnvSync`:
1. An `.env.example` file (use `envsync//[variable]` to indicate a variable that
should be fetched from Secrets Manager). The first variable should be
`GCP_PROJECT` with the valid project id
2. a `keyfile.json` from a Google Cloud Platform service account with Secrets
Manager API enabled, and permission to read secrets
`EnvSync` is a CLI tool. You can run it with `npx envsync` or add it as a
`script` in `package.json`:
```json
{
"scripts": {
"envsync": "envsync"
}
}
```
#### Optional: Specifying the `.env` file:
Note: this is an anti-pattern and should be avoided. Environment variables
belong in the environment, not in the codebase. See
[12 factor app](https://12factor.net/config).
- If you have multiple `.env` files, you can provide the filename as an
argument. The `.env` example file must end in `.example`
- Usage: `npx envsync .env.development.example` will create `.env.development`
## Contributing
See [CONTRIBUTING](CONTRIBUTING.md).
## License
See [LICENSE](LICENSE).