@rife/cli 0.0.6-beta.1 → 0.0.6-beta.10

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.
Files changed (62) hide show
  1. package/dist/1.js +24 -0
  2. package/dist/1.mjs +20 -0
  3. package/dist/cjs/1.js +24 -0
  4. package/dist/cli.js +4 -0
  5. package/dist/cli.js.map +1 -1
  6. package/dist/esm/1.mjs +20 -0
  7. package/dist/index.js +3 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/logger.js +3 -11
  10. package/dist/logger.js.map +1 -1
  11. package/dist/plugin/commander.js +22 -17
  12. package/dist/plugin/commander.js.map +1 -1
  13. package/dist/plugin/compiler/index.js +8 -4
  14. package/dist/plugin/compiler/index.js.map +1 -1
  15. package/dist/plugin/compiler/swc.js +2 -1
  16. package/dist/plugin/compiler/swc.js.map +1 -1
  17. package/dist/plugin/compiler/swc2.js +65 -0
  18. package/dist/plugin/compiler/swc2.js.map +1 -0
  19. package/dist/plugin/config.js +25 -9
  20. package/dist/plugin/config.js.map +1 -1
  21. package/dist/plugin/index.js +1 -0
  22. package/dist/plugin/index.js.map +1 -1
  23. package/dist/plugin/package copy.js.map +1 -1
  24. package/dist/plugin/package.js.map +1 -1
  25. package/dist/plugin/release.js +84 -14
  26. package/dist/plugin/release.js.map +1 -1
  27. package/dist/runner.js +33 -4
  28. package/dist/runner.js.map +1 -1
  29. package/dist/sync.js +4 -3
  30. package/dist/sync.js.map +1 -1
  31. package/dist/tsconfig.tsbuildinfo +1 -1
  32. package/dist/util.js +14 -0
  33. package/dist/util.js.map +1 -0
  34. package/package.json +27 -26
  35. package/src/cli.ts +23 -19
  36. package/src/index.ts +13 -3
  37. package/src/logger.ts +16 -34
  38. package/src/plugin/commander.ts +49 -44
  39. package/src/plugin/compiler/index.ts +115 -109
  40. package/src/plugin/compiler/swc.ts +56 -55
  41. package/src/plugin/compiler/tsc.ts +101 -101
  42. package/src/plugin/config.ts +78 -63
  43. package/src/plugin/index.ts +1 -0
  44. package/src/plugin/package.ts +0 -3
  45. package/src/plugin/release.ts +113 -32
  46. package/src/runner.ts +130 -88
  47. package/src/sync.ts +63 -62
  48. package/src/util.ts +9 -0
  49. package/dist/build.js +0 -3
  50. package/dist/build.js.map +0 -1
  51. package/dist/compiler.js +0 -82
  52. package/dist/compiler.js.map +0 -1
  53. package/dist/plugin.js +0 -161
  54. package/dist/plugin.js.map +0 -1
  55. package/dist/pnpmfile.js +0 -144
  56. package/dist/swc.js +0 -78
  57. package/dist/swc.js.map +0 -1
  58. package/dist/tsc.js +0 -94
  59. package/dist/tsc.js.map +0 -1
  60. package/src/build.ts +0 -0
  61. package/src/pnpmfile.ts +0 -121
  62. package/src/test/pnpmfile.test.ts +0 -223
package/dist/pnpmfile.js DELETED
@@ -1,144 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
- // src/pnpmfile.ts
21
- var pnpmfile_exports = {};
22
- __export(pnpmfile_exports, {
23
- afterAllResolved: () => afterAllResolved,
24
- parseVersion: () => parseVersion,
25
- readPackage: () => readPackage,
26
- testCompareObject: () => testCompareObject,
27
- testReadPackage: () => testReadPackage
28
- });
29
- module.exports = __toCommonJS(pnpmfile_exports);
30
- var root;
31
- var exit;
32
- var origin = {};
33
- function parseVersion(version) {
34
- const [_, a = "", b = "", c = "", d = ""] = /(\d+?)\.(\d+?)\.(\d+?)\D*(\d+)?/.exec(version) || [];
35
- if (!a || !b || !c) {
36
- exit(`version ${version}`);
37
- }
38
- return [a, b, c, d].map((t) => t.padStart(3, "0")).join(".");
39
- }
40
- function compareVersion(v1, v2) {
41
- const v = [v1, v2].filter((t) => Boolean(t));
42
- if (v.length === 0) {
43
- exit("version empty");
44
- }
45
- if (v.length === 1) {
46
- return v[0];
47
- }
48
- return parseVersion(v1) > parseVersion(v2) ? v1 : v2;
49
- }
50
- function updateRoot(type, name, version) {
51
- if (origin[type][name]) return;
52
- if (!root[type]) {
53
- root[type] = {};
54
- }
55
- const dependencies = root[type];
56
- dependencies[name] = compareVersion(version, dependencies[name]);
57
- }
58
- var readPackage = (pkg, context) => {
59
- if (!exit) {
60
- exit = (message) => {
61
- context.log(message);
62
- process.exit(1);
63
- };
64
- }
65
- if (!root) {
66
- root = pkg;
67
- origin.dependencies = { ...root.dependencies };
68
- origin.devDependencies = { ...root.devDependencies };
69
- }
70
- const dependencies = pkg.dependencies || {};
71
- const devDependencies = pkg.devDependencies || {};
72
- const { hostDependencies = {} } = pkg.rife || {};
73
- Object.keys(hostDependencies).forEach((name) => {
74
- const version = dependencies[name] || devDependencies[name];
75
- if (!version) {
76
- exit("cannot not found version");
77
- }
78
- const isDev = Boolean(devDependencies[name]);
79
- if (isDev) {
80
- updateRoot("devDependencies", name, version);
81
- } else {
82
- updateRoot("dependencies", name, version);
83
- }
84
- });
85
- return pkg;
86
- };
87
- var logDiff = (type, diff, context) => {
88
- if (diff.desc) {
89
- context.log(`${type} is wrong, ${diff.desc}.`);
90
- }
91
- };
92
- var afterAllResolved = (lockfile, context) => {
93
- const fact = lockfile.importers["."];
94
- const diff = compareObject(fact.dependencies, root.dependencies);
95
- const diffDev = compareObject(fact.devDependencies, root.devDependencies);
96
- logDiff("dependencies", diff, context);
97
- logDiff("devDependencies", diffDev, context);
98
- return lockfile;
99
- };
100
- function testReadPackage(list) {
101
- root = null;
102
- origin = {};
103
- list.map((t) => readPackage(t, { log: console.log }));
104
- return root;
105
- }
106
- function compareObject(fact = {}, expect = {}) {
107
- const more = [];
108
- const less = [];
109
- Object.keys(fact).forEach((name) => {
110
- if (fact[name] !== expect[name]) {
111
- more.push({ name, version: fact[name] });
112
- }
113
- });
114
- Object.keys(expect).forEach((name) => {
115
- if (fact[name] !== expect[name]) {
116
- less.push({ name, version: expect[name] });
117
- }
118
- });
119
- const desc = [];
120
- if (more.length) {
121
- desc.push(`${more.map((t) => `${t.name}@${t.version}`).join(" ")} is redundant`);
122
- }
123
- if (less.length) {
124
- desc.push(`cannot found ${less.map((t) => `${t.name}@${t.version}`).join(" ")}`);
125
- }
126
- return {
127
- more,
128
- //
129
- less,
130
- desc: desc.join(", ")
131
- };
132
- }
133
- function testCompareObject(fact = {}, expect = {}) {
134
- const { more, less } = compareObject(fact, expect);
135
- return { more, less };
136
- }
137
- // Annotate the CommonJS export names for ESM import in node:
138
- 0 && (module.exports = {
139
- afterAllResolved,
140
- parseVersion,
141
- readPackage,
142
- testCompareObject,
143
- testReadPackage
144
- });
package/dist/swc.js DELETED
@@ -1,78 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.swc = swc;
4
- const tslib_1 = require("tslib");
5
- const path_1 = tslib_1.__importDefault(require("path"));
6
- async function swc(options) {
7
- const { watch = false, outDir } = options;
8
- const { swcDir } = require('@swc/cli');
9
- const swcOptions = {
10
- jsc: {
11
- target: 'esnext',
12
- externalHelpers: true,
13
- },
14
- module: {
15
- type: 'commonjs',
16
- },
17
- sourceMaps: true,
18
- };
19
- const { tsTypeCheck } = createTsTypeChecker();
20
- let first = true;
21
- await swcDir({
22
- cliOptions: {
23
- outDir,
24
- watch,
25
- filenames: ['./src'],
26
- extensions: ['.ts', '.tsx'],
27
- stripLeadingPaths: true,
28
- },
29
- swcOptions,
30
- callbacks: {
31
- onSuccess: ({ duration }) => {
32
- options?.onComplieSuccess?.({ watch, first, duration });
33
- options?.onTypeCheckFinish?.(tsTypeCheck());
34
- first = false;
35
- },
36
- onFail: (e) => {
37
- options?.onComplieFail?.({ ...e, watch, first });
38
- if (watch) {
39
- // 不退出,下次修复报错后清空屏幕
40
- first = false;
41
- }
42
- else {
43
- process.exit(1);
44
- }
45
- },
46
- onWatchReady: () => { },
47
- },
48
- });
49
- }
50
- function createTsTypeChecker() {
51
- // perf.start(createTsTypeChecker);
52
- const ts = require('typescript');
53
- const tsConfigPath = path_1.default.resolve('tsconfig.json');
54
- // 解析 tsconfig.json 文件
55
- const configFile = ts.readConfigFile(tsConfigPath, ts.sys.readFile);
56
- if (configFile.error) {
57
- const message = ts.flattenDiagnosticMessageText(configFile.error.messageText, '\n');
58
- console.error(`Error reading tsconfig: ${message}`);
59
- process.exit(1);
60
- }
61
- // 解析编译选项和文件列表
62
- const parsedCommandLine = ts.parseJsonConfigFileContent(configFile.config, ts.sys, path_1.default.dirname(tsConfigPath));
63
- const tsTypeCheck = () => {
64
- const perfStart = performance.now();
65
- // 创建 Program
66
- const program = ts.createProgram({
67
- rootNames: parsedCommandLine.fileNames,
68
- options: { ...parsedCommandLine.options, tsBuildInfoFile: './dist/.tsbuildinfo' },
69
- });
70
- // 获取所有诊断信息
71
- const diagnostics = ts.getPreEmitDiagnostics(program);
72
- const duration = performance.now() - perfStart;
73
- return { diagnostics, duration };
74
- };
75
- // perf.end(createTsTypeChecker);
76
- return { tsTypeCheck };
77
- }
78
- //# sourceMappingURL=swc.js.map
package/dist/swc.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"swc.js","sourceRoot":"","sources":["../src/swc.ts"],"names":[],"mappings":"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"}
package/dist/tsc.js DELETED
@@ -1,94 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.tsc = tsc;
4
- const tslib_1 = require("tslib");
5
- const path_1 = tslib_1.__importDefault(require("path"));
6
- function tsc(config) {
7
- const logger = console;
8
- const ts = require('typescript');
9
- // https://github.com/microsoft/TypeScript/wiki/Using-the-Compiler-API#writing-an-incremental-program-watcher
10
- const rootDir = config.rootDir || '.';
11
- const formatHost = {
12
- getCanonicalFileName: path => path,
13
- getCurrentDirectory: ts.sys.getCurrentDirectory,
14
- getNewLine: () => ts.sys.newLine,
15
- };
16
- function reportDiagnostic(diagnostic) {
17
- const file = diagnostic.file;
18
- const start = diagnostic.start;
19
- if (!file || !start)
20
- return;
21
- const { line, character } = file.getLineAndCharacterOfPosition(start);
22
- logger.error(`${file.fileName}(${line + 1},${character + 1}) ${diagnostic.messageText}`);
23
- }
24
- /**
25
- * Prints a diagnostic every time the watch status changes.
26
- * This is mainly for messages like "Starting compilation" or "Compilation completed".
27
- */
28
- let a;
29
- function reportWatchStatusChanged(diagnostic) {
30
- logger.info(`${ts.formatDiagnostic(diagnostic, formatHost)}`.trimEnd());
31
- const messageText = diagnostic?.messageText;
32
- const noErrorsMessage = '0 errors';
33
- if (messageText?.includes(noErrorsMessage)) {
34
- if (config.main) {
35
- // 有启动文件
36
- const { fork } = require('child_process');
37
- a?.kill();
38
- a = fork(config.main, { stdio: 'inherit' });
39
- }
40
- }
41
- }
42
- const configPath = ts.findConfigFile(rootDir, ts.sys.fileExists, 'tsconfig.json');
43
- if (!configPath) {
44
- throw new Error('找不到tsconfig.json');
45
- }
46
- const createProgram = ts.createSemanticDiagnosticsBuilderProgram;
47
- if (config.watch) {
48
- const host = ts.createWatchCompilerHost(configPath, {
49
- ...config.options,
50
- outDir: config.outDir,
51
- noEmit: false,
52
- incremental: true,
53
- }, ts.sys, createProgram, reportDiagnostic, reportWatchStatusChanged);
54
- ts.createWatchProgram(host);
55
- }
56
- else {
57
- // 读取 tsconfig.json 文件
58
- const configFile = ts.readConfigFile(configPath, ts.sys.readFile);
59
- // 解析 tsconfig.json 文件
60
- const compilerOptions = ts.parseJsonConfigFileContent(configFile.config, ts.sys, path_1.default.dirname(configPath), {
61
- ...config.options,
62
- outDir: config.outDir,
63
- noEmit: false,
64
- incremental: false,
65
- });
66
- // 获取编译器实例
67
- const host = ts.createCompilerHost(compilerOptions.options);
68
- const program = ts.createProgram(compilerOptions.fileNames, compilerOptions.options, host);
69
- // 执行编译
70
- const emitResult = program.emit();
71
- // 处理编译结果
72
- const diagnostics = ts.getPreEmitDiagnostics(program).concat(emitResult.diagnostics);
73
- if (diagnostics.length > 0) {
74
- // 输出错误信息
75
- diagnostics.forEach(diagnostic => {
76
- const message = ts.flattenDiagnosticMessageText(diagnostic.messageText, '\n');
77
- if (diagnostic.file) {
78
- const { line, character } = diagnostic.file.getLineAndCharacterOfPosition(diagnostic.start);
79
- console.error(`Error ${diagnostic.file.fileName} (${line + 1},${character + 1}): ${message}`);
80
- }
81
- else {
82
- console.error(`Error: ${message}`);
83
- }
84
- });
85
- // 编译失败
86
- logger.error('编译失败');
87
- }
88
- else {
89
- // 编译成功
90
- logger.info('编译成功');
91
- }
92
- }
93
- }
94
- //# sourceMappingURL=tsc.js.map
package/dist/tsc.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"tsc.js","sourceRoot":"","sources":["../src/tsc.ts"],"names":[],"mappings":"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"}
package/src/build.ts DELETED
File without changes
package/src/pnpmfile.ts DELETED
@@ -1,121 +0,0 @@
1
- let root: any;
2
- let exit: (message: string) => any;
3
- const origin: any = {};
4
-
5
- export function parseVersion(version: string) {
6
- const [_, a = '', b = '', c = '', d = ''] = /(\d+?)\.(\d+?)\.(\d+?)\D*(\d+)?/.exec(version) || [];
7
- if (!a || !b || !c) {
8
- exit(`version ${version}`);
9
- }
10
- return [a, b, c, d].map(t => t.padStart(3, '0')).join('.');
11
- }
12
-
13
- function compareVersion(v1: string, v2: string) {
14
- const v = [v1, v2].filter(t => Boolean(t));
15
- if (v.length === 0) {
16
- exit('version empty');
17
- }
18
- if (v.length === 1) {
19
- return v[0];
20
- }
21
-
22
- return parseVersion(v1) > parseVersion(v2) ? v1 : v2;
23
- }
24
-
25
- const host: any = {};
26
- function updateRoot(type: 'dependencies' | 'devDependencies', name: string, version: string, from: string) {
27
- if (origin[type][name]) return;
28
- if (!host[type]) {
29
- host[type] = {};
30
- }
31
- const dependencies = host[type];
32
- dependencies[name] = {
33
- version: compareVersion(version, dependencies[name]?.version),
34
- from,
35
- };
36
- }
37
-
38
- export const readPackage = (pkg: any, context: any) => {
39
- if (!exit) {
40
- exit = (message: string) => {
41
- context.log(message);
42
- // @ts-ignore
43
- process.exit(1);
44
- };
45
- }
46
- if (!root) {
47
- root = pkg;
48
- origin.dependencies = { ...root.dependencies };
49
- origin.devDependencies = { ...root.devDependencies };
50
- }
51
- const dependencies = pkg.dependencies || {};
52
- const devDependencies = pkg.devDependencies || {};
53
- const peerDependencies = (pkg.peerDependencies = pkg.peerDependencies || {});
54
- const { hostDependencies = {} } = pkg.rife || {};
55
- const from = `${pkg.name}@${pkg.version}`;
56
- Object.keys(hostDependencies).forEach(name => {
57
- const version = dependencies[name] || devDependencies[name];
58
- if (!version) {
59
- exit('cannot not found version');
60
- }
61
- const isDev = Boolean(devDependencies[name]);
62
- if (isDev) {
63
- peerDependencies[name] = version;
64
- updateRoot('devDependencies', name, version, from);
65
- } else {
66
- updateRoot('dependencies', name, version, from);
67
- }
68
- });
69
- return pkg;
70
- };
71
-
72
- export const afterAllResolved = (lockfile, context) => {
73
- const fact = lockfile.importers['.'];
74
- context.log(JSON.stringify(host));
75
- return lockfile;
76
- };
77
-
78
- // const logDiff = (type: 'dependencies' | 'devDependencies', diff: any, context) => {
79
- // if (diff.desc) {
80
- // context.log(`${type} is wrong, ${diff.desc}.`);
81
- // }
82
- // };
83
-
84
- // export function testReadPackage(list: any[]) {
85
- // root = null;
86
- // origin = {};
87
- // list.map(t => readPackage(t, { log: console.log }));
88
- // return root;
89
- // }
90
-
91
- // function compareObject(fact: any = {}, expect: any = {}) {
92
- // const more: any[] = [];
93
- // const less: any[] = [];
94
- // Object.keys(fact).forEach(name => {
95
- // if (fact[name] !== expect[name]) {
96
- // more.push({ name, version: fact[name] });
97
- // }
98
- // });
99
- // Object.keys(expect).forEach(name => {
100
- // if (fact[name] !== expect[name]) {
101
- // less.push({ name, version: expect[name] });
102
- // }
103
- // });
104
- // const desc: string[] = [];
105
- // if (more.length) {
106
- // desc.push(`${more.map(t => `${t.name}@${t.version}`).join(' ')} is redundant`);
107
- // }
108
- // if (less.length) {
109
- // desc.push(`cannot found ${less.map(t => `${t.name}@${t.version}`).join(' ')}`);
110
- // }
111
- // return {
112
- // more, //
113
- // less,
114
- // desc: desc.join(', '),
115
- // };
116
- // }
117
-
118
- // export function testCompareObject(fact: any = {}, expect: any = {}) {
119
- // const { more, less } = compareObject(fact, expect);
120
- // return { more, less };
121
- // }
@@ -1,223 +0,0 @@
1
- import { describe, expect, test } from 'vitest';
2
-
3
- import { compareObject, parseVersion, testCompareObject, testReadPackage } from '../pnpmfile';
4
-
5
- describe('解析版本号', () => {
6
- test('范围版本号', () => {
7
- expect(parseVersion('^1.0.0')).toBe('001.000.000.000');
8
- expect(parseVersion('1.10.0')).toBe('001.010.000.000');
9
- });
10
-
11
- test('beta 版本号', () => {
12
- expect(parseVersion('1.0.0-beta.1')).toBe('001.000.000.001');
13
- });
14
- });
15
-
16
- describe('直接依赖提升', () => {
17
- test('提升 dependencies', () => {
18
- const root = {
19
- name: '@rife/root',
20
- dependencies: {
21
- '@rife/a': 'workspace:*',
22
- root: '^1.0.0',
23
- },
24
- };
25
- const a = {
26
- name: '@rife/a',
27
- dependencies: {
28
- a1: '^1.0.0',
29
- },
30
- rife: {
31
- hostDependencies: {
32
- a1: true,
33
- },
34
- },
35
- };
36
- const z = {
37
- name: '@rife/root',
38
- dependencies: {
39
- '@rife/a': 'workspace:*',
40
- root: '^1.0.0',
41
- a1: '^1.0.0',
42
- },
43
- };
44
- expect(testReadPackage([root, a])).toStrictEqual(z);
45
- });
46
-
47
- test('提升 devDependencies', () => {
48
- const root = {
49
- name: '@rife/root',
50
- dependencies: {
51
- '@rife/a': 'workspace:*',
52
- root: '^1.0.0',
53
- },
54
- };
55
- const a = {
56
- name: '@rife/a',
57
- devDependencies: {
58
- a1: '^1.0.0',
59
- },
60
- rife: {
61
- hostDependencies: {
62
- a1: true,
63
- },
64
- },
65
- };
66
- const z = {
67
- name: '@rife/root',
68
- dependencies: {
69
- '@rife/a': 'workspace:*',
70
- root: '^1.0.0',
71
- },
72
- devDependencies: {
73
- a1: '^1.0.0',
74
- },
75
- };
76
- expect(testReadPackage([root, a])).toStrictEqual(z);
77
- });
78
-
79
- test('同时提升 dependencies 和 devDependencies', () => {
80
- const root = {
81
- name: '@rife/root',
82
- dependencies: {
83
- '@rife/a': 'workspace:*',
84
- root: '^1.0.0',
85
- },
86
- };
87
- const a = {
88
- name: '@rife/a',
89
- dependencies: {
90
- a1: '^1.0.0',
91
- },
92
- devDependencies: {
93
- a2: '^1.0.0',
94
- },
95
- rife: {
96
- hostDependencies: {
97
- a1: true,
98
- a2: true,
99
- },
100
- },
101
- };
102
- const z = {
103
- name: '@rife/root',
104
- dependencies: {
105
- '@rife/a': 'workspace:*',
106
- root: '^1.0.0',
107
- a1: '^1.0.0',
108
- },
109
- devDependencies: {
110
- a2: '^1.0.0',
111
- },
112
- };
113
- expect(testReadPackage([root, a])).toStrictEqual(z);
114
- });
115
-
116
- test('提升不能覆盖现有版本号', () => {
117
- const root = {
118
- name: '@rife/root',
119
- dependencies: {
120
- '@rife/a': 'workspace:*',
121
- root: '^1.0.0',
122
- a1: '^1.0.0',
123
- },
124
- devDependencies: {
125
- a2: '^1.0.0',
126
- },
127
- };
128
- const a = {
129
- name: '@rife/a',
130
- dependencies: {
131
- a1: '^1.0.1',
132
- },
133
- devDependencies: {
134
- a2: '^1.0.1',
135
- },
136
- rife: {
137
- hostDependencies: {
138
- a1: true,
139
- a2: true,
140
- },
141
- },
142
- };
143
- const z = {
144
- name: '@rife/root',
145
- dependencies: {
146
- '@rife/a': 'workspace:*',
147
- root: '^1.0.0',
148
- a1: '^1.0.0',
149
- },
150
- devDependencies: {
151
- a2: '^1.0.0',
152
- },
153
- };
154
- expect(testReadPackage([root, a])).toStrictEqual(z);
155
- });
156
- });
157
-
158
- describe('依赖同一个依赖的多个版本', () => {
159
- test('总是提升最新版本', () => {
160
- const root = {
161
- name: '@rife/root',
162
- dependencies: {
163
- '@rife/a': 'workspace:*',
164
- root: '^1.0.0',
165
- },
166
- };
167
- const a = {
168
- name: '@rife/a',
169
- dependencies: {
170
- a1: '^1.0.0',
171
- },
172
- rife: {
173
- hostDependencies: {
174
- a1: true,
175
- },
176
- },
177
- };
178
- const b = {
179
- name: '@rife/b',
180
- dependencies: {
181
- a1: '^1.0.1',
182
- b1: '^1.0.0',
183
- },
184
- rife: {
185
- hostDependencies: {
186
- a1: true,
187
- b1: true,
188
- },
189
- },
190
- };
191
- const z = {
192
- name: '@rife/root',
193
- dependencies: {
194
- '@rife/a': 'workspace:*',
195
- root: '^1.0.0',
196
- a1: '^1.0.1',
197
- b1: '^1.0.0',
198
- },
199
- };
200
- expect(testReadPackage([root, a, b])).toStrictEqual(z);
201
- });
202
- });
203
-
204
- describe('比较差异', () => {
205
- test('相同', () => {
206
- expect(testCompareObject({}, {})).toStrictEqual({ more: [], less: [] });
207
- });
208
-
209
- test('多了', () => {
210
- expect(testCompareObject({ a: 1 }, {})).toStrictEqual({ more: [{ name: 'a', version: 1 }], less: [] });
211
- });
212
-
213
- test('少了', () => {
214
- expect(testCompareObject({}, { a: 1 })).toStrictEqual({ more: [], less: [{ name: 'a', version: 1 }] });
215
- });
216
-
217
- test('差异', () => {
218
- expect(testCompareObject({ b: 2 }, { a: 1 })).toStrictEqual({
219
- more: [{ name: 'b', version: 2 }],
220
- less: [{ name: 'a', version: 1 }],
221
- });
222
- });
223
- });