@krauters/environment
v0.3.0
Published
A TypeScript utility library that provides a fluent, type-safe API for defining, transforming, and managing environment variable configurations in applications.
Downloads
552
Maintainers
Readme
@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
.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.
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.