TypeScript项目提取子文件夹至根目录后的引用与配置问题
Yarn/Node/TypeScript项目重构问题解答
一、更新module_a对sdk引用的最佳方式
有三种实用方案,可根据项目规模和后续规划选择:
- 直接修改相对路径:如果项目结构简单,直接把
module_a文件里原来的import { XXX } from './sdk/xxx'改成import { XXX } from '../sdk/xxx',操作简单,无需额外配置。 - 配置TypeScript路径别名:如果项目复杂或后续可能调整结构,在根目录的
tsconfig.json里添加baseUrl和paths配置,示例:
之后在{ "compilerOptions": { "baseUrl": ".", "paths": { "@sdk/*": ["sdk/*"] } }, "include": ["module_a/**/*", "sdk/**/*"] }module_a里就能用import { XXX } from '@sdk/xxx'引用sdk里的类,路径更简洁,也避免后续结构变动时反复修改路径。 - 用Yarn工作区管理本地包:如果计划后续把
sdk独立发布,可将其设为Yarn工作区的子包。在根目录package.json添加:
然后在{ "private": true, "workspaces": ["module_a", "sdk"] }sdk目录创建package.json定义包信息,在module_a的package.json里添加sdk依赖(版本写workspace:*),之后就能用import { XXX } from 'sdk/xxx'引用,和引用第三方包的体验一致。
二、是否需要为sdk创建独立配置文件
分两种情况处理:
- 仅作为项目内部模块:不需要单独的
tsconfig.json和package.json,复用根目录的配置即可。只要确保根目录tsconfig.json的include字段包含sdk目录(比如"include": ["module_a/**/*", "sdk/**/*"])。 - 计划独立发布或作为独立包维护:建议创建独立的配置文件:
package.json:定义包名、版本、入口文件(main/module)、类型声明入口(types)等字段。tsconfig.json:可以继承根目录的配置("extends": "../tsconfig.json"),再根据sdk的编译需求调整专属选项(比如输出目录、目标版本等)。
内容的提问来源于stack exchange,提问作者irobson
相关产品推荐
相关产品推荐

