hoangsonww/EnvGuard-Env-Validator

GitHub: hoangsonww/EnvGuard-Env-Validator

EnvGuard 是一个 NPM 包,用于验证 .env 文件中的环境变量是否符合预定义模式,防止配置错误和不安全默认值。

Stars: 10 | Forks: 10

# 🛡️ EnvGuard – 验证并保护您的环境变量 [![NPM版本](https://img.shields.io/npm/v/env-guard.svg?style=flat&logo=npm)](https://www.npmjs.com/package/env-guard) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg?style=flat&logo=opensource)](LICENSE) [![Node.js](https://img.shields.io/badge/Node-%3E%3D14-brightgreen.svg?style=flat&logo=node.js)](https://nodejs.org/) [![TypeScript](https://img.shields.io/badge/TypeScript-5.0%2B-blue.svg?style=flat&logo=typescript)](https://www.typescriptlang.org/) [![Jest](https://img.shields.io/badge/Jest-27.0%2B-cyan.svg?style=flat&logo=jest)](https://jestjs.io/) **EnvGuard** 是一个 NPM 包,它根据定义好的模式验证您的环境变量,并强制要求与您的 `.env.example` 文件保持一致。在团队协作或部署到生产环境时,保护您的应用免受配置错误和不安全默认值的影响。 目前可在 NPM 上获取:[https://www.npmjs.com/package/@hoangsonw/env-guard](https://www.npmjs.com/package/@hoangsonw/env-guard) ## 目录 - [功能](#features) - [安装说明](#installation) - [用法](#usage) - [基本用法](#basic-usage) - [高级用法](#advanced-usage) - [API 参考](#api-reference) - [测试](#testing) - [构建与发布](#building--publishing) - [贡献指南](#contributing) - [许可证](#license) ## 功能 - **模式验证:** 定义必需的环境变量和不安全的默认值。 - **.env 强制执行:** 将您实际的 `.env` 文件与提供的 `.env.example` 文件进行比较。 - **可配置行为:** 选择是发出警告还是抛出错误,并控制键匹配方式。 - **TypeScript 支持:** 完全使用 TypeScript 编写,具有完整的类型定义。 - **跨平台:** 可在 Node.js 中工作,并能无缝集成到您的部署工作流中。 ## 安装说明 ### 前置条件 - Node.js v14 或更高版本 - npm v6 或更高版本 ### 通过 NPM 安装 ``` npm install @hoangsonw/env-guard ``` ### 通过 Yarn 安装 ``` yarn add @hoangsonw/env-guard ``` ## 用法 EnvGuard 基于模式验证您的环境变量。它从您的 `.env` 文件加载变量,并将其与参考的 `.env.example` 进行比较。 ### 基本用法 为您的环境变量创建模式并进行验证: ``` import { validateEnv } from "@hoangsonw/env-guard"; const schema = { DB_HOST: { required: true, insecureValues: ["localhost", "127.0.0.1"] }, DB_PASSWORD: { required: true, insecureValues: ["12345", "password"] }, DB_USER: { required: false }, }; validateEnv({ schema, envFilePath: "./.env", // Defaults to "./.env" exampleFilePath: "./.env.example", // Defaults to "./.env.example" allowMissingExampleKeys: false, // Warn if keys mismatch throwOnError: false, // Only warn; set to true to throw errors }); ``` ### 高级用法 您可以通过更改选项来自定义 EnvGuard 的行为: - **`allowMissingExampleKeys`**:当设置为 `false` 时,如果您的 `.env` 中存在额外的键或缺少相对于 `.env.example` 的键,它会发出警告。 - **`throwOnError`**:当设置为 `true` 时,函数将在验证失败时抛出错误,而不是仅记录警告。 示例: ``` import { validateEnv } from "@hoangsonw/env-guard"; const schema = { API_KEY: { required: true }, DB_HOST: { required: true, insecureValues: ["localhost"] }, DB_PASSWORD: { required: true, insecureValues: ["password", "12345"] }, }; try { validateEnv({ schema, envFilePath: "./config/.env", exampleFilePath: "./config/.env.example", allowMissingExampleKeys: false, throwOnError: true, }); console.log("Environment variables validation passed!"); } catch (error) { console.error("Environment validation failed:", error); process.exit(1); } ``` ## API 参考 ### `validateEnv(options: EnvGuardOptions): void` -> `验证环境变量(options: EnvGuardOptions): void` **参数:** - **`schema: EnvSchema`** 一个对象,定义每个环境变量的要求。 _示例:_ { DB_HOST: { required: true, insecureValues: ["localhost"] }, API_KEY: { required: true } } - **`envFilePath?: string`** 您的 `.env` 文件的路径。默认值为 `"./.env"`。 - **`exampleFilePath?: string`** 您的 `.env.example` 文件的路径。默认值为 `"./.env.example"`。 - **`allowMissingExampleKeys?: boolean`** 如果设置为 `false`,EnvGuard 将对 `.env` 和 `.env.example` 之间多余的键或缺失的键发出警告。 - **`throwOnError?: boolean`** 如果为 `true`,验证失败时函数将抛出错误;否则,它将只记录警告。 **返回值:** 无;它执行验证,并根据配置记录警告/错误。 ## 测试 EnvGuard 包含一个 Jest 测试套件。运行测试: 1. **安装依赖项:** npm install 2. **运行测试:** npm test `__tests__` 目录中的测试文件演示了 EnvGuard 如何验证环境变量以及将 `.env` 与 `.env.example` 进行比较。 ## 演示脚本 运行 `__tests__` 目录中的演示脚本以查看 EnvGuard 的实际效果: 1. **运行演示脚本(不带 `basedir` 选项):** npm run demoNoBasedir 2. **运行演示脚本(带 `basedir` 选项):** npm run demoWithBasedir 演示脚本将展示 EnvGuard 如何验证环境变量以及将 `.env` 与 `.env.example` 进行比较。请查看控制台输出以获取验证结果。 ## 构建与发布 ### 构建 编译 TypeScript 源代码: ``` npm run build ``` ### 发布 1. **登录 npm:** npm login 2. **发布包:** npm publish --access public ## 许可证 本项目根据 [MIT 许可证](LICENSE) 授权。 ## 最后说明 EnvGuard 确保您的环境变量配置正确且安全,减少团队协作和生产部署中的配置错误。通过模式验证和 `.env.example` 强制执行,它有助于维护项目的一致性和安全性。 祝您守护愉快!🛡️
标签:.env文件, GNU通用公共许可证, MITM代理, Node.js, NPM包, OSV-Scalibr, SMB, SOC Prime, TypeScript, 团队协作, 安全, 安全插件, 开发工具, 开源框架, 持续集成, 数据管道, 模式验证, 环境变量, 生产环境, 自定义脚本, 超时处理, 软件工程, 部署安全, 配置验证, 错误配置检测