@qavajs/create 0.3.0 → 0.4.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/CHANGELOG.MD +6 -0
- package/lib/install.js +26 -35
- package/package.json +7 -8
- package/src/install.ts +31 -44
package/CHANGELOG.MD
CHANGED
|
@@ -8,6 +8,12 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how
|
|
|
8
8
|
:beetle: - bugfix
|
|
9
9
|
:x: - deprecation
|
|
10
10
|
|
|
11
|
+
## [0.4.0]
|
|
12
|
+
- :rocket: updated formatters to modern syntax
|
|
13
|
+
- :rocket: added .gitignore template
|
|
14
|
+
- :rocket: migrated to @inquirer/prompts
|
|
15
|
+
- :rocket: updated wizard to support built-in po
|
|
16
|
+
|
|
11
17
|
## [0.3.0]
|
|
12
18
|
- :rocket: added @qavajs/validation as dependency
|
|
13
19
|
- :rocket: added @qavajs/steps-memory as default module
|
package/lib/install.js
CHANGED
|
@@ -35,14 +35,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
35
35
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
36
36
|
};
|
|
37
37
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
+
exports.default = install;
|
|
38
39
|
const promises_1 = require("node:fs/promises");
|
|
39
40
|
const fs_extra_1 = require("fs-extra");
|
|
40
41
|
const path_1 = require("path");
|
|
41
42
|
const yarn_install_1 = __importDefault(require("yarn-install"));
|
|
42
43
|
const deps_1 = __importStar(require("./deps"));
|
|
43
44
|
const ejs_1 = require("ejs");
|
|
44
|
-
const
|
|
45
|
-
const packs = (deps) => deps.map(({ module }) => module);
|
|
45
|
+
const prompts_1 = require("@inquirer/prompts");
|
|
46
|
+
const packs = (deps) => deps.map(({ module }) => ({ value: module }));
|
|
46
47
|
const packages = (moduleList, packageMap) => {
|
|
47
48
|
return moduleList
|
|
48
49
|
.map((module) => {
|
|
@@ -56,43 +57,32 @@ const replaceNewLines = (text) => text.replace(/(\r?\n\r?)+/g, '\n');
|
|
|
56
57
|
function install() {
|
|
57
58
|
return __awaiter(this, void 0, void 0, function* () {
|
|
58
59
|
const requiredDeps = [...deps_1.default];
|
|
59
|
-
const
|
|
60
|
-
|
|
61
|
-
{
|
|
62
|
-
type: 'list',
|
|
60
|
+
const answers = {
|
|
61
|
+
moduleSystem: yield (0, prompts_1.select)({
|
|
63
62
|
message: 'select module system you want to use:',
|
|
64
|
-
name: 'moduleSystem',
|
|
65
63
|
choices: [
|
|
66
|
-
'CommonJS',
|
|
67
|
-
'ES Modules',
|
|
68
|
-
'Typescript'
|
|
64
|
+
{ value: 'CommonJS' },
|
|
65
|
+
{ value: 'ES Modules' },
|
|
66
|
+
{ value: 'Typescript' }
|
|
69
67
|
]
|
|
70
|
-
},
|
|
71
|
-
{
|
|
72
|
-
type: 'checkbox',
|
|
68
|
+
}),
|
|
69
|
+
steps: yield (0, prompts_1.checkbox)({
|
|
73
70
|
message: 'select step packages to install:',
|
|
74
|
-
name: 'steps',
|
|
75
71
|
choices: packs(deps_1.steps)
|
|
76
|
-
},
|
|
77
|
-
{
|
|
78
|
-
type: 'checkbox',
|
|
79
|
-
message: 'select modules to install:',
|
|
80
|
-
name: 'modules',
|
|
81
|
-
choices: packs(deps_1.modules)
|
|
82
|
-
},
|
|
83
|
-
{
|
|
84
|
-
type: 'checkbox',
|
|
72
|
+
}),
|
|
73
|
+
formats: yield (0, prompts_1.checkbox)({
|
|
85
74
|
message: 'select formatters (reporters) to install:',
|
|
86
|
-
name: 'formats',
|
|
87
75
|
choices: packs(deps_1.format)
|
|
88
|
-
},
|
|
89
|
-
{
|
|
90
|
-
|
|
76
|
+
}),
|
|
77
|
+
modules: yield (0, prompts_1.checkbox)({
|
|
78
|
+
message: 'select modules to install:',
|
|
79
|
+
choices: packs(deps_1.modules)
|
|
80
|
+
}),
|
|
81
|
+
additionalModules: yield (0, prompts_1.checkbox)({
|
|
91
82
|
message: 'select additional modules to install:',
|
|
92
|
-
name: 'additionalModules',
|
|
93
83
|
choices: packs(deps_1.additionalModules)
|
|
94
|
-
}
|
|
95
|
-
|
|
84
|
+
})
|
|
85
|
+
};
|
|
96
86
|
const stepsPackages = ['@qavajs/steps-memory', ...packages(answers.steps, deps_1.steps)];
|
|
97
87
|
const formatPackages = packages(answers.formats, deps_1.format);
|
|
98
88
|
const modulePackages = packages(answers.modules, deps_1.modules);
|
|
@@ -107,6 +97,9 @@ function install() {
|
|
|
107
97
|
}
|
|
108
98
|
const isPOIncluded = isWdioIncluded || isPlaywrightIncluded;
|
|
109
99
|
const isTemplateIncluded = answers.modules.includes('template');
|
|
100
|
+
// add .gitignore
|
|
101
|
+
const gitignoreTemplate = yield (0, promises_1.readFile)((0, path_1.resolve)(__dirname, '../templates/.gitignore'), 'utf-8');
|
|
102
|
+
yield (0, promises_1.writeFile)(`./.gitignore`, gitignoreTemplate, 'utf-8');
|
|
110
103
|
// add package.json
|
|
111
104
|
const packageJsonTemplate = yield (0, promises_1.readFile)((0, path_1.resolve)(__dirname, '../templates/package.json'), 'utf-8');
|
|
112
105
|
yield (0, promises_1.writeFile)(`./package.json`, packageJsonTemplate, 'utf-8');
|
|
@@ -128,7 +121,7 @@ function install() {
|
|
|
128
121
|
modules: JSON.stringify(modulePackages),
|
|
129
122
|
format: JSON.stringify(deps_1.format
|
|
130
123
|
.filter(p => formatPackages.includes(p.packageName))
|
|
131
|
-
.map(p => p.
|
|
124
|
+
.map(p => p.out ? [p.packageName, p.out] : p.packageName)),
|
|
132
125
|
isWdioIncluded,
|
|
133
126
|
isPlaywrightIncluded,
|
|
134
127
|
isTemplateIncluded
|
|
@@ -140,12 +133,11 @@ function install() {
|
|
|
140
133
|
if (isPOIncluded) {
|
|
141
134
|
let poModule;
|
|
142
135
|
if (isWdioIncluded)
|
|
143
|
-
poModule = '@qavajs/po';
|
|
136
|
+
poModule = '@qavajs/steps-wdio/po';
|
|
144
137
|
if (isPlaywrightIncluded)
|
|
145
|
-
poModule = '@qavajs/
|
|
138
|
+
poModule = '@qavajs/steps-playwright/po';
|
|
146
139
|
if (!poModule)
|
|
147
140
|
throw new Error('No PO module');
|
|
148
|
-
requiredDeps.push(poModule);
|
|
149
141
|
const featureTemplate = yield (0, promises_1.readFile)((0, path_1.resolve)(__dirname, '../templates/feature.ejs'), 'utf-8');
|
|
150
142
|
const featureEjs = (0, ejs_1.compile)(featureTemplate);
|
|
151
143
|
const featureFile = featureEjs();
|
|
@@ -200,4 +192,3 @@ function install() {
|
|
|
200
192
|
console.log(`npx qavajs --config config.${isTypescript ? 'ts' : 'js'}`);
|
|
201
193
|
});
|
|
202
194
|
}
|
|
203
|
-
exports.default = install;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qavajs/create",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "initializer of @qavajs project",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -20,18 +20,17 @@
|
|
|
20
20
|
"author": "Alexandr Galichenko",
|
|
21
21
|
"license": "MIT",
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"
|
|
23
|
+
"@inquirer/prompts": "^5.3.2",
|
|
24
|
+
"ejs": "^3.1.10",
|
|
24
25
|
"fs-extra": "^11.2.0",
|
|
25
|
-
"
|
|
26
|
-
"typescript": "^5.4.5",
|
|
26
|
+
"typescript": "^5.5.4",
|
|
27
27
|
"yarn-install": "^1.0.0"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
30
|
"@types/ejs": "^3.1.5",
|
|
31
31
|
"@types/fs-extra": "^11.0.4",
|
|
32
|
-
"@types/
|
|
33
|
-
"@
|
|
34
|
-
"
|
|
35
|
-
"vitest": "^1.6.0"
|
|
32
|
+
"@types/node": "^20.14.11",
|
|
33
|
+
"@vitest/coverage-v8": "^2.0.4",
|
|
34
|
+
"vitest": "^2.0.4"
|
|
36
35
|
}
|
|
37
36
|
}
|
package/src/install.ts
CHANGED
|
@@ -2,20 +2,11 @@ import { readFile, writeFile } from 'node:fs/promises';
|
|
|
2
2
|
import { ensureDir } from 'fs-extra';
|
|
3
3
|
import { resolve } from 'path';
|
|
4
4
|
import yarnInstall from 'yarn-install';
|
|
5
|
-
import deps, {steps, format, modules, additionalModules, ModuleDefinition} from './deps';
|
|
5
|
+
import deps, { steps, format, modules, additionalModules, ModuleDefinition } from './deps';
|
|
6
6
|
import { compile } from 'ejs';
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
type Answers = {
|
|
10
|
-
steps: Array<string>,
|
|
11
|
-
formats: Array<string>,
|
|
12
|
-
modules: Array<string>,
|
|
13
|
-
additionalModules: Array<string>,
|
|
14
|
-
parallel: number,
|
|
15
|
-
moduleSystem: string
|
|
16
|
-
}
|
|
7
|
+
import { select, checkbox } from '@inquirer/prompts';
|
|
17
8
|
|
|
18
|
-
const packs = (deps: Array<ModuleDefinition>) => deps.map(({module}) => module);
|
|
9
|
+
const packs = (deps: Array<ModuleDefinition>) => deps.map(({module}) => ({ value: module }));
|
|
19
10
|
const packages = (moduleList: Array<string>, packageMap: Array<ModuleDefinition>): Array<string> => {
|
|
20
11
|
return moduleList
|
|
21
12
|
.map((module: string) => {
|
|
@@ -29,43 +20,33 @@ const replaceNewLines = (text: string) => text.replace(/(\r?\n\r?)+/g, '\n');
|
|
|
29
20
|
|
|
30
21
|
export default async function install(): Promise<void> {
|
|
31
22
|
const requiredDeps = [...deps];
|
|
32
|
-
|
|
33
|
-
const answers =
|
|
34
|
-
{
|
|
35
|
-
type: 'list',
|
|
23
|
+
|
|
24
|
+
const answers = {
|
|
25
|
+
moduleSystem: await select({
|
|
36
26
|
message: 'select module system you want to use:',
|
|
37
|
-
name: 'moduleSystem',
|
|
38
27
|
choices: [
|
|
39
|
-
'CommonJS',
|
|
40
|
-
'ES Modules',
|
|
41
|
-
'Typescript'
|
|
28
|
+
{ value: 'CommonJS' },
|
|
29
|
+
{ value: 'ES Modules' },
|
|
30
|
+
{ value: 'Typescript' }
|
|
42
31
|
]
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
type: 'checkbox',
|
|
32
|
+
}),
|
|
33
|
+
steps: await checkbox({
|
|
46
34
|
message: 'select step packages to install:',
|
|
47
|
-
name: 'steps',
|
|
48
35
|
choices: packs(steps)
|
|
49
|
-
},
|
|
50
|
-
{
|
|
51
|
-
type: 'checkbox',
|
|
52
|
-
message: 'select modules to install:',
|
|
53
|
-
name: 'modules',
|
|
54
|
-
choices: packs(modules)
|
|
55
|
-
},
|
|
56
|
-
{
|
|
57
|
-
type: 'checkbox',
|
|
36
|
+
}),
|
|
37
|
+
formats: await checkbox({
|
|
58
38
|
message: 'select formatters (reporters) to install:',
|
|
59
|
-
name: 'formats',
|
|
60
39
|
choices: packs(format)
|
|
61
|
-
},
|
|
62
|
-
{
|
|
63
|
-
|
|
40
|
+
}),
|
|
41
|
+
modules: await checkbox({
|
|
42
|
+
message: 'select modules to install:',
|
|
43
|
+
choices: packs(modules)
|
|
44
|
+
}),
|
|
45
|
+
additionalModules: await checkbox({
|
|
64
46
|
message: 'select additional modules to install:',
|
|
65
|
-
name: 'additionalModules',
|
|
66
47
|
choices: packs(additionalModules)
|
|
67
|
-
}
|
|
68
|
-
|
|
48
|
+
})
|
|
49
|
+
};
|
|
69
50
|
|
|
70
51
|
const stepsPackages: Array<string> = ['@qavajs/steps-memory', ...packages(answers.steps, steps)];
|
|
71
52
|
const formatPackages: Array<string> = packages(answers.formats, format);
|
|
@@ -83,6 +64,13 @@ export default async function install(): Promise<void> {
|
|
|
83
64
|
const isPOIncluded: boolean = isWdioIncluded || isPlaywrightIncluded;
|
|
84
65
|
const isTemplateIncluded: boolean = answers.modules.includes('template');
|
|
85
66
|
|
|
67
|
+
// add .gitignore
|
|
68
|
+
const gitignoreTemplate = await readFile(
|
|
69
|
+
resolve(__dirname, '../templates/.gitignore'),
|
|
70
|
+
'utf-8'
|
|
71
|
+
);
|
|
72
|
+
await writeFile(`./.gitignore`, gitignoreTemplate, 'utf-8');
|
|
73
|
+
|
|
86
74
|
// add package.json
|
|
87
75
|
const packageJsonTemplate = await readFile(
|
|
88
76
|
resolve(__dirname, '../templates/package.json'),
|
|
@@ -114,7 +102,7 @@ export default async function install(): Promise<void> {
|
|
|
114
102
|
format: JSON.stringify(
|
|
115
103
|
format
|
|
116
104
|
.filter(p => formatPackages.includes(p.packageName))
|
|
117
|
-
.map(p => p.
|
|
105
|
+
.map(p => p.out ? [p.packageName, p.out] : p.packageName)
|
|
118
106
|
),
|
|
119
107
|
isWdioIncluded,
|
|
120
108
|
isPlaywrightIncluded,
|
|
@@ -128,10 +116,9 @@ export default async function install(): Promise<void> {
|
|
|
128
116
|
|
|
129
117
|
if (isPOIncluded) {
|
|
130
118
|
let poModule: string | undefined;
|
|
131
|
-
if (isWdioIncluded) poModule = '@qavajs/po';
|
|
132
|
-
if (isPlaywrightIncluded) poModule = '@qavajs/
|
|
119
|
+
if (isWdioIncluded) poModule = '@qavajs/steps-wdio/po';
|
|
120
|
+
if (isPlaywrightIncluded) poModule = '@qavajs/steps-playwright/po';
|
|
133
121
|
if (!poModule) throw new Error('No PO module');
|
|
134
|
-
requiredDeps.push(poModule);
|
|
135
122
|
const featureTemplate: string = await readFile(
|
|
136
123
|
resolve(__dirname, '../templates/feature.ejs'),
|
|
137
124
|
'utf-8'
|