[英]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.json
的main
/ 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.