跨多项目共享TypeScript类型的问题求助
解决方案
问题1:修复VS Code自动导入提示
要让VS Code能自动识别并提示类型导入,需要做以下配置:
- 给类型仓库添加package.json
在libs/test目录下创建package.json,定义包名、类型入口等信息,让TypeScript将其识别为合法模块:
{ "name": "@my-app/types", "version": "1.0.0", "main": "./dist/index.js", "types": "./dist/index.d.ts", "private": true }
- 配置前端tsconfig的路径别名
修改前端目录下的tsconfig.json,在compilerOptions中添加paths配置,把类型仓库路径映射为短别名,方便导入和VS Code识别:
{ "compilerOptions": { // ... 原有配置项 "paths": { "@my-app/types": ["../libs/test/src"], "@my-app/types/*": ["../libs/test/src/*"] } }, // ... 原有配置项 }
- 切换VS Code到工作区TypeScript版本
打开VS Code命令面板(Ctrl+Shift+P),输入TypeScript: Select TypeScript Version,选择Use Workspace Version,避免全局版本导致路径识别异常。
配置完成后,你可以用import { Test } from '@my-app/types/test-interface'导入类型,VS Code会自动提示导入路径。
问题2:前端启动时自动构建类型仓库
通过npm脚本的预执行钩子或多命令工具,实现启动前端前自动构建类型仓库,甚至实时监听类型变化:
- 给类型仓库添加构建脚本
修改libs/test/package.json,添加build和watch脚本(利用tsconfig的composite: true实现增量构建):
{ "scripts": { "build": "tsc --build", "watch": "tsc --build --watch" } }
- 配置前端npm脚本
- 若只需启动前一次性构建:修改前端目录下的
package.json,添加prestart脚本(npm会自动在start前执行prestart):
{ "scripts": { "prestart": "cd ../libs/test && npm run build", "start": "react-scripts start" } }
- 若需实时监听类型文件变化并自动重构:先安装
concurrently工具(用于同时运行多个命令):
npm install concurrently --save-dev
再修改脚本:
{ "scripts": { "dev": "concurrently \"cd ../libs/test && npm run watch\" \"react-scripts start\"", "start": "npm run dev" } }
启动前端时,会同时监听类型仓库的文件变化,自动重新构建,无需手动操作。
内容的提问来源于stack exchange,提问作者Avi9022
相关产品推荐
相关产品推荐

