@stack-dev/cli 0.2.0 → 0.3.1
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/.turbo/turbo-build.log +6 -6
- package/CHANGELOG.md +17 -0
- package/dist/index.js +219 -256
- package/dist/index.mjs +219 -256
- package/package.json +6 -5
- package/src/packages/cli-app/create-cli-app.ts +9 -7
- package/src/packages/fastify-app/create-fastify-app.ts +9 -7
- package/src/packages/files/eslint-config-file-generator.ts +33 -0
- package/src/packages/files/prettier-config-file-generator.ts +14 -0
- package/src/packages/files/tsconfig-file-generator.ts +34 -0
- package/src/packages/library-package/create-library-package.ts +9 -7
- package/src/packages/react-package/styled-components-react-package/create-styled-components-react-package.ts +8 -6
- package/src/packages/react-package/unstyled-react-package/create-unstyled-react-package.ts +8 -6
- package/src/packages/vite-react-app/create-vite-react-app.ts +9 -6
- package/src/utils/workspace.ts +23 -8
- package/src/workspace/create-workspace.ts +9 -5
- package/src/workspace/eslint-config.ts +75 -0
- package/src/workspace/prettier-config.ts +45 -0
- package/src/packages/cli-app/files/eslint-config-file-generator.ts +0 -11
- package/src/packages/cli-app/files/prettier-config-file-generator.ts +0 -11
- package/src/packages/cli-app/files/tsconfig-file-generator.ts +0 -15
- package/src/packages/fastify-app/files/eslint-config-file-generator.ts +0 -11
- package/src/packages/fastify-app/files/prettier-config-file-generator.ts +0 -11
- package/src/packages/fastify-app/files/tsconfig-file-generator.ts +0 -15
- package/src/packages/library-package/files/eslint-config-file-generator.ts +0 -11
- package/src/packages/library-package/files/prettier-config-file-generator.ts +0 -11
- package/src/packages/library-package/files/tsconfig-file-generator.ts +0 -15
- package/src/packages/react-package/styled-components-react-package/files/eslint-config-file-generator.ts +0 -18
- package/src/packages/react-package/styled-components-react-package/files/prettier-config-file-generator.ts +0 -11
- package/src/packages/react-package/styled-components-react-package/files/tsconfig-file-generator.ts +0 -15
- package/src/packages/react-package/unstyled-react-package/files/eslint-config-file-generator.ts +0 -18
- package/src/packages/react-package/unstyled-react-package/files/prettier-config-file-generator.ts +0 -11
- package/src/packages/react-package/unstyled-react-package/files/tsconfig-file-generator.ts +0 -15
- package/src/packages/vite-react-app/files/eslint-config-file-generator.ts +0 -11
- package/src/packages/vite-react-app/files/prettier-config-file-generator.ts +0 -11
- package/src/packages/vite-react-app/files/tsconfig-file-generator.ts +0 -15
package/dist/index.js
CHANGED
|
@@ -28,7 +28,7 @@ var import_commander = require("commander");
|
|
|
28
28
|
var import_enquirer3 = require("enquirer");
|
|
29
29
|
|
|
30
30
|
// package.json
|
|
31
|
-
var version = "0.
|
|
31
|
+
var version = "0.3.1";
|
|
32
32
|
|
|
33
33
|
// src/package-json/package-json.ts
|
|
34
34
|
var import_core = require("@stack-dev/core");
|
|
@@ -360,8 +360,8 @@ function getKeyIndex2(s) {
|
|
|
360
360
|
// src/tsconfig/reference.ts
|
|
361
361
|
var Reference = class _Reference {
|
|
362
362
|
_path;
|
|
363
|
-
constructor(
|
|
364
|
-
this._path =
|
|
363
|
+
constructor(path18) {
|
|
364
|
+
this._path = path18;
|
|
365
365
|
}
|
|
366
366
|
get path() {
|
|
367
367
|
return this._path;
|
|
@@ -506,14 +506,26 @@ async function getWorkspaceRoot(directory = process.cwd()) {
|
|
|
506
506
|
}
|
|
507
507
|
return getWorkspaceRoot(parent);
|
|
508
508
|
}
|
|
509
|
+
async function tryGettingNamespace(directory) {
|
|
510
|
+
try {
|
|
511
|
+
const root = await getWorkspaceRoot(directory);
|
|
512
|
+
const packageJson = await getDirectoryPackageJson(root);
|
|
513
|
+
const result = packageJson.name;
|
|
514
|
+
if (!result) {
|
|
515
|
+
return void 0;
|
|
516
|
+
} else {
|
|
517
|
+
return `@${result}`;
|
|
518
|
+
}
|
|
519
|
+
} catch (e) {
|
|
520
|
+
return void 0;
|
|
521
|
+
}
|
|
522
|
+
}
|
|
509
523
|
async function getNamespace(directory = process.cwd()) {
|
|
510
|
-
const
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
if (!result) {
|
|
514
|
-
throw new Error("Missing name.");
|
|
524
|
+
const namespace = await tryGettingNamespace(directory);
|
|
525
|
+
if (!namespace) {
|
|
526
|
+
throw new Error("Missing namespace.");
|
|
515
527
|
}
|
|
516
|
-
return
|
|
528
|
+
return namespace;
|
|
517
529
|
}
|
|
518
530
|
|
|
519
531
|
// src/link-packages.ts
|
|
@@ -611,15 +623,61 @@ var FileGeneratorImp = class {
|
|
|
611
623
|
}
|
|
612
624
|
};
|
|
613
625
|
|
|
614
|
-
// src/packages/
|
|
615
|
-
|
|
626
|
+
// src/packages/files/eslint-config-file-generator.ts
|
|
627
|
+
function makeEslintConfigGenerator(filepath, namespace) {
|
|
628
|
+
const ESLINT_CONFIG = `import base from '${namespace}/eslint-config/base.mjs';
|
|
616
629
|
|
|
617
630
|
export default [...base, { ignores: ['**/dist/**'] }];
|
|
618
631
|
`;
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
632
|
+
return new FileGeneratorImp(filepath, ESLINT_CONFIG);
|
|
633
|
+
}
|
|
634
|
+
function makeReactEslintConfigGenerator(filepath, namespace) {
|
|
635
|
+
const ESLINT_CONFIG = `import base from '${namespace}/eslint-config/base.mjs';
|
|
636
|
+
import react from '${namespace}/eslint-config/react.mjs';
|
|
637
|
+
|
|
638
|
+
export default [
|
|
639
|
+
...base,
|
|
640
|
+
...react,
|
|
641
|
+
{
|
|
642
|
+
ignores: ['**/dist/**', '**/coverage/**']
|
|
643
|
+
}
|
|
644
|
+
];
|
|
645
|
+
`;
|
|
646
|
+
return new FileGeneratorImp(filepath, ESLINT_CONFIG);
|
|
647
|
+
}
|
|
648
|
+
|
|
649
|
+
// src/packages/files/prettier-config-file-generator.ts
|
|
650
|
+
function makePrettierConfigFileGenerator(filepath, namespace) {
|
|
651
|
+
const PRETTIER_CONFIG = `import base from '${namespace}/prettier-config/base.mjs';
|
|
652
|
+
|
|
653
|
+
export default base;
|
|
654
|
+
`;
|
|
655
|
+
return new FileGeneratorImp(filepath, PRETTIER_CONFIG);
|
|
656
|
+
}
|
|
657
|
+
|
|
658
|
+
// src/packages/files/tsconfig-file-generator.ts
|
|
659
|
+
function makeBaseTsconfigFileGenerator(filepath, namespace) {
|
|
660
|
+
const TSCONFIG = `{
|
|
661
|
+
"extends": "${namespace}/typescript-config/tsconfig.base.json",
|
|
662
|
+
"compilerOptions": {
|
|
663
|
+
"outDir": "dist"
|
|
664
|
+
},
|
|
665
|
+
"include": ["src"]
|
|
666
|
+
}
|
|
667
|
+
`;
|
|
668
|
+
return new FileGeneratorImp(filepath, TSCONFIG);
|
|
669
|
+
}
|
|
670
|
+
function makeReactTsconfigFileGenerator(filepath, namespace) {
|
|
671
|
+
const TSCONFIG = `{
|
|
672
|
+
"extends": "${namespace}/typescript-config/tsconfig.react.json",
|
|
673
|
+
"compilerOptions": {
|
|
674
|
+
"outDir": "dist"
|
|
675
|
+
},
|
|
676
|
+
"include": ["src"]
|
|
677
|
+
}
|
|
678
|
+
`;
|
|
679
|
+
return new FileGeneratorImp(filepath, TSCONFIG);
|
|
680
|
+
}
|
|
623
681
|
|
|
624
682
|
// src/packages/cli-app/files/index-file-generator.ts
|
|
625
683
|
var INDEX = `import { Command } from "commander";;
|
|
@@ -644,30 +702,6 @@ program.command('split')
|
|
|
644
702
|
program.parse();`;
|
|
645
703
|
var INDEX_FILE_GENERATOR = new FileGeneratorImp("src/index.ts", INDEX);
|
|
646
704
|
|
|
647
|
-
// src/packages/cli-app/files/prettier-config-file-generator.ts
|
|
648
|
-
var PRETTIER_CONFIG = `import base from '@stack-dev/prettier-config/base.mjs';
|
|
649
|
-
|
|
650
|
-
export default base;
|
|
651
|
-
`;
|
|
652
|
-
var PRETTIER_CONFIG_FILE_GENERATOR = new FileGeneratorImp(
|
|
653
|
-
"prettier.config.mjs",
|
|
654
|
-
PRETTIER_CONFIG
|
|
655
|
-
);
|
|
656
|
-
|
|
657
|
-
// src/packages/cli-app/files/tsconfig-file-generator.ts
|
|
658
|
-
var TSCONFIG = `{
|
|
659
|
-
"extends": "@stack-dev/typescript-config/tsconfig.base.json",
|
|
660
|
-
"compilerOptions": {
|
|
661
|
-
"outDir": "dist"
|
|
662
|
-
},
|
|
663
|
-
"include": ["src"]
|
|
664
|
-
}
|
|
665
|
-
`;
|
|
666
|
-
var TSCONFIG_FILE_GENERATOR = new FileGeneratorImp(
|
|
667
|
-
"tsconfig.json",
|
|
668
|
-
TSCONFIG
|
|
669
|
-
);
|
|
670
|
-
|
|
671
705
|
// src/packages/cli-app/files/tsup-file-generator.ts
|
|
672
706
|
var TSUP = `import { defineConfig } from "tsup";
|
|
673
707
|
|
|
@@ -717,10 +751,10 @@ async function createCliApp(name) {
|
|
|
717
751
|
makeAppPackageGenerator(packageName, namespace),
|
|
718
752
|
[
|
|
719
753
|
INDEX_FILE_GENERATOR,
|
|
720
|
-
|
|
754
|
+
makeBaseTsconfigFileGenerator("tsconfig.json", namespace),
|
|
721
755
|
TSUP_FILE_GENERATOR,
|
|
722
|
-
|
|
723
|
-
|
|
756
|
+
makePrettierConfigFileGenerator("prettier.config.mjs", namespace),
|
|
757
|
+
makeEslintConfigGenerator("eslint.config.mjs", namespace),
|
|
724
758
|
VITEST_CONFIG_FILE_GENERATOR
|
|
725
759
|
]
|
|
726
760
|
);
|
|
@@ -750,8 +784,10 @@ function makeAppPackageGenerator(packageName, namespace) {
|
|
|
750
784
|
type: "module",
|
|
751
785
|
scripts: {
|
|
752
786
|
dev: "tsx watch src/index.ts",
|
|
753
|
-
|
|
787
|
+
prebuild: "pnpm check-types",
|
|
788
|
+
build: "tsup",
|
|
754
789
|
start: "node dist/index.mjs",
|
|
790
|
+
"check-types": "tsc --noEmit",
|
|
755
791
|
lint: "eslint .",
|
|
756
792
|
format: "prettier . --write",
|
|
757
793
|
test: "vitest run",
|
|
@@ -765,16 +801,6 @@ function makeAppPackageGenerator(packageName, namespace) {
|
|
|
765
801
|
// src/packages/fastify-app/create-fastify-app.ts
|
|
766
802
|
var import_path3 = __toESM(require("path"));
|
|
767
803
|
|
|
768
|
-
// src/packages/fastify-app/files/eslint-config-file-generator.ts
|
|
769
|
-
var ESLINT_CONFIG2 = `import base from '@stack-dev/eslint-config/base.mjs';
|
|
770
|
-
|
|
771
|
-
export default [...base, { ignores: ['**/dist/**'] }];
|
|
772
|
-
`;
|
|
773
|
-
var ESLINT_CONFIG_FILE_GENERATOR2 = new FileGeneratorImp(
|
|
774
|
-
"eslint.config.mjs",
|
|
775
|
-
ESLINT_CONFIG2
|
|
776
|
-
);
|
|
777
|
-
|
|
778
804
|
// src/packages/fastify-app/files/index-file-generator.ts
|
|
779
805
|
var INDEX2 = `import Fastify from "fastify";
|
|
780
806
|
import fastifySwagger from "@fastify/swagger";
|
|
@@ -918,30 +944,6 @@ start();
|
|
|
918
944
|
`;
|
|
919
945
|
var INDEX_FILE_GENERATOR2 = new FileGeneratorImp("src/index.ts", INDEX2);
|
|
920
946
|
|
|
921
|
-
// src/packages/fastify-app/files/prettier-config-file-generator.ts
|
|
922
|
-
var PRETTIER_CONFIG2 = `import base from '@stack-dev/prettier-config/base.mjs';
|
|
923
|
-
|
|
924
|
-
export default base;
|
|
925
|
-
`;
|
|
926
|
-
var PRETTIER_CONFIG_FILE_GENERATOR2 = new FileGeneratorImp(
|
|
927
|
-
"prettier.config.mjs",
|
|
928
|
-
PRETTIER_CONFIG2
|
|
929
|
-
);
|
|
930
|
-
|
|
931
|
-
// src/packages/fastify-app/files/tsconfig-file-generator.ts
|
|
932
|
-
var TSCONFIG2 = `{
|
|
933
|
-
"extends": "@stack-dev/typescript-config/tsconfig.base.json",
|
|
934
|
-
"compilerOptions": {
|
|
935
|
-
"outDir": "dist"
|
|
936
|
-
},
|
|
937
|
-
"include": ["src"]
|
|
938
|
-
}
|
|
939
|
-
`;
|
|
940
|
-
var TSCONFIG_FILE_GENERATOR2 = new FileGeneratorImp(
|
|
941
|
-
"tsconfig.json",
|
|
942
|
-
TSCONFIG2
|
|
943
|
-
);
|
|
944
|
-
|
|
945
947
|
// src/packages/fastify-app/files/tsup-file-generator.ts
|
|
946
948
|
var TSUP2 = `import { defineConfig } from "tsup";
|
|
947
949
|
|
|
@@ -991,10 +993,10 @@ async function createFastifyApp(name) {
|
|
|
991
993
|
makeAppPackageGenerator2(packageName, namespace),
|
|
992
994
|
[
|
|
993
995
|
INDEX_FILE_GENERATOR2,
|
|
994
|
-
|
|
996
|
+
makeBaseTsconfigFileGenerator("tsconfig.json", namespace),
|
|
995
997
|
TSUP_FILE_GENERATOR2,
|
|
996
|
-
|
|
997
|
-
|
|
998
|
+
makePrettierConfigFileGenerator("prettier.config.mjs", namespace),
|
|
999
|
+
makeEslintConfigGenerator("eslint.config.mjs", namespace),
|
|
998
1000
|
VITEST_CONFIG_FILE_GENERATOR2
|
|
999
1001
|
]
|
|
1000
1002
|
);
|
|
@@ -1029,8 +1031,10 @@ function makeAppPackageGenerator2(packageName, namespace) {
|
|
|
1029
1031
|
type: "module",
|
|
1030
1032
|
scripts: {
|
|
1031
1033
|
dev: "tsx watch src/index.ts",
|
|
1032
|
-
|
|
1034
|
+
prebuild: "pnpm check-types",
|
|
1035
|
+
build: "tsup",
|
|
1033
1036
|
start: "node dist/index.mjs",
|
|
1037
|
+
"check-types": "tsc --noEmit",
|
|
1034
1038
|
lint: "eslint .",
|
|
1035
1039
|
format: "prettier . --write",
|
|
1036
1040
|
test: "vitest run",
|
|
@@ -1067,16 +1071,6 @@ var ADD_SPEC_FILE_GENERATOR = new FileGeneratorImp(
|
|
|
1067
1071
|
ADD_SPEC_TS
|
|
1068
1072
|
);
|
|
1069
1073
|
|
|
1070
|
-
// src/packages/library-package/files/eslint-config-file-generator.ts
|
|
1071
|
-
var ESLINT_CONFIG3 = `import base from '@stack-dev/eslint-config/base.mjs';
|
|
1072
|
-
|
|
1073
|
-
export default [...base, { ignores: ['**/dist/**'] }];
|
|
1074
|
-
`;
|
|
1075
|
-
var ESLINT_CONFIG_FILE_GENERATOR3 = new FileGeneratorImp(
|
|
1076
|
-
"eslint.config.mjs",
|
|
1077
|
-
ESLINT_CONFIG3
|
|
1078
|
-
);
|
|
1079
|
-
|
|
1080
1074
|
// src/packages/library-package/files/index-file-generator.ts
|
|
1081
1075
|
var INDEX_TS = `export * from './add';
|
|
1082
1076
|
`;
|
|
@@ -1085,30 +1079,6 @@ var INDEX_FILE_GENERATOR3 = new FileGeneratorImp(
|
|
|
1085
1079
|
INDEX_TS
|
|
1086
1080
|
);
|
|
1087
1081
|
|
|
1088
|
-
// src/packages/library-package/files/prettier-config-file-generator.ts
|
|
1089
|
-
var PRETTIER_CONFIG3 = `import base from '@stack-dev/prettier-config/base.mjs';
|
|
1090
|
-
|
|
1091
|
-
export default base;
|
|
1092
|
-
`;
|
|
1093
|
-
var PRETTIER_CONFIG_FILE_GENERATOR3 = new FileGeneratorImp(
|
|
1094
|
-
"prettier.config.mjs",
|
|
1095
|
-
PRETTIER_CONFIG3
|
|
1096
|
-
);
|
|
1097
|
-
|
|
1098
|
-
// src/packages/library-package/files/tsconfig-file-generator.ts
|
|
1099
|
-
var TSCONFIG3 = `{
|
|
1100
|
-
"extends": "@stack-dev/typescript-config/tsconfig.base.json",
|
|
1101
|
-
"compilerOptions": {
|
|
1102
|
-
"outDir": "dist"
|
|
1103
|
-
},
|
|
1104
|
-
"include": ["src"]
|
|
1105
|
-
}
|
|
1106
|
-
`;
|
|
1107
|
-
var TSCONFIG_FILE_GENERATOR3 = new FileGeneratorImp(
|
|
1108
|
-
"tsconfig.json",
|
|
1109
|
-
TSCONFIG3
|
|
1110
|
-
);
|
|
1111
|
-
|
|
1112
1082
|
// src/packages/library-package/files/tsup-config-file-generator.ts
|
|
1113
1083
|
var TSUP_CONFIG = `import { defineConfig } from 'tsup';
|
|
1114
1084
|
|
|
@@ -1164,9 +1134,9 @@ async function createLibraryPackage(name) {
|
|
|
1164
1134
|
ADD_FILE_GENERATOR,
|
|
1165
1135
|
ADD_SPEC_FILE_GENERATOR,
|
|
1166
1136
|
TSUP_CONFIG_FILE_GENERATOR,
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1137
|
+
makeBaseTsconfigFileGenerator("tsconfig.json", namespace),
|
|
1138
|
+
makePrettierConfigFileGenerator("prettier.config.mjs", namespace),
|
|
1139
|
+
makeEslintConfigGenerator("eslint.config.mjs", namespace),
|
|
1170
1140
|
VITEST_CONFIG_FILE_GENERATOR3
|
|
1171
1141
|
]
|
|
1172
1142
|
);
|
|
@@ -1202,8 +1172,10 @@ function makePackageGenerator(packageName, namespace) {
|
|
|
1202
1172
|
}
|
|
1203
1173
|
},
|
|
1204
1174
|
scripts: {
|
|
1175
|
+
prebuild: "pnpm check-types",
|
|
1205
1176
|
build: "tsup",
|
|
1206
|
-
|
|
1177
|
+
"check-types": "tsc --noEmit",
|
|
1178
|
+
lint: "eslint .",
|
|
1207
1179
|
format: "prettier . --write",
|
|
1208
1180
|
test: "vitest run",
|
|
1209
1181
|
"test:watch": "vitest"
|
|
@@ -1278,23 +1250,6 @@ var BUTTON_SPEC_FILE_GENERATOR = new FileGeneratorImp(
|
|
|
1278
1250
|
BUTTON_SPEC
|
|
1279
1251
|
);
|
|
1280
1252
|
|
|
1281
|
-
// src/packages/react-package/styled-components-react-package/files/eslint-config-file-generator.ts
|
|
1282
|
-
var ESLINT_CONFIG4 = `import base from '@stack-dev/eslint-config/base.mjs';
|
|
1283
|
-
import react from '@stack-dev/eslint-config/react.mjs';
|
|
1284
|
-
|
|
1285
|
-
export default [
|
|
1286
|
-
...base,
|
|
1287
|
-
...react,
|
|
1288
|
-
{
|
|
1289
|
-
ignores: ['**/dist/**', '**/coverage/**']
|
|
1290
|
-
}
|
|
1291
|
-
];
|
|
1292
|
-
`;
|
|
1293
|
-
var ESLINT_CONFIG_FILE_GENERATOR4 = new FileGeneratorImp(
|
|
1294
|
-
"eslint.config.mjs",
|
|
1295
|
-
ESLINT_CONFIG4
|
|
1296
|
-
);
|
|
1297
|
-
|
|
1298
1253
|
// src/packages/react-package/styled-components-react-package/files/index-file-generator.ts
|
|
1299
1254
|
var INDEX_TS2 = `export * from './button';
|
|
1300
1255
|
`;
|
|
@@ -1303,30 +1258,6 @@ var INDEX_FILE_GENERATOR4 = new FileGeneratorImp(
|
|
|
1303
1258
|
INDEX_TS2
|
|
1304
1259
|
);
|
|
1305
1260
|
|
|
1306
|
-
// src/packages/react-package/styled-components-react-package/files/prettier-config-file-generator.ts
|
|
1307
|
-
var PRETTIER_CONFIG4 = `import base from '@stack-dev/prettier-config/base.mjs';
|
|
1308
|
-
|
|
1309
|
-
export default base;
|
|
1310
|
-
`;
|
|
1311
|
-
var PRETTIER_CONFIG_FILE_GENERATOR4 = new FileGeneratorImp(
|
|
1312
|
-
"prettier.config.mjs",
|
|
1313
|
-
PRETTIER_CONFIG4
|
|
1314
|
-
);
|
|
1315
|
-
|
|
1316
|
-
// src/packages/react-package/styled-components-react-package/files/tsconfig-file-generator.ts
|
|
1317
|
-
var TSCONFIG4 = `{
|
|
1318
|
-
"extends": "@stack-dev/typescript-config/tsconfig.react.json",
|
|
1319
|
-
"compilerOptions": {
|
|
1320
|
-
"outDir": "dist"
|
|
1321
|
-
},
|
|
1322
|
-
"include": ["src"]
|
|
1323
|
-
}
|
|
1324
|
-
`;
|
|
1325
|
-
var TSCONFIG_FILE_GENERATOR4 = new FileGeneratorImp(
|
|
1326
|
-
"tsconfig.json",
|
|
1327
|
-
TSCONFIG4
|
|
1328
|
-
);
|
|
1329
|
-
|
|
1330
1261
|
// src/packages/react-package/styled-components-react-package/files/tsup-config-file-generator.ts
|
|
1331
1262
|
var TSUP_CONFIG2 = `import { defineConfig } from 'tsup';
|
|
1332
1263
|
|
|
@@ -1384,9 +1315,9 @@ async function createStyledComponentsReactPackage(name) {
|
|
|
1384
1315
|
BUTTON_FILE_GENERATOR,
|
|
1385
1316
|
BUTTON_SPEC_FILE_GENERATOR,
|
|
1386
1317
|
TSUP_CONFIG_FILE_GENERATOR2,
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1318
|
+
makeReactTsconfigFileGenerator("tsconfig.json", namespace),
|
|
1319
|
+
makePrettierConfigFileGenerator("prettier.config.mjs", namespace),
|
|
1320
|
+
makeReactEslintConfigGenerator("eslint.config.mjs", namespace),
|
|
1390
1321
|
VITEST_CONFIG_FILE_GENERATOR4
|
|
1391
1322
|
]
|
|
1392
1323
|
);
|
|
@@ -1445,9 +1376,11 @@ function makePackageGenerator2(packageName, namespace) {
|
|
|
1445
1376
|
// Removed './index.css' as it's no longer produced by Styled Components
|
|
1446
1377
|
},
|
|
1447
1378
|
scripts: {
|
|
1379
|
+
prebuild: "pnpm check-types",
|
|
1448
1380
|
build: "tsup",
|
|
1449
1381
|
dev: "tsup --watch",
|
|
1450
1382
|
// Helpful for local lib dev
|
|
1383
|
+
"check-types": "tsc --noEmit",
|
|
1451
1384
|
lint: "eslint .",
|
|
1452
1385
|
format: "prettier . --write",
|
|
1453
1386
|
test: "vitest run",
|
|
@@ -1497,23 +1430,6 @@ var BUTTON_SPEC_FILE_GENERATOR2 = new FileGeneratorImp(
|
|
|
1497
1430
|
BUTTON_SPEC2
|
|
1498
1431
|
);
|
|
1499
1432
|
|
|
1500
|
-
// src/packages/react-package/unstyled-react-package/files/eslint-config-file-generator.ts
|
|
1501
|
-
var ESLINT_CONFIG5 = `import base from '@stack-dev/eslint-config/base.mjs';
|
|
1502
|
-
import react from '@stack-dev/eslint-config/react.mjs';
|
|
1503
|
-
|
|
1504
|
-
export default [
|
|
1505
|
-
...base,
|
|
1506
|
-
...react,
|
|
1507
|
-
{
|
|
1508
|
-
ignores: ['**/dist/**', '**/coverage/**']
|
|
1509
|
-
}
|
|
1510
|
-
];
|
|
1511
|
-
`;
|
|
1512
|
-
var ESLINT_CONFIG_FILE_GENERATOR5 = new FileGeneratorImp(
|
|
1513
|
-
"eslint.config.mjs",
|
|
1514
|
-
ESLINT_CONFIG5
|
|
1515
|
-
);
|
|
1516
|
-
|
|
1517
1433
|
// src/packages/react-package/unstyled-react-package/files/index-file-generator.ts
|
|
1518
1434
|
var INDEX_TS3 = `export * from './button';
|
|
1519
1435
|
`;
|
|
@@ -1522,30 +1438,6 @@ var INDEX_FILE_GENERATOR5 = new FileGeneratorImp(
|
|
|
1522
1438
|
INDEX_TS3
|
|
1523
1439
|
);
|
|
1524
1440
|
|
|
1525
|
-
// src/packages/react-package/unstyled-react-package/files/prettier-config-file-generator.ts
|
|
1526
|
-
var PRETTIER_CONFIG5 = `import base from '@stack-dev/prettier-config/base.mjs';
|
|
1527
|
-
|
|
1528
|
-
export default base;
|
|
1529
|
-
`;
|
|
1530
|
-
var PRETTIER_CONFIG_FILE_GENERATOR5 = new FileGeneratorImp(
|
|
1531
|
-
"prettier.config.mjs",
|
|
1532
|
-
PRETTIER_CONFIG5
|
|
1533
|
-
);
|
|
1534
|
-
|
|
1535
|
-
// src/packages/react-package/unstyled-react-package/files/tsconfig-file-generator.ts
|
|
1536
|
-
var TSCONFIG5 = `{
|
|
1537
|
-
"extends": "@stack-dev/typescript-config/tsconfig.react.json",
|
|
1538
|
-
"compilerOptions": {
|
|
1539
|
-
"outDir": "dist"
|
|
1540
|
-
},
|
|
1541
|
-
"include": ["src"]
|
|
1542
|
-
}
|
|
1543
|
-
`;
|
|
1544
|
-
var TSCONFIG_FILE_GENERATOR5 = new FileGeneratorImp(
|
|
1545
|
-
"tsconfig.json",
|
|
1546
|
-
TSCONFIG5
|
|
1547
|
-
);
|
|
1548
|
-
|
|
1549
1441
|
// src/packages/react-package/unstyled-react-package/files/tsup-config-file-generator.ts
|
|
1550
1442
|
var TSUP_CONFIG3 = `import { defineConfig } from 'tsup';
|
|
1551
1443
|
|
|
@@ -1603,9 +1495,9 @@ async function createUnstyledReactPackage(name) {
|
|
|
1603
1495
|
BUTTON_FILE_GENERATOR2,
|
|
1604
1496
|
BUTTON_SPEC_FILE_GENERATOR2,
|
|
1605
1497
|
TSUP_CONFIG_FILE_GENERATOR3,
|
|
1606
|
-
|
|
1607
|
-
|
|
1608
|
-
|
|
1498
|
+
makeReactTsconfigFileGenerator("tsconfig.json", namespace),
|
|
1499
|
+
makePrettierConfigFileGenerator("prettier.config.mjs", namespace),
|
|
1500
|
+
makeReactEslintConfigGenerator("eslint.config.mjs", namespace),
|
|
1609
1501
|
VITEST_CONFIG_FILE_GENERATOR5
|
|
1610
1502
|
]
|
|
1611
1503
|
);
|
|
@@ -1660,9 +1552,11 @@ function makePackageGenerator3(packageName, namespace) {
|
|
|
1660
1552
|
// Removed './index.css' as it's no longer produced by Styled Components
|
|
1661
1553
|
},
|
|
1662
1554
|
scripts: {
|
|
1555
|
+
prebuild: "pnpm check-types",
|
|
1663
1556
|
build: "tsup",
|
|
1664
1557
|
dev: "tsup --watch",
|
|
1665
1558
|
// Helpful for local lib dev
|
|
1559
|
+
"check-types": "tsc --noEmit",
|
|
1666
1560
|
lint: "eslint .",
|
|
1667
1561
|
format: "prettier . --write",
|
|
1668
1562
|
test: "vitest run",
|
|
@@ -1765,40 +1659,6 @@ export function App() {
|
|
|
1765
1659
|
`;
|
|
1766
1660
|
var APP_FILE_GENERATOR = new FileGeneratorImp("src/App.tsx", APP);
|
|
1767
1661
|
|
|
1768
|
-
// src/packages/vite-react-app/files/eslint-config-file-generator.ts
|
|
1769
|
-
var ESLINT_CONFIG6 = `import base from '@stack-dev/eslint-config/base.mjs';
|
|
1770
|
-
|
|
1771
|
-
export default [...base, { ignores: ['**/dist/**'] }];
|
|
1772
|
-
`;
|
|
1773
|
-
var ESLINT_CONFIG_FILE_GENERATOR6 = new FileGeneratorImp(
|
|
1774
|
-
"eslint.config.mjs",
|
|
1775
|
-
ESLINT_CONFIG6
|
|
1776
|
-
);
|
|
1777
|
-
|
|
1778
|
-
// src/packages/vite-react-app/files/prettier-config-file-generator.ts
|
|
1779
|
-
var PRETTIER_CONFIG6 = `import base from '@stack-dev/prettier-config/base.mjs';
|
|
1780
|
-
|
|
1781
|
-
export default base;
|
|
1782
|
-
`;
|
|
1783
|
-
var PRETTIER_CONFIG_FILE_GENERATOR6 = new FileGeneratorImp(
|
|
1784
|
-
"prettier.config.mjs",
|
|
1785
|
-
PRETTIER_CONFIG6
|
|
1786
|
-
);
|
|
1787
|
-
|
|
1788
|
-
// src/packages/vite-react-app/files/tsconfig-file-generator.ts
|
|
1789
|
-
var TSCONFIG6 = `{
|
|
1790
|
-
"extends": "@stack-dev/typescript-config/tsconfig.react.json",
|
|
1791
|
-
"compilerOptions": {
|
|
1792
|
-
"outDir": "dist"
|
|
1793
|
-
},
|
|
1794
|
-
"include": ["src"]
|
|
1795
|
-
}
|
|
1796
|
-
`;
|
|
1797
|
-
var TSCONFIG_FILE_GENERATOR6 = new FileGeneratorImp(
|
|
1798
|
-
"tsconfig.json",
|
|
1799
|
-
TSCONFIG6
|
|
1800
|
-
);
|
|
1801
|
-
|
|
1802
1662
|
// src/packages/vite-react-app/files/vitest-config-file-generator.ts
|
|
1803
1663
|
var VITEST_CONFIG6 = `import { defineConfig } from 'vitest/config';
|
|
1804
1664
|
|
|
@@ -1832,9 +1692,9 @@ async function createViteReactApp(name) {
|
|
|
1832
1692
|
INDEX_HTML_FILE_GENERATOR,
|
|
1833
1693
|
MAIN_FILE_GENERATOR,
|
|
1834
1694
|
APP_FILE_GENERATOR,
|
|
1835
|
-
|
|
1836
|
-
|
|
1837
|
-
|
|
1695
|
+
makeReactTsconfigFileGenerator("tsconfig.json", namespace),
|
|
1696
|
+
makePrettierConfigFileGenerator("prettier.config.mjs", namespace),
|
|
1697
|
+
makeReactEslintConfigGenerator("eslint.config.mjs", namespace),
|
|
1838
1698
|
VITEST_CONFIG_FILE_GENERATOR6
|
|
1839
1699
|
]
|
|
1840
1700
|
);
|
|
@@ -1868,8 +1728,11 @@ function makeAppPackageGenerator3(packageName, namespace) {
|
|
|
1868
1728
|
build: "tsc && vite build",
|
|
1869
1729
|
preview: "vite preview",
|
|
1870
1730
|
start: "pnpm run preview",
|
|
1731
|
+
"check-types": "tsc --noEmit",
|
|
1871
1732
|
lint: "eslint .",
|
|
1872
|
-
format: "prettier . --write"
|
|
1733
|
+
format: "prettier . --write",
|
|
1734
|
+
test: "vitest run",
|
|
1735
|
+
"test:watch": "vitest"
|
|
1873
1736
|
}
|
|
1874
1737
|
}
|
|
1875
1738
|
});
|
|
@@ -2075,7 +1938,105 @@ function isStyleType(s) {
|
|
|
2075
1938
|
|
|
2076
1939
|
// src/workspace/create-workspace.ts
|
|
2077
1940
|
var import_promises6 = __toESM(require("fs/promises"));
|
|
1941
|
+
var import_path10 = __toESM(require("path"));
|
|
1942
|
+
|
|
1943
|
+
// src/workspace/eslint-config.ts
|
|
1944
|
+
var import_path7 = __toESM(require("path"));
|
|
1945
|
+
async function makeEslintConfig(directory, namespace) {
|
|
1946
|
+
const packageJsonModel = new PackageJSON({
|
|
1947
|
+
name: `${namespace}/eslint-config`,
|
|
1948
|
+
peerDependencies: [
|
|
1949
|
+
new Dependency("eslint", "^9.32.0"),
|
|
1950
|
+
new Dependency("typescript", "^5.8.3")
|
|
1951
|
+
],
|
|
1952
|
+
dependencies: [
|
|
1953
|
+
new Dependency("@eslint/js", "^9.32.0"),
|
|
1954
|
+
new Dependency("eslint-plugin-react", "^7.37.5"),
|
|
1955
|
+
new Dependency("typescript-eslint", "^8.38.0")
|
|
1956
|
+
],
|
|
1957
|
+
additionalData: {
|
|
1958
|
+
version: "0.1.0",
|
|
1959
|
+
private: true
|
|
1960
|
+
}
|
|
1961
|
+
});
|
|
1962
|
+
const fullPath = import_path7.default.join(directory, "configs/eslint-config");
|
|
1963
|
+
return new PackageGenerator(
|
|
1964
|
+
fullPath,
|
|
1965
|
+
new PackageJsonGenerator(packageJsonModel, namespace),
|
|
1966
|
+
[BASE_FILE_GENERATOR, REACT_FILE_GENERATOR]
|
|
1967
|
+
);
|
|
1968
|
+
}
|
|
1969
|
+
var BASE = `import eslint from "@eslint/js";
|
|
1970
|
+
import tseslint from "typescript-eslint";
|
|
1971
|
+
|
|
1972
|
+
export default tseslint.config(
|
|
1973
|
+
eslint.configs.recommended,
|
|
1974
|
+
tseslint.configs.strict,
|
|
1975
|
+
tseslint.configs.stylistic,
|
|
1976
|
+
{
|
|
1977
|
+
rules: {
|
|
1978
|
+
"@typescript-eslint/array-type": ["error", { default: "generic" }],
|
|
1979
|
+
"@typescript-eslint/consistent-type-definitions": "off",
|
|
1980
|
+
"@typescript-eslint/class-literal-property-style": ["error", "getters"],
|
|
1981
|
+
},
|
|
1982
|
+
}
|
|
1983
|
+
);
|
|
1984
|
+
`;
|
|
1985
|
+
var BASE_FILE_GENERATOR = new FileGeneratorImp("base.mjs", BASE);
|
|
1986
|
+
var REACT = `import eslint from "@eslint/js";
|
|
1987
|
+
import pluginReact from "eslint-plugin-react";
|
|
1988
|
+
import tseslint from "typescript-eslint";
|
|
1989
|
+
|
|
1990
|
+
export default tseslint.config(
|
|
1991
|
+
eslint.configs.recommended,
|
|
1992
|
+
tseslint.configs.strict,
|
|
1993
|
+
pluginReact.configs.flat.recommended,
|
|
1994
|
+
pluginReact.configs.flat["jsx-runtime"],
|
|
1995
|
+
{
|
|
1996
|
+
settings: {
|
|
1997
|
+
react: {
|
|
1998
|
+
version: "detect",
|
|
1999
|
+
},
|
|
2000
|
+
},
|
|
2001
|
+
}
|
|
2002
|
+
);
|
|
2003
|
+
`;
|
|
2004
|
+
var REACT_FILE_GENERATOR = new FileGeneratorImp("react.mjs", REACT);
|
|
2005
|
+
|
|
2006
|
+
// src/workspace/prettier-config.ts
|
|
2078
2007
|
var import_path8 = __toESM(require("path"));
|
|
2008
|
+
async function makePrettierConfig(directory, namespace) {
|
|
2009
|
+
const packageJsonModel = new PackageJSON({
|
|
2010
|
+
name: `${namespace}/prettier-config`,
|
|
2011
|
+
peerDependencies: [new Dependency("prettier", "^3.6.2")],
|
|
2012
|
+
dependencies: [
|
|
2013
|
+
new Dependency("prettier-plugin-organize-imports", "^4.2.0")
|
|
2014
|
+
],
|
|
2015
|
+
additionalData: {
|
|
2016
|
+
version: "0.1.0",
|
|
2017
|
+
private: true
|
|
2018
|
+
}
|
|
2019
|
+
});
|
|
2020
|
+
const fullPath = import_path8.default.join(directory, "configs/prettier-config");
|
|
2021
|
+
return new PackageGenerator(
|
|
2022
|
+
fullPath,
|
|
2023
|
+
new PackageJsonGenerator(packageJsonModel, namespace),
|
|
2024
|
+
[BASE_FILE_GENERATOR2]
|
|
2025
|
+
);
|
|
2026
|
+
}
|
|
2027
|
+
var BASE2 = `/**
|
|
2028
|
+
* @see https://prettier.io/docs/configuration
|
|
2029
|
+
* @type {import("prettier").Config}
|
|
2030
|
+
*/
|
|
2031
|
+
const config = {
|
|
2032
|
+
tabWidth: 2,
|
|
2033
|
+
singleQuote: true,
|
|
2034
|
+
plugins: [import.meta.resolve("prettier-plugin-organize-imports")],
|
|
2035
|
+
};
|
|
2036
|
+
|
|
2037
|
+
export default config;
|
|
2038
|
+
`;
|
|
2039
|
+
var BASE_FILE_GENERATOR2 = new FileGeneratorImp("base.mjs", BASE2);
|
|
2079
2040
|
|
|
2080
2041
|
// src/workspace/root-package.ts
|
|
2081
2042
|
async function makeRootPackage(directory, name) {
|
|
@@ -2262,7 +2223,7 @@ vite.config.ts.timestamp-*
|
|
|
2262
2223
|
`;
|
|
2263
2224
|
|
|
2264
2225
|
// src/workspace/typescript-config.ts
|
|
2265
|
-
var
|
|
2226
|
+
var import_path9 = __toESM(require("path"));
|
|
2266
2227
|
async function makeTypescriptConfig(directory, namespace) {
|
|
2267
2228
|
const packageJsonModel = new PackageJSON({
|
|
2268
2229
|
name: `${namespace}/typescript-config`,
|
|
@@ -2273,14 +2234,14 @@ async function makeTypescriptConfig(directory, namespace) {
|
|
|
2273
2234
|
files: ["*.json"]
|
|
2274
2235
|
}
|
|
2275
2236
|
});
|
|
2276
|
-
const fullPath =
|
|
2237
|
+
const fullPath = import_path9.default.join(directory, "configs/typescript-config");
|
|
2277
2238
|
return new PackageGenerator(
|
|
2278
2239
|
fullPath,
|
|
2279
2240
|
new PackageJsonGenerator(packageJsonModel, namespace),
|
|
2280
|
-
[
|
|
2241
|
+
[BASE3, REACT2, NODE]
|
|
2281
2242
|
);
|
|
2282
2243
|
}
|
|
2283
|
-
var
|
|
2244
|
+
var BASE3 = new FileGeneratorImp(
|
|
2284
2245
|
"tsconfig.base.json",
|
|
2285
2246
|
JSON.stringify(
|
|
2286
2247
|
{
|
|
@@ -2303,7 +2264,7 @@ var BASE = new FileGeneratorImp(
|
|
|
2303
2264
|
2
|
|
2304
2265
|
)
|
|
2305
2266
|
);
|
|
2306
|
-
var
|
|
2267
|
+
var REACT2 = new FileGeneratorImp(
|
|
2307
2268
|
"tsconfig.react.json",
|
|
2308
2269
|
JSON.stringify(
|
|
2309
2270
|
{
|
|
@@ -2337,23 +2298,25 @@ var NODE = new FileGeneratorImp(
|
|
|
2337
2298
|
async function createWorkspace(name, directory) {
|
|
2338
2299
|
await validateNotInWorkspace(directory);
|
|
2339
2300
|
console.log(`\u2728 Creating workspace: @${name}`);
|
|
2340
|
-
const fullPath =
|
|
2301
|
+
const fullPath = import_path10.default.join(directory, name);
|
|
2341
2302
|
await import_promises6.default.mkdir(fullPath, { recursive: true });
|
|
2342
2303
|
const namespace = `@${name}`;
|
|
2343
2304
|
const PACKAGES = [
|
|
2344
2305
|
await makeRootPackage(fullPath, name),
|
|
2345
|
-
await makeTypescriptConfig(fullPath, namespace)
|
|
2306
|
+
await makeTypescriptConfig(fullPath, namespace),
|
|
2307
|
+
await makeEslintConfig(fullPath, namespace),
|
|
2308
|
+
await makePrettierConfig(fullPath, namespace)
|
|
2346
2309
|
];
|
|
2347
2310
|
await Promise.all(PACKAGES.map((p) => p.generate()));
|
|
2348
|
-
await import_promises6.default.mkdir(
|
|
2349
|
-
await import_promises6.default.mkdir(
|
|
2350
|
-
await import_promises6.default.mkdir(
|
|
2311
|
+
await import_promises6.default.mkdir(import_path10.default.join(fullPath, "apps"), { recursive: true });
|
|
2312
|
+
await import_promises6.default.mkdir(import_path10.default.join(fullPath, "configs"), { recursive: true });
|
|
2313
|
+
await import_promises6.default.mkdir(import_path10.default.join(fullPath, "packages"), { recursive: true });
|
|
2351
2314
|
console.log(`\u2705 Workspace created at: ${fullPath}`);
|
|
2352
2315
|
console.log("");
|
|
2353
2316
|
console.log(`Run "cd ${fullPath}" followed by "pnpm install"`);
|
|
2354
2317
|
}
|
|
2355
2318
|
async function validateNotInWorkspace(directory) {
|
|
2356
|
-
const namespace = await
|
|
2319
|
+
const namespace = await tryGettingNamespace(directory);
|
|
2357
2320
|
if (namespace !== void 0) {
|
|
2358
2321
|
throw new Error(`Currently in workspace "${namespace}".`);
|
|
2359
2322
|
}
|