203 lines
6.0 KiB
Markdown
203 lines
6.0 KiB
Markdown
# @coze-arch/bot-env
|
|
|
|
> A TypeScript-based environment variable management system for the bot-studio monorepo, providing compile-time type safety and runtime environment configuration.
|
|
|
|
## Features
|
|
|
|
- 🔧 **Compile-time Environment Variables**: Access to environment variables with full TypeScript support
|
|
- 🏗️ **Multi-environment Support**: Handles different deployment environments (BOE, production, development)
|
|
- 🌍 **Multi-region Configuration**: Supports CN, SG, and VA regions with region-specific configurations
|
|
- 🎯 **Feature Flags**: Built-in feature toggle system for conditional functionality
|
|
- 📝 **Auto-generated Types**: Automatically generates TypeScript declarations from environment configuration
|
|
- 🔒 **Type Safety**: Full TypeScript support with strict typing for all environment variables
|
|
- ⚡ **Runtime Environment Access**: Provides runtime environment detection and configuration
|
|
|
|
## Get Started
|
|
|
|
### Installation
|
|
|
|
```bash
|
|
# Install the package
|
|
rush add -p @coze-arch/bot-env
|
|
|
|
# Update dependencies
|
|
rush update
|
|
```
|
|
|
|
### Basic Usage
|
|
|
|
```typescript
|
|
// Import compile-time environment variables
|
|
import { GLOBAL_ENVS } from '@coze-arch/bot-env';
|
|
|
|
// Access environment variables with full type safety
|
|
console.log(GLOBAL_ENVS.REGION); // 'cn' | 'sg' | 'va'
|
|
console.log(GLOBAL_ENVS.IS_PROD); // boolean
|
|
console.log(GLOBAL_ENVS.BUILD_TYPE); // 'local' | 'online' | 'offline' | 'test'
|
|
|
|
// Import runtime environment utilities
|
|
import { runtimeEnv } from '@coze-arch/bot-env/runtime';
|
|
|
|
// Access runtime environment information
|
|
console.log(runtimeEnv.isPPE); // boolean
|
|
```
|
|
|
|
### TypeScript Declarations
|
|
|
|
```typescript
|
|
// Import TypeScript declarations
|
|
/// <reference types="@coze-arch/bot-env/typings" />
|
|
|
|
// All environment variables are available as global constants
|
|
declare const REGION: 'cn' | 'sg' | 'va';
|
|
declare const IS_PROD: boolean;
|
|
declare const FEATURE_ENABLE_SSO: boolean;
|
|
// ... and many more
|
|
```
|
|
|
|
## API Reference
|
|
|
|
### GLOBAL_ENVS
|
|
|
|
The main export containing all environment variables organized by category:
|
|
|
|
#### Base Environment Variables
|
|
- `BUILD_TYPE`: Build environment type (`'local' | 'online' | 'offline' | 'test'`)
|
|
- `CUSTOM_VERSION`: Version type (`'inhouse' | 'release'`)
|
|
- `REGION`: Deployment region (`'cn' | 'sg' | 'va'`)
|
|
- `NODE_ENV`: Node environment (`'production' | 'development' | 'test'`)
|
|
- `IS_PROD`: Production environment flag
|
|
- `IS_BOE`: BOE environment flag
|
|
- `IS_OVERSEA`: Overseas deployment flag
|
|
- `IS_RELEASE_VERSION`: Release version flag
|
|
|
|
#### Feature Flags
|
|
- `FEATURE_ENABLE_SSO`: Single Sign-On feature
|
|
- `FEATURE_ENABLE_APP_GUIDE`: Application guide feature
|
|
- `FEATURE_ENABLE_MSG_DEBUG`: Message debugging feature
|
|
- `FEATURE_AWEME_LOGIN`: Aweme login integration
|
|
- `FEATURE_GOOGLE_LOGIN`: Google login integration
|
|
- And many more feature toggles...
|
|
|
|
#### Configuration Variables
|
|
- `CDN`: Content delivery network URL
|
|
- `UPLOAD_CDN`: Upload CDN configuration
|
|
- `COZE_DOMAIN`: Coze service domain
|
|
- `APP_ID`: Application identifier
|
|
- `APP_KEY`: Application key
|
|
- Various service-specific configurations
|
|
|
|
### Runtime Environment
|
|
|
|
```typescript
|
|
import { runtimeEnv } from '@coze-arch/bot-env/runtime';
|
|
|
|
// Runtime environment detection
|
|
runtimeEnv.isPPE // boolean - Production-like environment detection
|
|
```
|
|
|
|
### Build Scripts
|
|
|
|
```typescript
|
|
import { build } from '@coze-arch/bot-env/build';
|
|
|
|
// Generate TypeScript declarations from environment configuration
|
|
build();
|
|
```
|
|
|
|
## Development
|
|
|
|
### Project Structure
|
|
|
|
```
|
|
src/
|
|
├── index.ts # Main exports
|
|
├── runtime/ # Runtime environment utilities
|
|
├── typings.d.ts # Auto-generated TypeScript declarations
|
|
└── global.d.ts # Global type definitions
|
|
|
|
scripts/
|
|
├── build.ts # Build script exports
|
|
└── index.ts # Build script runner
|
|
```
|
|
|
|
### Environment Configuration
|
|
|
|
This package acts as a wrapper around `@coze-studio/bot-env-adapter`, which provides the actual environment configuration logic. The adapter package includes:
|
|
|
|
- **Base configuration**: Core environment variables like region, build type, and deployment flags
|
|
- **Feature flags**: Toggle switches for various application features
|
|
- **Business configs**: Service-specific configuration values
|
|
- **Configuration helpers**: Utilities for environment-specific value extraction
|
|
|
|
### Auto-generated Types
|
|
|
|
The package automatically generates TypeScript declarations based on the environment configuration. The build process:
|
|
|
|
1. Analyzes the `envs` object in the source code
|
|
2. Extracts type information for each environment variable
|
|
3. Generates corresponding TypeScript declarations
|
|
4. Updates the `typings.d.ts` file with the latest types
|
|
|
|
### Environment-specific Configuration
|
|
|
|
Use the `extractEnvValue` utility for environment-specific configurations:
|
|
|
|
```typescript
|
|
const API_ENDPOINT = extractEnvValue<string>({
|
|
cn: {
|
|
boe: 'https://boe.api.example.com',
|
|
inhouse: 'https://inhouse.api.example.com',
|
|
release: 'https://api.example.com'
|
|
},
|
|
sg: {
|
|
inhouse: 'https://sg-inhouse.api.example.com',
|
|
release: 'https://sg.api.example.com'
|
|
},
|
|
va: {
|
|
release: 'https://va.api.example.com'
|
|
}
|
|
});
|
|
```
|
|
|
|
### Running Tests
|
|
|
|
```bash
|
|
# Run tests
|
|
rush test -t @coze-arch/bot-env
|
|
|
|
# Run tests with coverage
|
|
rush test:cov -t @coze-arch/bot-env
|
|
```
|
|
|
|
### Building
|
|
|
|
```bash
|
|
# Build the package
|
|
rush build -t @coze-arch/bot-env
|
|
|
|
# Generate type definitions
|
|
rush build:types -t @coze-arch/bot-env
|
|
```
|
|
|
|
## Dependencies
|
|
|
|
### Runtime Dependencies
|
|
- `@coze-studio/bot-env-adapter`: Core environment configuration adapter
|
|
|
|
### Development Dependencies
|
|
- `@coze-arch/eslint-config`: ESLint configuration
|
|
- `@coze-arch/ts-config`: TypeScript configuration
|
|
- `@coze-arch/vitest-config`: Vitest testing configuration
|
|
- `ts-morph`: TypeScript AST manipulation for type generation
|
|
- `sucrase`: Fast TypeScript/JSX compiler
|
|
- `vitest`: Testing framework
|
|
|
|
## License
|
|
|
|
Apache-2.0 License - see package.json for details.
|
|
|
|
---
|
|
|
|
For more information about environment configuration patterns and best practices, refer to the [bot-studio monorepo documentation](../../docs/).
|