通過創建具有循環依賴關係的 monorepo 導致錯誤 (Causing an error by creating a monorepo with circular dependencies)


問題描述

通過創建具有循環依賴關係的 monorepo 導致錯誤 (Causing an error by creating a monorepo with circular dependencies)

我對 monrepo/yarn workspaces/lerna 比較陌生。我正在研究一個 React / TypeScript monorepo,我在其中清理了循環依賴項。我只是認為它們不應該存在於乾淨的代碼架構中。我知道當您想要重構應用程序的某些部分、研究應用程序的架構或只是想在另一個項目中引用其中一個存儲庫時,它們會讓生活更輕鬆。

但是有人可以提供一個很好的例子來說明哪裡循環依賴實際上導致 TypeScript/React 項目中的錯誤?可能與以循環方式或其他方式導入類型有關?

非常感謝!

Achim


參考解法

方法 1:

We had several circular dependencies in our project, which were related to the differences in bundlers (babel for react & metro for react‑native).

But can someone provide a good example of where a circular dependency is actually causing an error in a TypeScript/React project?

Sure, consider the following:

  • Module A is imported in module B
  • Module B is imported in module C
  • Module C imports module A

This way the modules dependencies can not be resolved, at least not correctly.

I just think they shouldn't exist in a clean code architecture.

That is for sure true :) Keep it up!

(by Achimt1gor)

參考文件

  1. Causing an error by creating a monorepo with circular dependencies (CC BY‑SA 2.5/3.0/4.0)

#yarn-workspaces #lerna #monorepo #TypeScript #circular-dependency






相關問題

如何使用帶有打字稿和輸出文件夾的紗線工作區? (How to use yarn workspaces with typescript and out folders?)

如何在 Monorepo 中運行多個開發包 (How to run multiple packages in development inside a Monorepo)

帶有許多 npm 腳本的 Monorepo (Monorepo with Many npm-scripts)

使用紗線工作區導出枚舉時出現意外的令牌錯誤 (Unexpected token error exporting enums using yarn workspaces)

如何在 Expo 應用示例嵌套文件夾中熱重載開發包? (How to hot reload a development package in an Expo app example nested folder?)

將 monorepo 包放在包文件夾下是一種約定,還是 yarn 工作區期望這樣? (Is putting monorepo packages under a package folder a convention, or do yarn workspace expect that?)

通過創建具有循環依賴關係的 monorepo 導致錯誤 (Causing an error by creating a monorepo with circular dependencies)

Monorepo – Yarn 工作區 Typescript Node.JS 項目 – 運行 nodemon 時找不到模塊 (Monorepo – Yarn workspaces Typescript Node.JS project – cannot find module when running nodemon)

紗線工作區為每個運行 shell 命令 (Yarn workspaces run shell command for each)

紗線工作區共享包未在 create-react-app 中加載 (yarn workspaces shared package does not load in create-react-app)

如何使用 Yarn 工作區將共享依賴項添加到 monorepo? (How do I add shared dependencies to a monorepo using Yarn workspaces?)

使用紗線工作區在monorepo中跨項目共享配置變量? (Sharing config variables across projects in a monorepo using yarn workspaces?)







留言討論