TypeScript 应用配置:工具与方法概览
在现代 TypeScript 开发中,正确组织应用配置是一项关键任务。代码的安全性、可移植性和可测试性都取决于您如何管理设置。本文将介绍用于 TypeScript 应用配置的主要库和工具、它们的特点以及使用示例。
为什么正确的配置很重要?
配置包括:
- 环境变量(API 密钥、数据库 URL)
- 环境参数(development、staging、production)
- 框架和库的设置
- 机密数据(密码、令牌)
使用 TypeScript 带来了强类型化的优势,有助于在编译阶段避免错误。让我们来看看用于配置的最佳工具。
1. dotenv — 环境变量的基础工具
dotenv 库将 .env 文件中的变量加载到 process.env 中。在 TypeScript 中,它通常与附加类型一起使用。
安装
npm install dotenvnpm install -D @types/node # 用于 process.env 的类型使用示例
// .envPORT=3000DATABASE_URL=mongodb://localhost:27017/mydbSECRET_KEY=mysecretkey
// config.tsimport dotenv from 'dotenv';dotenv.config();
interface AppConfig { port: number; databaseUrl: string; secretKey: string;}
export const config: AppConfig = { port: parseInt(process.env.PORT || '3000', 10), databaseUrl: process.env.DATABASE_URL || '', secretKey: process.env.SECRET_KEY || '',};优点:简单、轻量、事实标准。
缺点:无验证,所有值均为字符串。
2. config — Node.js 的分层配置
config 库允许您按环境组织配置文件(default.json、production.json、development.json)。
安装
npm install confignpm install -D @types/config结构示例
// config/default.json{ "server": { "port": 3000 }, "db": { "host": "localhost", "port": 27017 }}
// config/production.json{ "server": { "port": 8080 }, "db": { "host": "production-db.example.com" }}
// app.tsimport config from 'config';
interface ServerConfig { port: number;}
const serverConfig = config.get<ServerConfig>('server');console.log(serverConfig.port); // 开发环境为 3000,生产环境为 8080优点:分层结构、自动环境选择、支持 TypeScript。
缺点:依赖文件系统,不适用于 serverless。
3. convict — 带模式和验证的配置
convict 允许您定义严格的配置模式,包含类型、默认值和验证。
安装
npm install convictnpm install -D @types/convict示例
import convict from 'convict';
const config = convict({ env: { doc: 'Application environment', format: ['production', 'development', 'test'], default: 'development', env: 'NODE_ENV' }, port: { doc: 'Port to bind', format: 'port', default: 3000, env: 'PORT' }, db: { host: { doc: 'Database host', format: String, default: 'localhost', env: 'DB_HOST' }, port: { doc: 'Database port', format: 'port', default: 5432, env: 'DB_PORT' } }