簡體   English   中英

解決紗線工作空間中的 TypeScript 依賴關系

[英]Resolving TypeScript dependencies in yarn workspaces

我目前正在嘗試使用兩個工作區 @scope/project-lib 和 @scope/project-app 建立一個 React/TypeScript monorepo。 我有 @scope/project-app 的 package.json 在依賴項下導入@scope/project-lib: "*" 可以通過做

import { MyComponent } from @scope/project-lib/build/components/MyComponent

但消費者會使用

import { MyComponent } from @scope/project-lib/components/MyComponent

在我發布它之后,很明顯我也想在工作區中以這種方式使用它。

我在我的 tsconfig 中為 project-app 引用了 project-lib 路徑:

  "compilerOptions": {
    "paths": { "@scope/project-lib/*": ["../project-lib/build/*"] }
    // other config options
  }

我還將它導入到項目應用程序的 package.json 中:

  "dependencies": {
    "@scope/project-lib": "*",
    "react": "^16.12.0",
    "react-dom": "^16.12.0"
  },

奇怪的是,省略路徑的 /build/ 部分會顯示此錯誤: Module not found: Error: Can't resolve '@scope/project-lib/components/MyComponent' in 'path/to/user/folder/scope/packages/project-app/src'

我不明白為什么它在 src 中查找(或者我應該將所有內容都指向 src?但是它是如何即時構建 TS 和 JSX 的呢?)

我也有一個帶有約 50 多個包的 TypeScript + Lerna(帶 Yarn 工作區)的 monorepo。

它被配置為不使用path指令,因為 Yarn Workspaces 可以自動檢測這些並符號鏈接到根node_modules文件夾中的 package 目錄。 這樣,它將像任何第 3 方 package 和package.jsonmain / module字段一樣被讀取和使用。

以圖形方式

node_modules/
-- @scope/ -> (this is automatically generated by yarn)
---- foo -> symlink /packages/foo
---- bar -> symlink /packages/bar

packages/
-- foo/
---- dist/ -> built by TypeScript
------ index.js
---- package.json -> contains "main": "dist/index.js"
---- index.ts
---- tsconfig.json
-- bar/
---- package.json -> contains "@scope/foo" as dependency
---- index.ts -> contains "import {baz} from '@scope/foo'"
---- tsconfig.json

package.json
yarn.lock

注意。 包必須在類型檢查之前至少構建一次,以確保它們的dist文件夾存在

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM