create-react-forge 1.0.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/README.md +109 -0
- package/dist/assembler/index.d.ts +100 -0
- package/dist/assembler/index.d.ts.map +1 -0
- package/dist/assembler/index.js +198 -0
- package/dist/assembler/index.js.map +1 -0
- package/dist/assembler/merger.d.ts +14 -0
- package/dist/assembler/merger.d.ts.map +1 -0
- package/dist/assembler/merger.js +58 -0
- package/dist/assembler/merger.js.map +1 -0
- package/dist/cli/index.d.ts +57 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +110 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/parser.d.ts +3 -0
- package/dist/cli/parser.d.ts.map +1 -0
- package/dist/cli/parser.js +50 -0
- package/dist/cli/parser.js.map +1 -0
- package/dist/cli/prompts.d.ts +24 -0
- package/dist/cli/prompts.d.ts.map +1 -0
- package/dist/cli/prompts.js +126 -0
- package/dist/cli/prompts.js.map +1 -0
- package/dist/config/builder.d.ts +42 -0
- package/dist/config/builder.d.ts.map +1 -0
- package/dist/config/builder.js +113 -0
- package/dist/config/builder.js.map +1 -0
- package/dist/config/defaults.d.ts +51 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/defaults.js +41 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/schema.d.ts +318 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +100 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/dependencies/resolver.d.ts +43 -0
- package/dist/dependencies/resolver.d.ts.map +1 -0
- package/dist/dependencies/resolver.js +117 -0
- package/dist/dependencies/resolver.js.map +1 -0
- package/dist/docs/architecture-generator.d.ts +3 -0
- package/dist/docs/architecture-generator.d.ts.map +1 -0
- package/dist/docs/architecture-generator.js +73 -0
- package/dist/docs/architecture-generator.js.map +1 -0
- package/dist/docs/index.d.ts +2 -0
- package/dist/docs/index.d.ts.map +1 -0
- package/dist/docs/index.js +2 -0
- package/dist/docs/index.js.map +1 -0
- package/dist/generator/index.d.ts +41 -0
- package/dist/generator/index.d.ts.map +1 -0
- package/dist/generator/index.js +201 -0
- package/dist/generator/index.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/lifecycle/index.d.ts +2 -0
- package/dist/lifecycle/index.d.ts.map +1 -0
- package/dist/lifecycle/index.js +2 -0
- package/dist/lifecycle/index.js.map +1 -0
- package/dist/lifecycle/installer.d.ts +2 -0
- package/dist/lifecycle/installer.d.ts.map +1 -0
- package/dist/lifecycle/installer.js +14 -0
- package/dist/lifecycle/installer.js.map +1 -0
- package/dist/plugins/index.d.ts +4 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +4 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/loader.d.ts +5 -0
- package/dist/plugins/loader.d.ts.map +1 -0
- package/dist/plugins/loader.js +16 -0
- package/dist/plugins/loader.js.map +1 -0
- package/dist/plugins/manager.d.ts +9 -0
- package/dist/plugins/manager.d.ts.map +1 -0
- package/dist/plugins/manager.js +41 -0
- package/dist/plugins/manager.js.map +1 -0
- package/dist/plugins/types.d.ts +17 -0
- package/dist/plugins/types.d.ts.map +1 -0
- package/dist/plugins/types.js +2 -0
- package/dist/plugins/types.js.map +1 -0
- package/dist/templates/registry.d.ts +108 -0
- package/dist/templates/registry.d.ts.map +1 -0
- package/dist/templates/registry.js +238 -0
- package/dist/templates/registry.js.map +1 -0
- package/dist/templates/utils.d.ts +49 -0
- package/dist/templates/utils.d.ts.map +1 -0
- package/dist/templates/utils.js +103 -0
- package/dist/templates/utils.js.map +1 -0
- package/dist/testing/configurer.d.ts +29 -0
- package/dist/testing/configurer.d.ts.map +1 -0
- package/dist/testing/configurer.js +163 -0
- package/dist/testing/configurer.js.map +1 -0
- package/package.json +84 -0
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Testing configuration orchestration
|
|
3
|
+
*/
|
|
4
|
+
export class TestingConfigurer {
|
|
5
|
+
constructor(config) {
|
|
6
|
+
this.config = config;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Get unit test runner based on config and runtime
|
|
10
|
+
*/
|
|
11
|
+
getUnitTestRunner() {
|
|
12
|
+
if (!this.config.testing.enabled) {
|
|
13
|
+
throw new Error('Testing is not enabled');
|
|
14
|
+
}
|
|
15
|
+
// Vite strongly prefers Vitest
|
|
16
|
+
if (this.config.runtime === 'vite') {
|
|
17
|
+
return 'vitest';
|
|
18
|
+
}
|
|
19
|
+
// Next.js can use either, but default to Vitest
|
|
20
|
+
return this.config.testing.unit.runner || 'vitest';
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Get E2E test runner
|
|
24
|
+
*/
|
|
25
|
+
getE2ETestRunner() {
|
|
26
|
+
if (!this.config.testing.enabled || !this.config.testing.e2e.enabled) {
|
|
27
|
+
return 'none';
|
|
28
|
+
}
|
|
29
|
+
return this.config.testing.e2e.runner;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Generate test scripts for package.json
|
|
33
|
+
*/
|
|
34
|
+
generateScripts() {
|
|
35
|
+
const scripts = {};
|
|
36
|
+
if (!this.config.testing.enabled) {
|
|
37
|
+
return scripts;
|
|
38
|
+
}
|
|
39
|
+
const unitRunner = this.getUnitTestRunner();
|
|
40
|
+
if (this.config.testing.unit.enabled) {
|
|
41
|
+
if (unitRunner === 'vitest') {
|
|
42
|
+
scripts['test'] = 'vitest run';
|
|
43
|
+
scripts['test:watch'] = 'vitest';
|
|
44
|
+
scripts['test:ui'] = 'vitest --ui';
|
|
45
|
+
scripts['test:coverage'] = 'vitest run --coverage';
|
|
46
|
+
}
|
|
47
|
+
else if (unitRunner === 'jest') {
|
|
48
|
+
scripts['test'] = 'jest';
|
|
49
|
+
scripts['test:watch'] = 'jest --watch';
|
|
50
|
+
scripts['test:coverage'] = 'jest --coverage';
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
const e2eRunner = this.getE2ETestRunner();
|
|
54
|
+
if (e2eRunner !== 'none') {
|
|
55
|
+
if (e2eRunner === 'playwright') {
|
|
56
|
+
scripts['test:e2e'] = 'playwright test';
|
|
57
|
+
scripts['test:e2e:ui'] = 'playwright test --ui';
|
|
58
|
+
scripts['test:e2e:debug'] = 'playwright test --debug';
|
|
59
|
+
}
|
|
60
|
+
else if (e2eRunner === 'cypress') {
|
|
61
|
+
scripts['test:e2e'] = 'cypress open';
|
|
62
|
+
scripts['test:e2e:run'] = 'cypress run';
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return scripts;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Get test configuration files needed
|
|
69
|
+
*/
|
|
70
|
+
getConfigFiles() {
|
|
71
|
+
const files = {};
|
|
72
|
+
if (!this.config.testing.enabled) {
|
|
73
|
+
return files;
|
|
74
|
+
}
|
|
75
|
+
const unitRunner = this.getUnitTestRunner();
|
|
76
|
+
if (unitRunner === 'vitest') {
|
|
77
|
+
files['vitest.config.ts'] = this.generateVitestConfig();
|
|
78
|
+
}
|
|
79
|
+
else if (unitRunner === 'jest') {
|
|
80
|
+
files['jest.config.js'] = this.generateJestConfig();
|
|
81
|
+
}
|
|
82
|
+
const e2eRunner = this.getE2ETestRunner();
|
|
83
|
+
if (e2eRunner === 'playwright') {
|
|
84
|
+
files['playwright.config.ts'] = this.generatePlaywrightConfig();
|
|
85
|
+
}
|
|
86
|
+
else if (e2eRunner === 'cypress') {
|
|
87
|
+
files['cypress.config.ts'] = this.generateCypressConfig();
|
|
88
|
+
}
|
|
89
|
+
return files;
|
|
90
|
+
}
|
|
91
|
+
generateVitestConfig() {
|
|
92
|
+
return `import { defineConfig } from 'vitest/config';
|
|
93
|
+
import react from '@vitejs/plugin-react';
|
|
94
|
+
|
|
95
|
+
export default defineConfig({
|
|
96
|
+
plugins: [react()],
|
|
97
|
+
test: {
|
|
98
|
+
globals: true,
|
|
99
|
+
environment: 'jsdom',
|
|
100
|
+
setupFiles: ['./src/__tests__/setup.ts'],
|
|
101
|
+
coverage: {
|
|
102
|
+
provider: 'v8',
|
|
103
|
+
reporter: ['text', 'json', 'html'],
|
|
104
|
+
},
|
|
105
|
+
},
|
|
106
|
+
});
|
|
107
|
+
`;
|
|
108
|
+
}
|
|
109
|
+
generateJestConfig() {
|
|
110
|
+
return `export default {
|
|
111
|
+
preset: 'ts-jest',
|
|
112
|
+
testEnvironment: 'jsdom',
|
|
113
|
+
roots: ['<rootDir>/src'],
|
|
114
|
+
testMatch: ['**/__tests__/**/*.test.ts', '**/?(*.)+(spec|test).ts'],
|
|
115
|
+
moduleNameMapper: {
|
|
116
|
+
'^@/(.*)$': '<rootDir>/src/$1',
|
|
117
|
+
},
|
|
118
|
+
setupFilesAfterEnv: ['<rootDir>/src/__tests__/setup.ts'],
|
|
119
|
+
collectCoverageFrom: ['src/**/*.{ts,tsx}', '!src/**/*.d.ts'],
|
|
120
|
+
};
|
|
121
|
+
`;
|
|
122
|
+
}
|
|
123
|
+
generatePlaywrightConfig() {
|
|
124
|
+
return `import { defineConfig, devices } from '@playwright/test';
|
|
125
|
+
|
|
126
|
+
export default defineConfig({
|
|
127
|
+
testDir: './e2e',
|
|
128
|
+
fullyParallel: true,
|
|
129
|
+
forbidOnly: !!process.env.CI,
|
|
130
|
+
retries: process.env.CI ? 2 : 0,
|
|
131
|
+
workers: process.env.CI ? 1 : undefined,
|
|
132
|
+
reporter: 'html',
|
|
133
|
+
use: {
|
|
134
|
+
baseURL: 'http://localhost:5173',
|
|
135
|
+
},
|
|
136
|
+
webServer: {
|
|
137
|
+
command: 'npm run dev',
|
|
138
|
+
url: 'http://localhost:5173',
|
|
139
|
+
reuseExistingServer: !process.env.CI,
|
|
140
|
+
},
|
|
141
|
+
projects: [
|
|
142
|
+
{ name: 'chromium', use: { ...devices['Desktop Chrome'] } },
|
|
143
|
+
{ name: 'firefox', use: { ...devices['Desktop Firefox'] } },
|
|
144
|
+
{ name: 'webkit', use: { ...devices['Desktop Safari'] } },
|
|
145
|
+
],
|
|
146
|
+
});
|
|
147
|
+
`;
|
|
148
|
+
}
|
|
149
|
+
generateCypressConfig() {
|
|
150
|
+
return `import { defineConfig } from 'cypress';
|
|
151
|
+
|
|
152
|
+
export default defineConfig({
|
|
153
|
+
e2e: {
|
|
154
|
+
baseUrl: 'http://localhost:5173',
|
|
155
|
+
setupNodeEvents(on, config) {
|
|
156
|
+
// implement node event listeners here
|
|
157
|
+
},
|
|
158
|
+
},
|
|
159
|
+
});
|
|
160
|
+
`;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=configurer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configurer.js","sourceRoot":"","sources":["../../src/testing/configurer.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "create-react-forge",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Production-ready React CLI scaffolder with Vite/Next.js, testing as first-class citizen",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"bin": {
|
|
9
|
+
"react-setup": "dist/index.js"
|
|
10
|
+
},
|
|
11
|
+
"exports": {
|
|
12
|
+
".": {
|
|
13
|
+
"types": "./dist/index.d.ts",
|
|
14
|
+
"default": "./dist/index.js"
|
|
15
|
+
},
|
|
16
|
+
"./config": {
|
|
17
|
+
"types": "./dist/config/schema.d.ts",
|
|
18
|
+
"default": "./dist/config/schema.js"
|
|
19
|
+
},
|
|
20
|
+
"./templates": {
|
|
21
|
+
"types": "./dist/templates/registry.d.ts",
|
|
22
|
+
"default": "./dist/templates/registry.js"
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"scripts": {
|
|
26
|
+
"dev": "tsx src/index.ts",
|
|
27
|
+
"build": "tsc",
|
|
28
|
+
"test": "vitest run",
|
|
29
|
+
"test:watch": "vitest",
|
|
30
|
+
"test:ui": "vitest --ui",
|
|
31
|
+
"test:coverage": "vitest run --coverage",
|
|
32
|
+
"lint": "eslint src --ext .ts,.tsx",
|
|
33
|
+
"format": "prettier --write src",
|
|
34
|
+
"clean": "rm -rf dist"
|
|
35
|
+
},
|
|
36
|
+
"keywords": [
|
|
37
|
+
"react",
|
|
38
|
+
"cli",
|
|
39
|
+
"scaffolder",
|
|
40
|
+
"vite",
|
|
41
|
+
"nextjs",
|
|
42
|
+
"generator",
|
|
43
|
+
"setup"
|
|
44
|
+
],
|
|
45
|
+
"author": "Chirag",
|
|
46
|
+
"license": "MIT",
|
|
47
|
+
"files": [
|
|
48
|
+
"dist",
|
|
49
|
+
"README.md",
|
|
50
|
+
"LICENSE"
|
|
51
|
+
],
|
|
52
|
+
"engines": {
|
|
53
|
+
"node": ">=18.0.0"
|
|
54
|
+
},
|
|
55
|
+
"dependencies": {
|
|
56
|
+
"chalk": "^5.3.0",
|
|
57
|
+
"commander": "^11.1.0",
|
|
58
|
+
"deepmerge": "^4.3.1",
|
|
59
|
+
"detect-package-manager": "^2.0.1",
|
|
60
|
+
"ejs": "^3.1.10",
|
|
61
|
+
"execa": "^8.0.1",
|
|
62
|
+
"fs-extra": "^11.2.0",
|
|
63
|
+
"ora": "^8.0.1",
|
|
64
|
+
"zod": "^3.22.4"
|
|
65
|
+
},
|
|
66
|
+
"devDependencies": {
|
|
67
|
+
"@inquirer/prompts": "^3.3.0",
|
|
68
|
+
"@types/ejs": "^3.1.5",
|
|
69
|
+
"@types/fs-extra": "^11.0.4",
|
|
70
|
+
"@types/node": "^20.10.6",
|
|
71
|
+
"@typescript-eslint/eslint-plugin": "^6.17.0",
|
|
72
|
+
"@typescript-eslint/parser": "^6.17.0",
|
|
73
|
+
"@vitest/ui": "^1.1.1",
|
|
74
|
+
"eslint": "^8.56.0",
|
|
75
|
+
"prettier": "^3.1.1",
|
|
76
|
+
"tsx": "^4.7.0",
|
|
77
|
+
"typescript": "^5.3.3",
|
|
78
|
+
"vitest": "^1.1.1"
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
|