@ruan-cat/utils 4.18.0 → 4.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +6 -30
- package/dist/index.js +0 -2632
- package/dist/index.js.map +1 -1
- package/dist/node-cjs/index.cjs +2 -2
- package/dist/node-cjs/index.cjs.map +1 -1
- package/dist/node-cjs/index.d.cts +17 -29
- package/dist/node-esm/index.d.ts +14 -1
- package/dist/node-esm/index.js +35 -2
- package/dist/node-esm/index.js.map +1 -1
- package/package.json +4 -3
- package/src/index.ts +0 -1
- package/src/{monorepo.ts → monorepo/index.ts} +1 -1
- package/src/node-cjs/index.ts +3 -0
- package/src/node-esm/index.ts +3 -0
- package/src/types/pnpm-workspace.yaml.shim.ts +5 -17
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as child_process from 'child_process';
|
|
2
2
|
import { SpawnOptions } from 'node:child_process';
|
|
3
|
+
import { PnpmWorkspaceYamlSchema } from 'pnpm-workspace-yaml';
|
|
3
4
|
|
|
4
5
|
/**
|
|
5
6
|
* 路径转换工具
|
|
@@ -134,40 +135,14 @@ declare function executePromiseTasks(config: TasksConfig,
|
|
|
134
135
|
*/
|
|
135
136
|
lastParams?: any): Promise<any>;
|
|
136
137
|
|
|
137
|
-
/**
|
|
138
|
-
* 判断目标项目是否是 monorepo 格式的项目
|
|
139
|
-
* @description
|
|
140
|
-
* 判别逻辑:
|
|
141
|
-
* 1. 目标项目同时存在 `pnpm-workspace.yaml` 文件
|
|
142
|
-
* 2. `pnpm-workspace.yaml` 提供了有效的 packages 匹配配置
|
|
143
|
-
* 3. 至少能匹配到一个 package.json 文件
|
|
144
|
-
*
|
|
145
|
-
* @returns {boolean} 是否是 monorepo 项目
|
|
146
|
-
* @throws {Error} 当 pnpm-workspace.yaml 格式错误时抛出错误
|
|
147
|
-
*/
|
|
148
|
-
declare function isMonorepoProject(): boolean;
|
|
149
|
-
|
|
150
138
|
/**
|
|
151
139
|
* pnpm-workspace.yaml 文件的类型声明
|
|
152
140
|
* @description
|
|
153
|
-
*
|
|
154
|
-
*
|
|
155
|
-
* 主要是为了让该文件被解析后,能够有一个基础的类型声明
|
|
141
|
+
* 现在是 pnpm-workspace-yaml 提供的 `PnpmWorkspaceYamlSchema` 类型
|
|
156
142
|
*
|
|
157
|
-
*
|
|
158
|
-
*
|
|
159
|
-
* 未来应该找到这样的类型声明库,直接复用别人的就好了,不要自己写了。
|
|
143
|
+
* @see https://github.com/antfu/pnpm-workspace-utils/blob/main/packages/pnpm-workspace-yaml/src/index.ts#L4
|
|
160
144
|
*/
|
|
161
|
-
|
|
162
|
-
/**
|
|
163
|
-
* 包的匹配语法字符串
|
|
164
|
-
*
|
|
165
|
-
* @example
|
|
166
|
-
* ["packages/**", "demos/**", "utils"]
|
|
167
|
-
*/
|
|
168
|
-
packages?: string[];
|
|
169
|
-
catalog?: string[];
|
|
170
|
-
}
|
|
145
|
+
type PnpmWorkspace = PnpmWorkspaceYamlSchema;
|
|
171
146
|
|
|
172
147
|
/**
|
|
173
148
|
* `Prettify` 帮助程序是一种实用程序类型,它采用对象类型并使悬停叠加更具可读性。
|
|
@@ -184,4 +159,17 @@ type Prettify<T> = {
|
|
|
184
159
|
*/
|
|
185
160
|
type ToNumberLike<T extends number> = T | `${T}`;
|
|
186
161
|
|
|
162
|
+
/**
|
|
163
|
+
* 判断目标项目是否是 monorepo 格式的项目
|
|
164
|
+
* @description
|
|
165
|
+
* 判别逻辑:
|
|
166
|
+
* 1. 目标项目同时存在 `pnpm-workspace.yaml` 文件
|
|
167
|
+
* 2. `pnpm-workspace.yaml` 提供了有效的 packages 匹配配置
|
|
168
|
+
* 3. 至少能匹配到一个 package.json 文件
|
|
169
|
+
*
|
|
170
|
+
* @returns {boolean} 是否是 monorepo 项目
|
|
171
|
+
* @throws {Error} 当 pnpm-workspace.yaml 格式错误时抛出错误
|
|
172
|
+
*/
|
|
173
|
+
declare function isMonorepoProject(): boolean;
|
|
174
|
+
|
|
187
175
|
export { type BaseTask, type Condition, type Conditions, type ParallelTasks, type PnpmWorkspace, type Prettify, type PrintListParams, type PromiseTasksConfig, type QueueTasks, type SimpleAsyncTask, type SingleTasks, type SpawnSyncSimpleParams, type Task, type TaskType, type TasksConfig, type ToNumberLike, defPrintCurrentCommand, definePromiseTasks, executePromiseTasks, generateSimpleAsyncTask, generateSpawnSync, initFlag, isConditionsEvery, isConditionsSome, isMonorepoProject, pathChange, printFormat, printList, runPromiseByConcurrency, runPromiseByQueue, taskTypes };
|
package/dist/node-esm/index.d.ts
CHANGED
|
@@ -43,4 +43,17 @@ interface WriteYaml2mdParams<T = Record<string, any>> {
|
|
|
43
43
|
*/
|
|
44
44
|
declare function writeYaml2md<T>(params: WriteYaml2mdParams<T>): void;
|
|
45
45
|
|
|
46
|
-
|
|
46
|
+
/**
|
|
47
|
+
* 判断目标项目是否是 monorepo 格式的项目
|
|
48
|
+
* @description
|
|
49
|
+
* 判别逻辑:
|
|
50
|
+
* 1. 目标项目同时存在 `pnpm-workspace.yaml` 文件
|
|
51
|
+
* 2. `pnpm-workspace.yaml` 提供了有效的 packages 匹配配置
|
|
52
|
+
* 3. 至少能匹配到一个 package.json 文件
|
|
53
|
+
*
|
|
54
|
+
* @returns {boolean} 是否是 monorepo 项目
|
|
55
|
+
* @throws {Error} 当 pnpm-workspace.yaml 格式错误时抛出错误
|
|
56
|
+
*/
|
|
57
|
+
declare function isMonorepoProject(): boolean;
|
|
58
|
+
|
|
59
|
+
export { type PackageInfo, type WriteYaml2mdParams, clean, defaultCleanTargets, getRuanCatPkgInfo, isMonorepoProject, writeYaml2md };
|
package/dist/node-esm/index.js
CHANGED
|
@@ -84,7 +84,7 @@ function generateSpawnSync(spawnSyncSimpleParams) {
|
|
|
84
84
|
import { isPlainObject, isArray } from "lodash-es";
|
|
85
85
|
import consola2 from "consola";
|
|
86
86
|
|
|
87
|
-
// src/monorepo.ts
|
|
87
|
+
// src/monorepo/index.ts
|
|
88
88
|
import { join } from "path";
|
|
89
89
|
import * as fs from "fs";
|
|
90
90
|
import { globSync } from "tinyglobby";
|
|
@@ -2713,8 +2713,40 @@ var jsYaml = {
|
|
|
2713
2713
|
safeDump
|
|
2714
2714
|
};
|
|
2715
2715
|
|
|
2716
|
-
// src/monorepo.ts
|
|
2716
|
+
// src/monorepo/index.ts
|
|
2717
2717
|
import { isUndefined } from "lodash-es";
|
|
2718
|
+
function pathChange(path) {
|
|
2719
|
+
return path.replace(/\\/g, "/");
|
|
2720
|
+
}
|
|
2721
|
+
function isMonorepoProject() {
|
|
2722
|
+
const workspaceConfigPath = join(process.cwd(), "pnpm-workspace.yaml");
|
|
2723
|
+
if (!fs.existsSync(workspaceConfigPath)) {
|
|
2724
|
+
return false;
|
|
2725
|
+
}
|
|
2726
|
+
let workspaceConfig;
|
|
2727
|
+
try {
|
|
2728
|
+
const workspaceFile = fs.readFileSync(workspaceConfigPath, "utf8");
|
|
2729
|
+
workspaceConfig = load(workspaceFile);
|
|
2730
|
+
} catch (error) {
|
|
2731
|
+
throw new Error(
|
|
2732
|
+
`\u89E3\u6790 pnpm-workspace.yaml \u6587\u4EF6\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u6587\u4EF6\u683C\u5F0F\u662F\u5426\u6B63\u786E\u3002\u9519\u8BEF\u4FE1\u606F\uFF1A${error instanceof Error ? error.message : String(error)}`
|
|
2733
|
+
);
|
|
2734
|
+
}
|
|
2735
|
+
const pkgPatterns = workspaceConfig.packages;
|
|
2736
|
+
if (isUndefined(pkgPatterns) || pkgPatterns.length === 0) {
|
|
2737
|
+
return false;
|
|
2738
|
+
}
|
|
2739
|
+
for (const pkgPattern of pkgPatterns) {
|
|
2740
|
+
const matchedPath = pathChange(join(process.cwd(), pkgPattern, "package.json"));
|
|
2741
|
+
const matchedPaths = globSync(matchedPath, {
|
|
2742
|
+
ignore: ["**/node_modules/**"]
|
|
2743
|
+
});
|
|
2744
|
+
if (matchedPaths.length > 0) {
|
|
2745
|
+
return true;
|
|
2746
|
+
}
|
|
2747
|
+
}
|
|
2748
|
+
return false;
|
|
2749
|
+
}
|
|
2718
2750
|
|
|
2719
2751
|
// src/node-esm/scripts/clean.ts
|
|
2720
2752
|
var defaultCleanTargets = [
|
|
@@ -2773,6 +2805,7 @@ export {
|
|
|
2773
2805
|
clean,
|
|
2774
2806
|
defaultCleanTargets,
|
|
2775
2807
|
getRuanCatPkgInfo,
|
|
2808
|
+
isMonorepoProject,
|
|
2776
2809
|
writeYaml2md
|
|
2777
2810
|
};
|
|
2778
2811
|
/*! Bundled license information:
|