You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Yarn Workspaces与TypeScript的共享库构建及部署疑问

解决方案:无需Webpack,仅用Yarn Workspaces + TypeScript即可实现需求

解决「修改lib需手动重新构建」的问题

  • 在/lib/package.json中添加监听编译脚本:
    "scripts": {
      "dev": "tsc --watch"
    }
    
  • 在/api/package.json中用并发工具(如concurrently)同时启动lib的监听编译和api的开发服务:
    "scripts": {
      "dev": "concurrently \"yarn workspace @myproject/lib dev\" \"nodemon --watch src --watch ../lib/src dist/index.js\""
    }
    
    这样修改lib源码时,TypeScript会自动增量编译,api服务也会自动重启。

解决「api编译后依赖本地lib路径,部署Heroku失败」的问题

核心思路是让api直接编译lib的源码,而非引用lib的构建产物,最终将lib代码打包进/api/build:

  1. 修改/api/tsconfig.json,配置路径映射与文件包含:
    {
      "compilerOptions": {
        "baseUrl": ".",
        "paths": {
          "@myproject/lib": ["../lib/src"] // 直接指向lib源码目录
        },
        "outDir": "./build",
        // 其他TS配置...
      },
      "include": [
        "src/**/*",
        "../lib/src/**/*" // 包含lib的源码文件
      ]
    }
    
  2. 确保/lib/package.json中不要设置main或types指向build目录(或者让api的tsconfig路径映射覆盖这个配置)。
  3. 编译api时,直接在/api目录执行tsc,TypeScript会把lib的源码和api代码一起编译到/api/build,生成的文件不再依赖本地lib路径。

为什么Expo能自动实现?

Expo使用的Metro打包器默认支持Yarn Workspaces的源码依赖,会自动将工作区中的源码打包进客户端bundle,无需额外配置。

是否需要Webpack?

不需要。仅通过上述Yarn Workspaces和TypeScript的配置,就能满足你的需求。如果后续有更复杂的打包需求(如代码分割、资源压缩等),再考虑引入Webpack即可。

内容的提问来源于stack exchange,提问作者samala7800

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 08:50:26