TSConfig Path Aliases Module Resolution
Configure TypeScript path aliases for clean internal imports, wire runtime resolvers for each target, and ban deep relative chains.
Code
// tsconfig.json 局部:
{
"compilerOptions": {
"baseUrl": "src",
"paths": {
"@/features/*": ["features/*"],
"@/shared/*": ["shared/*"],
"@/config": ["config/index.ts"]
}
}
}
// src/config/index.ts —— 显式环境分层
export const config = {
port: Number(process.env.PORT ?? 3000),
logLevel: process.env.LOG_LEVEL ?? 'info',
} as const;
// src/features/orders/service.ts —— 别名导入取代 ../../../
import { config } from '@/config';
import { logger } from '@/shared/logger';
export async function listOrders(page: number) {
logger.debug('listing orders page', page, 'port', config.port);
return [{ id: 1, total: 42 }];
}
// 打包器(如 esbuild)注册解析器:
// esbuild src/index.ts --bundle // --alias:@/features=./src/features // --alias:@/shared=./src/shared // --alias:@/config=./src/config/index.ts
const orders = await listOrders(1);
console.log('orders:', orders.length);Report a problem with this exampleOpens a pre-filled issue on GitHub.