Skip to content

A TypeScript utility library that provides a fluent, type-safe API for defining, transforming, and managing environment variable configurations in applications.

License

Notifications You must be signed in to change notification settings

krauters/environment

Repository files navigation

Code Size Commits per Month Contributors Forks GitHub Stars Install Size GitHub Issues Last Commit License LinkedIn npm version Open PRs Repo Size Version visitors

@krauters/environment

Typesafe control over environment variables in TypeScript with powerful configurations for required and optional variables, custom transformations, and type safety. Inspired by @hexlabs/env-vars-ts.

Get Started

Installation

Install the package via npm:

npm install environment-builder-ts

Usage

Configure environment variables with custom defaults and transformations, then retrieve them from process.env.

// Example setup with defaults and transformations
const config = EnvironmentBuilder
  .create('API_URL', 'TIMEOUT') // Define required variables
  .withPrefix('MYAPP_') // Use a prefix for loading environment variables (e.g., MYAPP_API_URL)
  .optionals('LOG_LEVEL') // Define optional variables
  .defaults({ TIMEOUT: 3000 }) // Provide defaults for the required variables
  .transform(value => parseInt(value), 'TIMEOUT') // Custom transformation to number
  .environment() // Retrieve environment variables

console.log(config.API_URL) // Outputs API_URL value
console.log(config.TIMEOUT) // Outputs timeout as a number, e.g., 3000
console.log(config.LOG_LEVEL) // Optional, may be undefined if not set

Key Features

  • Type Safety: Explicit typing for environment variables, catching issues at compile time.
  • Custom Transformations: Define custom transformations (e.g., parse strings to numbers, arrays).
  • Built-In Validation: Required variables are validated, and an error is thrown if any are missing.
  • Configurable: Easily designate required/optional variables and specify defaults only where needed.
  • Configurable Prefixes: Create a prefix for namespacing environment variables.

DotEnv

This package supports .env configuration.

Husky Git Hooks

Husky is integrated to streamline commit processes by automating checks before commits are finalized. This setup enforces code quality standards across your team and ensures that bundled assets remain consistent.

Custom Pre-Commit Hook

This project uses a custom pre-commit hook that triggers npm run bundle before each commit. This ensures that any code related to bundling is always updated before it’s committed, especially useful for TypeScript applications in CI/CD. Husky automates this check to enforce consistency across commits.

Acknowledgments

This project draws inspiration from @hexlabs/env-vars-ts, which laid the groundwork for a simple and effective approach to managing environment variables in TypeScript. Special thanks to them for their work.

Contributing

The goal of this project is to continually evolve and improve its core features, making it more efficient and easier to use. Development happens openly here on GitHub, and we’re thankful to the community for contributing bug fixes, enhancements, and fresh ideas. Whether you're fixing a small bug or suggesting a major improvement, your input is invaluable.

License

This project is licensed under the ISC License. Please see the LICENSE file for more details.

🥂 Thanks Contributors

Thanks for spending time on this project.

🔗 Other packages in the family

We’ve got more than just this one in our toolbox – check out the rest of our @krauters collection on npm/@krauters. It’s the whole kit and caboodle you didn’t know you needed.

About

A TypeScript utility library that provides a fluent, type-safe API for defining, transforming, and managing environment variable configurations in applications.

Resources

License

Stars

Watchers

Forks

Packages

No packages published