如何在NX工作区添加供NestJS与Angular共享的常量变量库?
在NX工作区添加共享常量/变量库的步骤
1. 创建通用共享库
使用NX CLI生成纯TypeScript共享库,确保同时兼容Angular客户端与NestJS API:
nx generate @nx/js:library shared-constants --directory=libs/shared-constants --importPath=@your-workspace/shared-constants
--directory:指定库在libs目录下的存放路径--importPath:设置统一导入别名(替换your-workspace为你的NX工作区名称,简化后续项目引用)
2. 组织库的内容结构
在libs/shared-constants/src/lib目录下创建对应文件,规整共享内容:
- 新建
constants.ts存放固定常量:
export const API_BASE_PATH = '/api/v1'; export const MAX_ITEM_LIMIT = 50; export const STORAGE_KEY_PREFIX = 'app_';
- 新建
enums.ts存放枚举类型:
export enum UserRole { Admin = 'ADMIN', Regular = 'REGULAR', Guest = 'GUEST' }
- 在
index.ts中统一导出所有内容,简化外部引用:
export * from './constants'; export * from './enums';
3. 在项目中引入使用
- Angular客户端:在组件、服务或模块中直接导入使用
import { API_BASE_PATH, UserRole } from '@your-workspace/shared-constants'; @Component({ /* ... */ }) export class UserComponent { adminRole = UserRole.Admin; apiUrl = `${window.location.origin}${API_BASE_PATH}`; }
- NestJS API:在控制器、服务中导入使用
import { MAX_ITEM_LIMIT, UserRole } from '@your-workspace/shared-constants'; @Controller('users') export class UsersController { constructor(private readonly usersService: UsersService) {} @Get() getUsers(@Query('limit') limit?: number) { const queryLimit = limit ? Math.min(limit, MAX_ITEM_LIMIT) : MAX_ITEM_LIMIT; return this.usersService.getUsers(queryLimit); } }
4. 验证库的可用性
先编译共享库确保无语法错误:
nx build shared-constants
再分别启动客户端和API项目验证功能:
nx serve your-angular-app nx serve your-nest-api
内容的提问来源于stack exchange,提问作者Lorraine Ram-El
相关产品推荐
相关产品推荐

