英文:
NX package-based repo: projectRoot vs workspaceRoot?
问题
projectRoot
是指当前项目根目录的路径,而 workspaceRoot
是指工作区根目录的路径。
在你的目录结构中,projectRoot
会指向包含 nx.json
配置的顶层目录,而 workspaceRoot
会指向包含所有工作区(packages)的目录,也就是你的 git 仓库根目录。所以,workspaceRoot
指的是包含所有工作区的目录,而不是单个工作区(package)的根目录。
英文:
If I have a package-based monorepo with NX, which directory is projectRoot
, and which one is workspaceRoot
?
From the docs (https://nx.dev/reference/project-configuration):
> {projectRoot} and {workspaceRoot}
>
> {projectRoot} is a key word that is replaced by the path to the current project's root directory. {workspaceRoot} is a key word that is replaced by the path to the workspace root directory.
This is hilariously obvious and unhelpful explanation. I want to know which one is which, given I have this directory structure:
(git repo root dir)
|
+- nx.json
+- package.json - it says `"workspaces": [ "packages/*" ]`
|
+- packages/
|
+- package1/
+- package2/
Because package.json
mentions my packages/*
as "workspaces", my guess is that each package is a workspace, thus workspaceRoot
must refer to each package individually, while projectRoot
must refer to a top-level dir with my nx.json
config. But I have absolutely no idea how to confirm this. I'm experimenting with cache (setting various inputs
as seeing is it hits or misses), and absolutely nothing works.
To clarify what I'm confused about: Is "workspace root" a directory containing all the workspaces (i.e. packages), or does it mean "root directory of an individual workspace (i.e. package)." (Here I'm assuming that "workspace" == "package", which may not be true.)
答案1
得分: 2
- "project" = 每个包,例如库或应用程序,指的是
packages/
目录下的每个单独子目录 - "projectRoot" = 每个单独包的根目录。在问题中的示例中,它将是
packages/package1
和packages/package2
- "workspace" = 所有包/项目的集合。请注意,“package.json”使用“workspaces”(复数)一词来指代包含所有包的目录,这让我感到困惑。
- "workspaceRoot" = 包含
nx.json
的根目录
简而言之:
- project = 包
- workspace = 项目集合
英文:
Based on reading <https://nx.dev/concepts/mental-model>, here are my definitions:
- "project" = each package, e.g. a library or an app, which refers to each individual subdirectory inside
packages/
- "projectRoot" = root of each individual package. In the example from the question, it will be
packages/package1
andpackages/package2
- "workspace" = collection of all the packages/projects. Note that "package.json" uses the word "workspaces" (plural) to refer to a directory with all the packages, which is what confuses me.
- "workspaceRoot" = the root directory where
nx.json
is located
In short:
- project = package
- workspace = collection of projects
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论