0.2.3 • Published 11 months ago

@yaml-js/envyaml v0.2.3

Weekly downloads
-
License
MIT
Repository
github
Last release
11 months ago

YAML-JS EnvYaml

NPM License GitHub Actions Workflow Status Sonar Quality Gate Sonar Tech Debt Sonar Coverage Known Vulnerabilities GitHub Issues or Pull Requests

YAML-JS EnvYaml is a modern replacement for traditional .env files, using YAML syntax. This tool provides a seamless way to manage environment configurations with enhanced readability and structure, making it ideal for modern JavaScript and TypeScript projects.

Features

  • Complex Nested Configurations: Supports deeply nested structures, allowing for more organized and hierarchical configuration files.
  • Easy Integration: Simple and straightforward integration with existing JavaScript/TypeScript projects.
  • Environment Variables & Overrides: Built-in support for using environment variables and overriding configurations based on the environment (e.g., development, production).

Installation

To install YAML-JS EnvYaml in your project, run:

npm install @yaml-js/envyaml

or with yarn:

yarn add @yaml-js/envyaml

Usage

Basic Example

Create a .env.yaml file:

settings:
  app:
    name: MyApp
    version: 1.0.0
    port: 3000
  database:
    host: localhost
    port: 5432

Also create coorespondent files for your developement environment, and name it .env.dev.yaml

settings:
  app:
    port: 3001
  database:
    host: https://dev.db.org

and one other for the production environment, and name it .env.prod.yaml

settings:
  app:
    port: 443
  database:
    host: https://prod.db.org

Load and use the configuration in your JavaScript/TypeScript project:

import config from '@yaml-js/envyaml';

config('.env.yaml', process.env.NODE_ENV || 'development');

console.log(`App running on port: ${process.env.app.port}`);
console.log(`Database host: ${process.env.database.host}`);

Environment Variable Overrides

You can override specific values using environment variables:

settings:
  database:
    host: ${DB_HOST}

This allows you to inject environment-specific values without changing the configuration files.

API

config(filePath: string = '.env.yaml', environment: string = process.env.NODE_ENV): Config

  • filePath: The path to the YAML configuration file.
  • environment: The environment to load (e.g., development, production).

Initializes process.env with the configuration for the specified environment.

Example

import config from '@yaml-js/envyaml';
config();

Advantages over .env Files

  • Readability: YAML’s structured format is easier to read and maintain than flat .env files.
  • Hierarchy: Organize your configurations into nested structures.
  • Flexibility: Supports multiple environments in a single file.

Contributing

Contributions are welcome! Please follow the steps below:

1.	Fork the repository.
2.	Create a new branch (git checkout -b feature/my-feature).
3.	Make your changes and commit them (git commit -m 'Add my feature').
4.	Push to the branch (git push origin feature/my-feature).
5.	Open a Pull Request.

License

This project is licensed under the MIT License. See the LICENSE file for details.

0.2.1

11 months ago

0.2.0

11 months ago

0.2.3

11 months ago

0.2.2

11 months ago

0.1.6

11 months ago

0.1.5

11 months ago

0.1.4

11 months ago

0.1.3

11 months ago

0.1.2

11 months ago

0.1.1

11 months ago

0.1.0

11 months ago