使用Bun Workspaces开发NPM包遇TS声明两大问题求助
解决方案
问题1:@cosmoosjs/core 安装后提示缺少声明文件
你试过的通用方案无效,核心问题出在包本身的TS配置或发布规则上,按以下步骤排查修复:
- 检查core包的
package.json:确保types字段指向正确的声明文件路径(比如"types": "./dist/index.d.ts"),同时在files字段明确包含dist/**/*.d.ts和dist/**/*.js,避免发布时漏掉声明文件。 - 检查core包的
tsconfig.json:必须开启"declaration": true,设置"outDir": "./dist"确保编译时生成d.ts文件到指定目录;同时确认include数组覆盖所有源码文件(比如src/**/*)。 - 本地测试优化:不要用常规npm install,改用
bun link将core包链接到测试项目,或在测试项目的package.json里直接写本地路径引用(比如"@cosmoosjs/core": "file:../path/to/core"),之后重启VSCode的TS服务器(Ctrl+Shift+P → TypeScript: Restart TS Server)清除缓存。
问题2:hono-openapi-adapter 无法生成声明文件(工作区依赖解析失败)
这是monorepo场景下TS生成声明时的常见路径解析问题,按以下步骤修复:
- 前置准备:先执行core包的构建命令,确保其dist目录已生成完整的d.ts声明文件。
- 配置hono包的
tsconfig.json:在compilerOptions中添加路径映射,让TS能识别工作区依赖:"compilerOptions": { "baseUrl": "./", "paths": { "@cosmoosjs/core": ["../core/src"] } } - 检查hono包的
package.json:工作区依赖的版本必须写"workspace:*"(比如"@cosmoosjs/core": "workspace:*"),让TS识别这是本地工作区依赖而非远程npm包。 - 单独生成声明:用
bun x tsc --emitDeclarationOnly --project ./tsconfig.json命令单独生成声明文件,避免和常规构建流程冲突;若仍有报错,可临时开启"skipLibCheck": true跳过第三方库类型检查,但优先确保工作区依赖的声明文件完整。 - 校验Bun工作区配置:
bunfig.toml里的packages字段要覆盖所有工作区包(比如packages = ["packages/*"]),确保Bun能正确解析工作区路径。
内容的提问来源于stack exchange,提问作者Mathys
相关产品推荐
相关产品推荐

