From 4da1dc74954fafe4d21841892bafc955a37ac805 Mon Sep 17 00:00:00 2001 From: muqiuhan Date: Tue, 27 May 2025 06:06:45 +0000 Subject: deploy: 74a1d57ead41454de540829cd6de5ba1f5702bd6 --- .../Turborepo-\347\256\200\350\277\260/index.html" | 42 +++++++++++----------- 1 file changed, 21 insertions(+), 21 deletions(-) (limited to '2024/09/27/Turborepo-简述/index.html') diff --git "a/2024/09/27/Turborepo-\347\256\200\350\277\260/index.html" "b/2024/09/27/Turborepo-\347\256\200\350\277\260/index.html" index 24ed29e9..a2322b79 100644 --- "a/2024/09/27/Turborepo-\347\256\200\350\277\260/index.html" +++ "b/2024/09/27/Turborepo-\347\256\200\350\277\260/index.html" @@ -222,8 +222,8 @@

那么 apps 或 packages 目录中有 package.json 的每个目录都将被视为一个包。

-

注意:Turborepo 不支持嵌套包,例如 apps/** 或 packages/** 这种,将一个包放在apps/a 并将另一个包放在 apps/a/b 的结构将导致错误。

-

如果想按目录对包进行分组,可以使用 packages/* 和 packages/group/* 等 glob 来完成此操作,而不是创建 packages/group/package.json 文件。

+

注意:Turborepo 不支持嵌套包,例如 apps/ 或 packages/ 这种,将一个包放在apps/a 并将另一个包放在 apps/a/b 的结构将导致错误。

+

如果想按目录对包进行分组,可以使用 packages/* 和 packages/group/* 等 glob 来完成此操作,而不是创建 packages/group/package.json 文件。

根目录的 package.json 是 workspace 的基础,常见的配置:

1
2
3
4
5
6
7
8
9
10
11
12
{
"private": true,
"scripts": {
"build": "turbo run build",
"dev": "turbo run dev",
"lint": "turbo run lint"
},
"devDependencies": {
"turbo": "latest"
},
"packageManager": "npm@10.0.0"
}
@@ -244,9 +244,9 @@

以这种方式使用导出有三个主要好处:


除此之外还有 import 字段,也就是一种创建包中其他模块的子路径的方法。可以简单地视为 “快捷方式” ,用于编写更简单的导入路径,这些路径对日后文件被移动后的重构更具弹性。

@@ -261,13 +261,13 @@

这种做法有几个好处:

-

属于工作区根目录的唯一依赖项是用于管理存储库的工具,而用于构建应用程序和库的依赖项安装在各自的包中。一些适合安装在根中的依赖项示例包括 turbo、husky 或 lint-staged。

+

属于工作区根目录的唯一依赖项是用于管理存储库的工具,而用于构建应用程序和库的依赖项安装在各自的包中。一些适合安装在根中的依赖项示例包括 turbo、husky 或 lint-staged。

保持同一版本的依赖

一些 monorepo 维护者更喜欢按照规则在所有软件包中保持对相同版本的依赖关系。有几种方法可以实现此目的:

一些脚本允许使用 stdin 在其中键入以进行交互式输入。使用终端 UI,可以选择一个任务,输入它,然后像往常一样使用 stdin。

需要运行用于设置开发环境或预构建包的脚本。可以使用 dependsOn 确保这些任务在 dev 任务之前运行:

-
1
2
3
4
5
6
7
8
9
10
11
12
{
"tasks": {
"dev": {
"cache": false,
"persistent": true,
"dependsOn": ["//#dev:setup"]
},
"//#dev:setup": {
"outputs": [".codegen/**"]
}
}
}
+
1
2
3
4
5
6
7
8
9
10
11
12
{
"tasks": {
"dev": {
"cache": false,
"persistent": true,
"dependsOn": ["//#dev:setup"]
},
"//#dev:setup": {
"outputs": [".codegen/"]
}
}
}

这里用的是 Root Task,但可以对 packages 中的任意任务使用相同的思路。

Watch mode

许多工具都有一个内置的 watcher,比如 tsc --watch,它会响应源代码中的更改。有些则没有,Turbo Watch 为任何工具添加了依赖项感知的 Watcher。对源代码的更改将遵循在 turbo.json 中描述的 Task Graph (任务图),例如:

@@ -381,11 +381,11 @@

Environment mode

Turborepo 的 Environment Mode 允许控制哪些环境变量在运行时可用于任务:

其他