@deot/dev-tester 2.7.0 → 2.9.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.cjs +40 -56
- package/dist/index.js +39 -55
- package/package.json +10 -11
- package/shared.config.ts +32 -33
package/dist/index.cjs
CHANGED
|
@@ -7,8 +7,7 @@ const node_url = require('node:url');
|
|
|
7
7
|
const devShared = require('@deot/dev-shared');
|
|
8
8
|
const node = require('vitest/node');
|
|
9
9
|
const fs = require('fs-extra');
|
|
10
|
-
const
|
|
11
|
-
const autocomplete = require('inquirer-autocomplete-prompt');
|
|
10
|
+
const prompts = require('@inquirer/prompts');
|
|
12
11
|
|
|
13
12
|
var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
|
|
14
13
|
function _interopNamespaceDefault(e) {
|
|
@@ -31,67 +30,54 @@ function _interopNamespaceDefault(e) {
|
|
|
31
30
|
const path__namespace = /*#__PURE__*/_interopNamespaceDefault(path);
|
|
32
31
|
|
|
33
32
|
const ALL_PACKAGE = "All Packages";
|
|
34
|
-
const { prompt, registerPrompt } = inquirer;
|
|
35
33
|
const getOptions = async () => {
|
|
36
34
|
const isDev = process.env.NODE_ENV === "development";
|
|
37
35
|
const { packageFolderNames, subpackagesMap } = devShared.Locals.impl();
|
|
38
36
|
const packages$ = [ALL_PACKAGE, ...packageFolderNames];
|
|
39
|
-
const
|
|
40
|
-
{
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
{
|
|
54
|
-
type: "autocomplete",
|
|
37
|
+
const packageFolderName = await prompts.search({
|
|
38
|
+
message: `Select Package To ${isDev ? "Develop" : "Test"}:`,
|
|
39
|
+
source: (term) => {
|
|
40
|
+
const input = typeof term === "undefined" ? "cli" : term;
|
|
41
|
+
return new Promise(($resolve) => {
|
|
42
|
+
const filter = input ? packages$.filter((item) => item.includes(input)) : packages$;
|
|
43
|
+
$resolve(filter);
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
let subpackageFolderName = "";
|
|
48
|
+
let watch = false;
|
|
49
|
+
if (subpackagesMap[packageFolderName]?.length) {
|
|
50
|
+
subpackageFolderName = await prompts.search({
|
|
55
51
|
message: `Select Subpackage To ${isDev ? "Develop" : "Test"}:`,
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
return !!subpackagesMap[answers.packageFolderName]?.length;
|
|
60
|
-
},
|
|
61
|
-
source: (answers, input) => {
|
|
62
|
-
const subpackages = [ALL_PACKAGE, ...subpackagesMap[answers.packageFolderName]];
|
|
63
|
-
input = input || "";
|
|
52
|
+
source: (term) => {
|
|
53
|
+
const input = typeof term === "undefined" ? "" : term;
|
|
54
|
+
const subpackages = [ALL_PACKAGE, ...subpackagesMap[packageFolderName]];
|
|
64
55
|
return new Promise(($resolve) => {
|
|
65
|
-
|
|
56
|
+
const filter = input ? subpackages.filter((item) => item.includes(input)) : subpackages;
|
|
66
57
|
$resolve(filter);
|
|
67
58
|
});
|
|
68
59
|
}
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
if (!isDev) {
|
|
63
|
+
watch = await prompts.confirm({
|
|
72
64
|
message: "Watch Mode?",
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
registerPrompt("autocomplete", autocomplete);
|
|
87
|
-
let result = await prompt(question);
|
|
88
|
-
result.packageFolderName = result.packageFolderName == ALL_PACKAGE ? void 0 : result.packageFolderName;
|
|
89
|
-
result.subpackageFolderName = result.subpackageFolderName == ALL_PACKAGE ? void 0 : result.subpackageFolderName;
|
|
90
|
-
result.watch = result.watch || isDev;
|
|
91
|
-
return result;
|
|
65
|
+
default: packageFolderName !== ALL_PACKAGE
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
const coverage = await prompts.confirm({
|
|
69
|
+
message: "Coverage Analyze?",
|
|
70
|
+
default: true
|
|
71
|
+
});
|
|
72
|
+
return {
|
|
73
|
+
packageFolderName: packageFolderName == ALL_PACKAGE ? void 0 : packageFolderName,
|
|
74
|
+
subpackageFolderName: subpackageFolderName == ALL_PACKAGE ? void 0 : subpackageFolderName,
|
|
75
|
+
watch: watch || isDev,
|
|
76
|
+
coverage
|
|
77
|
+
};
|
|
92
78
|
};
|
|
93
79
|
|
|
94
|
-
const dirname = path__namespace.dirname(node_url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.src || new URL('index.cjs', document.baseURI).href))));
|
|
80
|
+
const dirname = path__namespace.dirname(node_url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index.cjs', document.baseURI).href))));
|
|
95
81
|
const run = (options) => devShared.Utils.autoCatch(async () => {
|
|
96
82
|
options = { ...options };
|
|
97
83
|
const locals = devShared.Locals.impl();
|
|
@@ -120,10 +106,8 @@ const run = (options) => devShared.Utils.autoCatch(async () => {
|
|
|
120
106
|
await devShared.Shell.spawn(`npm`, ["run", "test"], { cwd: packageDir });
|
|
121
107
|
return;
|
|
122
108
|
}
|
|
123
|
-
if (!options.packageFolderName)
|
|
124
|
-
|
|
125
|
-
if (!options.workspace)
|
|
126
|
-
delete options.workspace;
|
|
109
|
+
if (!options.packageFolderName) delete options.packageFolderName;
|
|
110
|
+
if (!options.workspace) delete options.workspace;
|
|
127
111
|
delete options.packageName;
|
|
128
112
|
delete options.subpackage;
|
|
129
113
|
const isDev = process.env.NODE_ENV === "development";
|
|
@@ -142,7 +126,7 @@ const run = (options) => devShared.Utils.autoCatch(async () => {
|
|
|
142
126
|
const isReactPackage = typeof reactPackage === "string" && (packageName === locals.packageName || packageName === `${locals.packageName}-*` || reactPackage === "*" || reactPackage.split(",").includes(packageName));
|
|
143
127
|
options.useVue = !!isVuePackage;
|
|
144
128
|
options.useReact = !!isReactPackage;
|
|
145
|
-
|
|
129
|
+
const options$ = {
|
|
146
130
|
environment,
|
|
147
131
|
coverage: {
|
|
148
132
|
enabled: !!coverage
|
package/dist/index.js
CHANGED
|
@@ -3,68 +3,54 @@ import { fileURLToPath } from 'node:url';
|
|
|
3
3
|
import { Locals, Utils, Shell, Logger } from '@deot/dev-shared';
|
|
4
4
|
import { startVitest } from 'vitest/node';
|
|
5
5
|
import fs from 'fs-extra';
|
|
6
|
-
import
|
|
7
|
-
import autocomplete from 'inquirer-autocomplete-prompt';
|
|
6
|
+
import { search, confirm } from '@inquirer/prompts';
|
|
8
7
|
|
|
9
8
|
const ALL_PACKAGE = "All Packages";
|
|
10
|
-
const { prompt, registerPrompt } = inquirer;
|
|
11
9
|
const getOptions = async () => {
|
|
12
10
|
const isDev = process.env.NODE_ENV === "development";
|
|
13
11
|
const { packageFolderNames, subpackagesMap } = Locals.impl();
|
|
14
12
|
const packages$ = [ALL_PACKAGE, ...packageFolderNames];
|
|
15
|
-
const
|
|
16
|
-
{
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
{
|
|
30
|
-
type: "autocomplete",
|
|
13
|
+
const packageFolderName = await search({
|
|
14
|
+
message: `Select Package To ${isDev ? "Develop" : "Test"}:`,
|
|
15
|
+
source: (term) => {
|
|
16
|
+
const input = typeof term === "undefined" ? "cli" : term;
|
|
17
|
+
return new Promise(($resolve) => {
|
|
18
|
+
const filter = input ? packages$.filter((item) => item.includes(input)) : packages$;
|
|
19
|
+
$resolve(filter);
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
let subpackageFolderName = "";
|
|
24
|
+
let watch = false;
|
|
25
|
+
if (subpackagesMap[packageFolderName]?.length) {
|
|
26
|
+
subpackageFolderName = await search({
|
|
31
27
|
message: `Select Subpackage To ${isDev ? "Develop" : "Test"}:`,
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
return !!subpackagesMap[answers.packageFolderName]?.length;
|
|
36
|
-
},
|
|
37
|
-
source: (answers, input) => {
|
|
38
|
-
const subpackages = [ALL_PACKAGE, ...subpackagesMap[answers.packageFolderName]];
|
|
39
|
-
input = input || "";
|
|
28
|
+
source: (term) => {
|
|
29
|
+
const input = typeof term === "undefined" ? "" : term;
|
|
30
|
+
const subpackages = [ALL_PACKAGE, ...subpackagesMap[packageFolderName]];
|
|
40
31
|
return new Promise(($resolve) => {
|
|
41
|
-
|
|
32
|
+
const filter = input ? subpackages.filter((item) => item.includes(input)) : subpackages;
|
|
42
33
|
$resolve(filter);
|
|
43
34
|
});
|
|
44
35
|
}
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
if (!isDev) {
|
|
39
|
+
watch = await confirm({
|
|
48
40
|
message: "Watch Mode?",
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
registerPrompt("autocomplete", autocomplete);
|
|
63
|
-
let result = await prompt(question);
|
|
64
|
-
result.packageFolderName = result.packageFolderName == ALL_PACKAGE ? void 0 : result.packageFolderName;
|
|
65
|
-
result.subpackageFolderName = result.subpackageFolderName == ALL_PACKAGE ? void 0 : result.subpackageFolderName;
|
|
66
|
-
result.watch = result.watch || isDev;
|
|
67
|
-
return result;
|
|
41
|
+
default: packageFolderName !== ALL_PACKAGE
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
const coverage = await confirm({
|
|
45
|
+
message: "Coverage Analyze?",
|
|
46
|
+
default: true
|
|
47
|
+
});
|
|
48
|
+
return {
|
|
49
|
+
packageFolderName: packageFolderName == ALL_PACKAGE ? void 0 : packageFolderName,
|
|
50
|
+
subpackageFolderName: subpackageFolderName == ALL_PACKAGE ? void 0 : subpackageFolderName,
|
|
51
|
+
watch: watch || isDev,
|
|
52
|
+
coverage
|
|
53
|
+
};
|
|
68
54
|
};
|
|
69
55
|
|
|
70
56
|
const dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
@@ -96,10 +82,8 @@ const run = (options) => Utils.autoCatch(async () => {
|
|
|
96
82
|
await Shell.spawn(`npm`, ["run", "test"], { cwd: packageDir });
|
|
97
83
|
return;
|
|
98
84
|
}
|
|
99
|
-
if (!options.packageFolderName)
|
|
100
|
-
|
|
101
|
-
if (!options.workspace)
|
|
102
|
-
delete options.workspace;
|
|
85
|
+
if (!options.packageFolderName) delete options.packageFolderName;
|
|
86
|
+
if (!options.workspace) delete options.workspace;
|
|
103
87
|
delete options.packageName;
|
|
104
88
|
delete options.subpackage;
|
|
105
89
|
const isDev = process.env.NODE_ENV === "development";
|
|
@@ -118,7 +102,7 @@ const run = (options) => Utils.autoCatch(async () => {
|
|
|
118
102
|
const isReactPackage = typeof reactPackage === "string" && (packageName === locals.packageName || packageName === `${locals.packageName}-*` || reactPackage === "*" || reactPackage.split(",").includes(packageName));
|
|
119
103
|
options.useVue = !!isVuePackage;
|
|
120
104
|
options.useReact = !!isReactPackage;
|
|
121
|
-
|
|
105
|
+
const options$ = {
|
|
122
106
|
environment,
|
|
123
107
|
coverage: {
|
|
124
108
|
enabled: !!coverage
|
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deot/dev-tester",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.9.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
7
|
"exports": {
|
|
8
8
|
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
9
10
|
"import": "./dist/index.js",
|
|
10
|
-
"require": "./dist/index.cjs"
|
|
11
|
-
"types": "./dist/index.d.ts"
|
|
11
|
+
"require": "./dist/index.cjs"
|
|
12
12
|
}
|
|
13
13
|
},
|
|
14
14
|
"files": [
|
|
@@ -20,14 +20,13 @@
|
|
|
20
20
|
"access": "public"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@deot/dev-react": "^2.
|
|
24
|
-
"@deot/dev-shared": "^2.
|
|
25
|
-
"@deot/dev-vue": "^2.
|
|
26
|
-
"@vitest/coverage-istanbul": "^
|
|
23
|
+
"@deot/dev-react": "^2.9.0",
|
|
24
|
+
"@deot/dev-shared": "^2.9.0",
|
|
25
|
+
"@deot/dev-vue": "^2.9.0",
|
|
26
|
+
"@vitest/coverage-istanbul": "^3.0.5",
|
|
27
27
|
"cross-env": "^7.0.3",
|
|
28
|
-
"inquirer": "^
|
|
29
|
-
"
|
|
30
|
-
"
|
|
31
|
-
"vitest": "^1.0.1"
|
|
28
|
+
"inquirer": "^12.4.1",
|
|
29
|
+
"jsdom": "^26.0.0",
|
|
30
|
+
"vitest": "^3.0.5"
|
|
32
31
|
}
|
|
33
32
|
}
|
package/shared.config.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as path from 'node:path';
|
|
2
|
-
import { createRequire } from
|
|
2
|
+
import { createRequire } from 'node:module';
|
|
3
3
|
import { defineConfig, configDefaults, mergeConfig } from 'vitest/config';
|
|
4
4
|
import type { UserConfig } from 'vite';
|
|
5
5
|
|
|
@@ -11,8 +11,8 @@ import react from '@vitejs/plugin-react-swc';
|
|
|
11
11
|
* https://github.com/vuejs/core/issues/8303
|
|
12
12
|
* to fix error: ReferenceError: __name is not defined
|
|
13
13
|
*/
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
const __defProp = Object.defineProperty;
|
|
15
|
+
const __name = (target: any, value: any) => __defProp(target, 'name', { value, configurable: true });
|
|
16
16
|
globalThis.__name = globalThis.__name || __name;
|
|
17
17
|
|
|
18
18
|
// 当库里同时含有vue和react,vue的jsx要含前缀vue
|
|
@@ -22,10 +22,10 @@ const getViteConfig = () => {
|
|
|
22
22
|
if (useVue && useReact) {
|
|
23
23
|
return defineConfig({ plugins: [vue(), vueJSX({ include: /\.vue\.[jt]sx$/ }), react()] });
|
|
24
24
|
}
|
|
25
|
-
return useVue
|
|
26
|
-
? defineConfig({ plugins: [vue(), vueJSX()] })
|
|
25
|
+
return useVue
|
|
26
|
+
? defineConfig({ plugins: [vue(), vueJSX()] })
|
|
27
27
|
: useReact
|
|
28
|
-
? defineConfig({ plugins: [react()] })
|
|
28
|
+
? defineConfig({ plugins: [react()] })
|
|
29
29
|
: {};
|
|
30
30
|
};
|
|
31
31
|
const cwd = process.cwd();
|
|
@@ -41,16 +41,16 @@ const TEST_PATTEN = `**/*.{test,spec}.[jt]s?(x)`;
|
|
|
41
41
|
const COLLECT_PATTEN = `**/*.{[jt]s?(x),vue}`;
|
|
42
42
|
|
|
43
43
|
if (workspace) {
|
|
44
|
-
|
|
44
|
+
const prefixDir = `${workspace}/${packageFolderName || '*'}`;
|
|
45
45
|
tests.push(`${prefixDir}/__tests__/${TEST_PATTEN}`);
|
|
46
46
|
collects.push(`${prefixDir}/src/${COLLECT_PATTEN}`);
|
|
47
47
|
|
|
48
48
|
if (packageFolderName === '*') {
|
|
49
49
|
Object.keys(subpackagesMap).forEach((packageFolderName$: string) => {
|
|
50
|
-
|
|
50
|
+
const subpackages = subpackagesMap[packageFolderName$];
|
|
51
51
|
if (subpackages.length) {
|
|
52
|
-
|
|
53
|
-
|
|
52
|
+
const prefixDir$ = `${workspace}/${packageFolderName$}`;
|
|
53
|
+
const subpackagesPatten = `{${subpackages.join(',')},}`;
|
|
54
54
|
|
|
55
55
|
tests.push(`${prefixDir$}/${subpackagesPatten}/__tests__/${TEST_PATTEN}`);
|
|
56
56
|
collects.push(`${prefixDir$}/${subpackagesPatten}/${COLLECT_PATTEN}`);
|
|
@@ -65,8 +65,8 @@ if (workspace) {
|
|
|
65
65
|
tests.push(`${prefixDir}/${subpackageFolderName}/__tests__/${TEST_PATTEN}`);
|
|
66
66
|
collects.push(`${prefixDir}/${subpackageFolderName}/${COLLECT_PATTEN}`);
|
|
67
67
|
} else {
|
|
68
|
-
|
|
69
|
-
|
|
68
|
+
const subpackages = subpackagesMap[packageFolderName];
|
|
69
|
+
const subpackagesPatten = `{${subpackages.join(',')},}`;
|
|
70
70
|
tests.push(`${prefixDir}/${subpackagesPatten}/__tests__/${TEST_PATTEN}`);
|
|
71
71
|
collects.push(`${prefixDir}/${subpackagesPatten}/${COLLECT_PATTEN}`);
|
|
72
72
|
collects.push(`${prefixDir}/index*.ts`);
|
|
@@ -86,27 +86,27 @@ const name = getPackageName('index');
|
|
|
86
86
|
export default mergeConfig(getViteConfig(), defineConfig({
|
|
87
87
|
resolve: workspace
|
|
88
88
|
? {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
89
|
+
alias: [
|
|
90
|
+
{
|
|
91
|
+
find: new RegExp(`^${name}$`),
|
|
92
|
+
replacement: replacement('index')
|
|
93
|
+
},
|
|
94
|
+
...Object.keys(subpackagesMap).reduce((pre, cur: string) => {
|
|
95
|
+
if (subpackagesMap[cur].length) {
|
|
96
|
+
pre.push({
|
|
97
|
+
find: new RegExp(`^${getPackageName(cur)}$`),
|
|
98
|
+
replacement: replacement(cur, true)
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
return pre;
|
|
102
|
+
}, [] as any),
|
|
103
|
+
{
|
|
104
104
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
105
|
+
find: new RegExp(`^${name}-(.*?)$`),
|
|
106
|
+
replacement: replacement('$1')
|
|
107
|
+
}
|
|
108
|
+
]
|
|
109
|
+
}
|
|
110
110
|
: {},
|
|
111
111
|
test: {
|
|
112
112
|
globals: true,
|
|
@@ -130,4 +130,3 @@ export default mergeConfig(getViteConfig(), defineConfig({
|
|
|
130
130
|
}
|
|
131
131
|
}
|
|
132
132
|
}) as UserConfig);
|
|
133
|
-
|