@stack-dev/cli 0.3.0 → 0.3.2
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 +14 -0
- package/LICENSE +21 -0
- package/README.md +1 -1
- package/dist/index.js +219 -256
- package/dist/index.mjs +219 -256
- package/package.json +7 -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.mjs
CHANGED
|
@@ -5,7 +5,7 @@ import { Command } from "commander";
|
|
|
5
5
|
import { prompt as prompt3 } from "enquirer";
|
|
6
6
|
|
|
7
7
|
// package.json
|
|
8
|
-
var version = "0.3.
|
|
8
|
+
var version = "0.3.2";
|
|
9
9
|
|
|
10
10
|
// src/package-json/package-json.ts
|
|
11
11
|
import { haveSameItems, sortKeys } from "@stack-dev/core";
|
|
@@ -337,8 +337,8 @@ function getKeyIndex2(s) {
|
|
|
337
337
|
// src/tsconfig/reference.ts
|
|
338
338
|
var Reference = class _Reference {
|
|
339
339
|
_path;
|
|
340
|
-
constructor(
|
|
341
|
-
this._path =
|
|
340
|
+
constructor(path18) {
|
|
341
|
+
this._path = path18;
|
|
342
342
|
}
|
|
343
343
|
get path() {
|
|
344
344
|
return this._path;
|
|
@@ -483,14 +483,26 @@ async function getWorkspaceRoot(directory = process.cwd()) {
|
|
|
483
483
|
}
|
|
484
484
|
return getWorkspaceRoot(parent);
|
|
485
485
|
}
|
|
486
|
+
async function tryGettingNamespace(directory) {
|
|
487
|
+
try {
|
|
488
|
+
const root = await getWorkspaceRoot(directory);
|
|
489
|
+
const packageJson = await getDirectoryPackageJson(root);
|
|
490
|
+
const result = packageJson.name;
|
|
491
|
+
if (!result) {
|
|
492
|
+
return void 0;
|
|
493
|
+
} else {
|
|
494
|
+
return `@${result}`;
|
|
495
|
+
}
|
|
496
|
+
} catch (e) {
|
|
497
|
+
return void 0;
|
|
498
|
+
}
|
|
499
|
+
}
|
|
486
500
|
async function getNamespace(directory = process.cwd()) {
|
|
487
|
-
const
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
if (!result) {
|
|
491
|
-
throw new Error("Missing name.");
|
|
501
|
+
const namespace = await tryGettingNamespace(directory);
|
|
502
|
+
if (!namespace) {
|
|
503
|
+
throw new Error("Missing namespace.");
|
|
492
504
|
}
|
|
493
|
-
return
|
|
505
|
+
return namespace;
|
|
494
506
|
}
|
|
495
507
|
|
|
496
508
|
// src/link-packages.ts
|
|
@@ -588,15 +600,61 @@ var FileGeneratorImp = class {
|
|
|
588
600
|
}
|
|
589
601
|
};
|
|
590
602
|
|
|
591
|
-
// src/packages/
|
|
592
|
-
|
|
603
|
+
// src/packages/files/eslint-config-file-generator.ts
|
|
604
|
+
function makeEslintConfigGenerator(filepath, namespace) {
|
|
605
|
+
const ESLINT_CONFIG = `import base from '${namespace}/eslint-config/base.mjs';
|
|
593
606
|
|
|
594
607
|
export default [...base, { ignores: ['**/dist/**'] }];
|
|
595
608
|
`;
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
609
|
+
return new FileGeneratorImp(filepath, ESLINT_CONFIG);
|
|
610
|
+
}
|
|
611
|
+
function makeReactEslintConfigGenerator(filepath, namespace) {
|
|
612
|
+
const ESLINT_CONFIG = `import base from '${namespace}/eslint-config/base.mjs';
|
|
613
|
+
import react from '${namespace}/eslint-config/react.mjs';
|
|
614
|
+
|
|
615
|
+
export default [
|
|
616
|
+
...base,
|
|
617
|
+
...react,
|
|
618
|
+
{
|
|
619
|
+
ignores: ['**/dist/**', '**/coverage/**']
|
|
620
|
+
}
|
|
621
|
+
];
|
|
622
|
+
`;
|
|
623
|
+
return new FileGeneratorImp(filepath, ESLINT_CONFIG);
|
|
624
|
+
}
|
|
625
|
+
|
|
626
|
+
// src/packages/files/prettier-config-file-generator.ts
|
|
627
|
+
function makePrettierConfigFileGenerator(filepath, namespace) {
|
|
628
|
+
const PRETTIER_CONFIG = `import base from '${namespace}/prettier-config/base.mjs';
|
|
629
|
+
|
|
630
|
+
export default base;
|
|
631
|
+
`;
|
|
632
|
+
return new FileGeneratorImp(filepath, PRETTIER_CONFIG);
|
|
633
|
+
}
|
|
634
|
+
|
|
635
|
+
// src/packages/files/tsconfig-file-generator.ts
|
|
636
|
+
function makeBaseTsconfigFileGenerator(filepath, namespace) {
|
|
637
|
+
const TSCONFIG = `{
|
|
638
|
+
"extends": "${namespace}/typescript-config/tsconfig.base.json",
|
|
639
|
+
"compilerOptions": {
|
|
640
|
+
"outDir": "dist"
|
|
641
|
+
},
|
|
642
|
+
"include": ["src"]
|
|
643
|
+
}
|
|
644
|
+
`;
|
|
645
|
+
return new FileGeneratorImp(filepath, TSCONFIG);
|
|
646
|
+
}
|
|
647
|
+
function makeReactTsconfigFileGenerator(filepath, namespace) {
|
|
648
|
+
const TSCONFIG = `{
|
|
649
|
+
"extends": "${namespace}/typescript-config/tsconfig.react.json",
|
|
650
|
+
"compilerOptions": {
|
|
651
|
+
"outDir": "dist"
|
|
652
|
+
},
|
|
653
|
+
"include": ["src"]
|
|
654
|
+
}
|
|
655
|
+
`;
|
|
656
|
+
return new FileGeneratorImp(filepath, TSCONFIG);
|
|
657
|
+
}
|
|
600
658
|
|
|
601
659
|
// src/packages/cli-app/files/index-file-generator.ts
|
|
602
660
|
var INDEX = `import { Command } from "commander";;
|
|
@@ -621,30 +679,6 @@ program.command('split')
|
|
|
621
679
|
program.parse();`;
|
|
622
680
|
var INDEX_FILE_GENERATOR = new FileGeneratorImp("src/index.ts", INDEX);
|
|
623
681
|
|
|
624
|
-
// src/packages/cli-app/files/prettier-config-file-generator.ts
|
|
625
|
-
var PRETTIER_CONFIG = `import base from '@stack-dev/prettier-config/base.mjs';
|
|
626
|
-
|
|
627
|
-
export default base;
|
|
628
|
-
`;
|
|
629
|
-
var PRETTIER_CONFIG_FILE_GENERATOR = new FileGeneratorImp(
|
|
630
|
-
"prettier.config.mjs",
|
|
631
|
-
PRETTIER_CONFIG
|
|
632
|
-
);
|
|
633
|
-
|
|
634
|
-
// src/packages/cli-app/files/tsconfig-file-generator.ts
|
|
635
|
-
var TSCONFIG = `{
|
|
636
|
-
"extends": "@stack-dev/typescript-config/tsconfig.base.json",
|
|
637
|
-
"compilerOptions": {
|
|
638
|
-
"outDir": "dist"
|
|
639
|
-
},
|
|
640
|
-
"include": ["src"]
|
|
641
|
-
}
|
|
642
|
-
`;
|
|
643
|
-
var TSCONFIG_FILE_GENERATOR = new FileGeneratorImp(
|
|
644
|
-
"tsconfig.json",
|
|
645
|
-
TSCONFIG
|
|
646
|
-
);
|
|
647
|
-
|
|
648
682
|
// src/packages/cli-app/files/tsup-file-generator.ts
|
|
649
683
|
var TSUP = `import { defineConfig } from "tsup";
|
|
650
684
|
|
|
@@ -694,10 +728,10 @@ async function createCliApp(name) {
|
|
|
694
728
|
makeAppPackageGenerator(packageName, namespace),
|
|
695
729
|
[
|
|
696
730
|
INDEX_FILE_GENERATOR,
|
|
697
|
-
|
|
731
|
+
makeBaseTsconfigFileGenerator("tsconfig.json", namespace),
|
|
698
732
|
TSUP_FILE_GENERATOR,
|
|
699
|
-
|
|
700
|
-
|
|
733
|
+
makePrettierConfigFileGenerator("prettier.config.mjs", namespace),
|
|
734
|
+
makeEslintConfigGenerator("eslint.config.mjs", namespace),
|
|
701
735
|
VITEST_CONFIG_FILE_GENERATOR
|
|
702
736
|
]
|
|
703
737
|
);
|
|
@@ -727,8 +761,10 @@ function makeAppPackageGenerator(packageName, namespace) {
|
|
|
727
761
|
type: "module",
|
|
728
762
|
scripts: {
|
|
729
763
|
dev: "tsx watch src/index.ts",
|
|
730
|
-
|
|
764
|
+
prebuild: "pnpm check-types",
|
|
765
|
+
build: "tsup",
|
|
731
766
|
start: "node dist/index.mjs",
|
|
767
|
+
"check-types": "tsc --noEmit",
|
|
732
768
|
lint: "eslint .",
|
|
733
769
|
format: "prettier . --write",
|
|
734
770
|
test: "vitest run",
|
|
@@ -742,16 +778,6 @@ function makeAppPackageGenerator(packageName, namespace) {
|
|
|
742
778
|
// src/packages/fastify-app/create-fastify-app.ts
|
|
743
779
|
import path6 from "path";
|
|
744
780
|
|
|
745
|
-
// src/packages/fastify-app/files/eslint-config-file-generator.ts
|
|
746
|
-
var ESLINT_CONFIG2 = `import base from '@stack-dev/eslint-config/base.mjs';
|
|
747
|
-
|
|
748
|
-
export default [...base, { ignores: ['**/dist/**'] }];
|
|
749
|
-
`;
|
|
750
|
-
var ESLINT_CONFIG_FILE_GENERATOR2 = new FileGeneratorImp(
|
|
751
|
-
"eslint.config.mjs",
|
|
752
|
-
ESLINT_CONFIG2
|
|
753
|
-
);
|
|
754
|
-
|
|
755
781
|
// src/packages/fastify-app/files/index-file-generator.ts
|
|
756
782
|
var INDEX2 = `import Fastify from "fastify";
|
|
757
783
|
import fastifySwagger from "@fastify/swagger";
|
|
@@ -895,30 +921,6 @@ start();
|
|
|
895
921
|
`;
|
|
896
922
|
var INDEX_FILE_GENERATOR2 = new FileGeneratorImp("src/index.ts", INDEX2);
|
|
897
923
|
|
|
898
|
-
// src/packages/fastify-app/files/prettier-config-file-generator.ts
|
|
899
|
-
var PRETTIER_CONFIG2 = `import base from '@stack-dev/prettier-config/base.mjs';
|
|
900
|
-
|
|
901
|
-
export default base;
|
|
902
|
-
`;
|
|
903
|
-
var PRETTIER_CONFIG_FILE_GENERATOR2 = new FileGeneratorImp(
|
|
904
|
-
"prettier.config.mjs",
|
|
905
|
-
PRETTIER_CONFIG2
|
|
906
|
-
);
|
|
907
|
-
|
|
908
|
-
// src/packages/fastify-app/files/tsconfig-file-generator.ts
|
|
909
|
-
var TSCONFIG2 = `{
|
|
910
|
-
"extends": "@stack-dev/typescript-config/tsconfig.base.json",
|
|
911
|
-
"compilerOptions": {
|
|
912
|
-
"outDir": "dist"
|
|
913
|
-
},
|
|
914
|
-
"include": ["src"]
|
|
915
|
-
}
|
|
916
|
-
`;
|
|
917
|
-
var TSCONFIG_FILE_GENERATOR2 = new FileGeneratorImp(
|
|
918
|
-
"tsconfig.json",
|
|
919
|
-
TSCONFIG2
|
|
920
|
-
);
|
|
921
|
-
|
|
922
924
|
// src/packages/fastify-app/files/tsup-file-generator.ts
|
|
923
925
|
var TSUP2 = `import { defineConfig } from "tsup";
|
|
924
926
|
|
|
@@ -968,10 +970,10 @@ async function createFastifyApp(name) {
|
|
|
968
970
|
makeAppPackageGenerator2(packageName, namespace),
|
|
969
971
|
[
|
|
970
972
|
INDEX_FILE_GENERATOR2,
|
|
971
|
-
|
|
973
|
+
makeBaseTsconfigFileGenerator("tsconfig.json", namespace),
|
|
972
974
|
TSUP_FILE_GENERATOR2,
|
|
973
|
-
|
|
974
|
-
|
|
975
|
+
makePrettierConfigFileGenerator("prettier.config.mjs", namespace),
|
|
976
|
+
makeEslintConfigGenerator("eslint.config.mjs", namespace),
|
|
975
977
|
VITEST_CONFIG_FILE_GENERATOR2
|
|
976
978
|
]
|
|
977
979
|
);
|
|
@@ -1006,8 +1008,10 @@ function makeAppPackageGenerator2(packageName, namespace) {
|
|
|
1006
1008
|
type: "module",
|
|
1007
1009
|
scripts: {
|
|
1008
1010
|
dev: "tsx watch src/index.ts",
|
|
1009
|
-
|
|
1011
|
+
prebuild: "pnpm check-types",
|
|
1012
|
+
build: "tsup",
|
|
1010
1013
|
start: "node dist/index.mjs",
|
|
1014
|
+
"check-types": "tsc --noEmit",
|
|
1011
1015
|
lint: "eslint .",
|
|
1012
1016
|
format: "prettier . --write",
|
|
1013
1017
|
test: "vitest run",
|
|
@@ -1044,16 +1048,6 @@ var ADD_SPEC_FILE_GENERATOR = new FileGeneratorImp(
|
|
|
1044
1048
|
ADD_SPEC_TS
|
|
1045
1049
|
);
|
|
1046
1050
|
|
|
1047
|
-
// src/packages/library-package/files/eslint-config-file-generator.ts
|
|
1048
|
-
var ESLINT_CONFIG3 = `import base from '@stack-dev/eslint-config/base.mjs';
|
|
1049
|
-
|
|
1050
|
-
export default [...base, { ignores: ['**/dist/**'] }];
|
|
1051
|
-
`;
|
|
1052
|
-
var ESLINT_CONFIG_FILE_GENERATOR3 = new FileGeneratorImp(
|
|
1053
|
-
"eslint.config.mjs",
|
|
1054
|
-
ESLINT_CONFIG3
|
|
1055
|
-
);
|
|
1056
|
-
|
|
1057
1051
|
// src/packages/library-package/files/index-file-generator.ts
|
|
1058
1052
|
var INDEX_TS = `export * from './add';
|
|
1059
1053
|
`;
|
|
@@ -1062,30 +1056,6 @@ var INDEX_FILE_GENERATOR3 = new FileGeneratorImp(
|
|
|
1062
1056
|
INDEX_TS
|
|
1063
1057
|
);
|
|
1064
1058
|
|
|
1065
|
-
// src/packages/library-package/files/prettier-config-file-generator.ts
|
|
1066
|
-
var PRETTIER_CONFIG3 = `import base from '@stack-dev/prettier-config/base.mjs';
|
|
1067
|
-
|
|
1068
|
-
export default base;
|
|
1069
|
-
`;
|
|
1070
|
-
var PRETTIER_CONFIG_FILE_GENERATOR3 = new FileGeneratorImp(
|
|
1071
|
-
"prettier.config.mjs",
|
|
1072
|
-
PRETTIER_CONFIG3
|
|
1073
|
-
);
|
|
1074
|
-
|
|
1075
|
-
// src/packages/library-package/files/tsconfig-file-generator.ts
|
|
1076
|
-
var TSCONFIG3 = `{
|
|
1077
|
-
"extends": "@stack-dev/typescript-config/tsconfig.base.json",
|
|
1078
|
-
"compilerOptions": {
|
|
1079
|
-
"outDir": "dist"
|
|
1080
|
-
},
|
|
1081
|
-
"include": ["src"]
|
|
1082
|
-
}
|
|
1083
|
-
`;
|
|
1084
|
-
var TSCONFIG_FILE_GENERATOR3 = new FileGeneratorImp(
|
|
1085
|
-
"tsconfig.json",
|
|
1086
|
-
TSCONFIG3
|
|
1087
|
-
);
|
|
1088
|
-
|
|
1089
1059
|
// src/packages/library-package/files/tsup-config-file-generator.ts
|
|
1090
1060
|
var TSUP_CONFIG = `import { defineConfig } from 'tsup';
|
|
1091
1061
|
|
|
@@ -1141,9 +1111,9 @@ async function createLibraryPackage(name) {
|
|
|
1141
1111
|
ADD_FILE_GENERATOR,
|
|
1142
1112
|
ADD_SPEC_FILE_GENERATOR,
|
|
1143
1113
|
TSUP_CONFIG_FILE_GENERATOR,
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1114
|
+
makeBaseTsconfigFileGenerator("tsconfig.json", namespace),
|
|
1115
|
+
makePrettierConfigFileGenerator("prettier.config.mjs", namespace),
|
|
1116
|
+
makeEslintConfigGenerator("eslint.config.mjs", namespace),
|
|
1147
1117
|
VITEST_CONFIG_FILE_GENERATOR3
|
|
1148
1118
|
]
|
|
1149
1119
|
);
|
|
@@ -1179,8 +1149,10 @@ function makePackageGenerator(packageName, namespace) {
|
|
|
1179
1149
|
}
|
|
1180
1150
|
},
|
|
1181
1151
|
scripts: {
|
|
1152
|
+
prebuild: "pnpm check-types",
|
|
1182
1153
|
build: "tsup",
|
|
1183
|
-
|
|
1154
|
+
"check-types": "tsc --noEmit",
|
|
1155
|
+
lint: "eslint .",
|
|
1184
1156
|
format: "prettier . --write",
|
|
1185
1157
|
test: "vitest run",
|
|
1186
1158
|
"test:watch": "vitest"
|
|
@@ -1255,23 +1227,6 @@ var BUTTON_SPEC_FILE_GENERATOR = new FileGeneratorImp(
|
|
|
1255
1227
|
BUTTON_SPEC
|
|
1256
1228
|
);
|
|
1257
1229
|
|
|
1258
|
-
// src/packages/react-package/styled-components-react-package/files/eslint-config-file-generator.ts
|
|
1259
|
-
var ESLINT_CONFIG4 = `import base from '@stack-dev/eslint-config/base.mjs';
|
|
1260
|
-
import react from '@stack-dev/eslint-config/react.mjs';
|
|
1261
|
-
|
|
1262
|
-
export default [
|
|
1263
|
-
...base,
|
|
1264
|
-
...react,
|
|
1265
|
-
{
|
|
1266
|
-
ignores: ['**/dist/**', '**/coverage/**']
|
|
1267
|
-
}
|
|
1268
|
-
];
|
|
1269
|
-
`;
|
|
1270
|
-
var ESLINT_CONFIG_FILE_GENERATOR4 = new FileGeneratorImp(
|
|
1271
|
-
"eslint.config.mjs",
|
|
1272
|
-
ESLINT_CONFIG4
|
|
1273
|
-
);
|
|
1274
|
-
|
|
1275
1230
|
// src/packages/react-package/styled-components-react-package/files/index-file-generator.ts
|
|
1276
1231
|
var INDEX_TS2 = `export * from './button';
|
|
1277
1232
|
`;
|
|
@@ -1280,30 +1235,6 @@ var INDEX_FILE_GENERATOR4 = new FileGeneratorImp(
|
|
|
1280
1235
|
INDEX_TS2
|
|
1281
1236
|
);
|
|
1282
1237
|
|
|
1283
|
-
// src/packages/react-package/styled-components-react-package/files/prettier-config-file-generator.ts
|
|
1284
|
-
var PRETTIER_CONFIG4 = `import base from '@stack-dev/prettier-config/base.mjs';
|
|
1285
|
-
|
|
1286
|
-
export default base;
|
|
1287
|
-
`;
|
|
1288
|
-
var PRETTIER_CONFIG_FILE_GENERATOR4 = new FileGeneratorImp(
|
|
1289
|
-
"prettier.config.mjs",
|
|
1290
|
-
PRETTIER_CONFIG4
|
|
1291
|
-
);
|
|
1292
|
-
|
|
1293
|
-
// src/packages/react-package/styled-components-react-package/files/tsconfig-file-generator.ts
|
|
1294
|
-
var TSCONFIG4 = `{
|
|
1295
|
-
"extends": "@stack-dev/typescript-config/tsconfig.react.json",
|
|
1296
|
-
"compilerOptions": {
|
|
1297
|
-
"outDir": "dist"
|
|
1298
|
-
},
|
|
1299
|
-
"include": ["src"]
|
|
1300
|
-
}
|
|
1301
|
-
`;
|
|
1302
|
-
var TSCONFIG_FILE_GENERATOR4 = new FileGeneratorImp(
|
|
1303
|
-
"tsconfig.json",
|
|
1304
|
-
TSCONFIG4
|
|
1305
|
-
);
|
|
1306
|
-
|
|
1307
1238
|
// src/packages/react-package/styled-components-react-package/files/tsup-config-file-generator.ts
|
|
1308
1239
|
var TSUP_CONFIG2 = `import { defineConfig } from 'tsup';
|
|
1309
1240
|
|
|
@@ -1361,9 +1292,9 @@ async function createStyledComponentsReactPackage(name) {
|
|
|
1361
1292
|
BUTTON_FILE_GENERATOR,
|
|
1362
1293
|
BUTTON_SPEC_FILE_GENERATOR,
|
|
1363
1294
|
TSUP_CONFIG_FILE_GENERATOR2,
|
|
1364
|
-
|
|
1365
|
-
|
|
1366
|
-
|
|
1295
|
+
makeReactTsconfigFileGenerator("tsconfig.json", namespace),
|
|
1296
|
+
makePrettierConfigFileGenerator("prettier.config.mjs", namespace),
|
|
1297
|
+
makeReactEslintConfigGenerator("eslint.config.mjs", namespace),
|
|
1367
1298
|
VITEST_CONFIG_FILE_GENERATOR4
|
|
1368
1299
|
]
|
|
1369
1300
|
);
|
|
@@ -1422,9 +1353,11 @@ function makePackageGenerator2(packageName, namespace) {
|
|
|
1422
1353
|
// Removed './index.css' as it's no longer produced by Styled Components
|
|
1423
1354
|
},
|
|
1424
1355
|
scripts: {
|
|
1356
|
+
prebuild: "pnpm check-types",
|
|
1425
1357
|
build: "tsup",
|
|
1426
1358
|
dev: "tsup --watch",
|
|
1427
1359
|
// Helpful for local lib dev
|
|
1360
|
+
"check-types": "tsc --noEmit",
|
|
1428
1361
|
lint: "eslint .",
|
|
1429
1362
|
format: "prettier . --write",
|
|
1430
1363
|
test: "vitest run",
|
|
@@ -1474,23 +1407,6 @@ var BUTTON_SPEC_FILE_GENERATOR2 = new FileGeneratorImp(
|
|
|
1474
1407
|
BUTTON_SPEC2
|
|
1475
1408
|
);
|
|
1476
1409
|
|
|
1477
|
-
// src/packages/react-package/unstyled-react-package/files/eslint-config-file-generator.ts
|
|
1478
|
-
var ESLINT_CONFIG5 = `import base from '@stack-dev/eslint-config/base.mjs';
|
|
1479
|
-
import react from '@stack-dev/eslint-config/react.mjs';
|
|
1480
|
-
|
|
1481
|
-
export default [
|
|
1482
|
-
...base,
|
|
1483
|
-
...react,
|
|
1484
|
-
{
|
|
1485
|
-
ignores: ['**/dist/**', '**/coverage/**']
|
|
1486
|
-
}
|
|
1487
|
-
];
|
|
1488
|
-
`;
|
|
1489
|
-
var ESLINT_CONFIG_FILE_GENERATOR5 = new FileGeneratorImp(
|
|
1490
|
-
"eslint.config.mjs",
|
|
1491
|
-
ESLINT_CONFIG5
|
|
1492
|
-
);
|
|
1493
|
-
|
|
1494
1410
|
// src/packages/react-package/unstyled-react-package/files/index-file-generator.ts
|
|
1495
1411
|
var INDEX_TS3 = `export * from './button';
|
|
1496
1412
|
`;
|
|
@@ -1499,30 +1415,6 @@ var INDEX_FILE_GENERATOR5 = new FileGeneratorImp(
|
|
|
1499
1415
|
INDEX_TS3
|
|
1500
1416
|
);
|
|
1501
1417
|
|
|
1502
|
-
// src/packages/react-package/unstyled-react-package/files/prettier-config-file-generator.ts
|
|
1503
|
-
var PRETTIER_CONFIG5 = `import base from '@stack-dev/prettier-config/base.mjs';
|
|
1504
|
-
|
|
1505
|
-
export default base;
|
|
1506
|
-
`;
|
|
1507
|
-
var PRETTIER_CONFIG_FILE_GENERATOR5 = new FileGeneratorImp(
|
|
1508
|
-
"prettier.config.mjs",
|
|
1509
|
-
PRETTIER_CONFIG5
|
|
1510
|
-
);
|
|
1511
|
-
|
|
1512
|
-
// src/packages/react-package/unstyled-react-package/files/tsconfig-file-generator.ts
|
|
1513
|
-
var TSCONFIG5 = `{
|
|
1514
|
-
"extends": "@stack-dev/typescript-config/tsconfig.react.json",
|
|
1515
|
-
"compilerOptions": {
|
|
1516
|
-
"outDir": "dist"
|
|
1517
|
-
},
|
|
1518
|
-
"include": ["src"]
|
|
1519
|
-
}
|
|
1520
|
-
`;
|
|
1521
|
-
var TSCONFIG_FILE_GENERATOR5 = new FileGeneratorImp(
|
|
1522
|
-
"tsconfig.json",
|
|
1523
|
-
TSCONFIG5
|
|
1524
|
-
);
|
|
1525
|
-
|
|
1526
1418
|
// src/packages/react-package/unstyled-react-package/files/tsup-config-file-generator.ts
|
|
1527
1419
|
var TSUP_CONFIG3 = `import { defineConfig } from 'tsup';
|
|
1528
1420
|
|
|
@@ -1580,9 +1472,9 @@ async function createUnstyledReactPackage(name) {
|
|
|
1580
1472
|
BUTTON_FILE_GENERATOR2,
|
|
1581
1473
|
BUTTON_SPEC_FILE_GENERATOR2,
|
|
1582
1474
|
TSUP_CONFIG_FILE_GENERATOR3,
|
|
1583
|
-
|
|
1584
|
-
|
|
1585
|
-
|
|
1475
|
+
makeReactTsconfigFileGenerator("tsconfig.json", namespace),
|
|
1476
|
+
makePrettierConfigFileGenerator("prettier.config.mjs", namespace),
|
|
1477
|
+
makeReactEslintConfigGenerator("eslint.config.mjs", namespace),
|
|
1586
1478
|
VITEST_CONFIG_FILE_GENERATOR5
|
|
1587
1479
|
]
|
|
1588
1480
|
);
|
|
@@ -1637,9 +1529,11 @@ function makePackageGenerator3(packageName, namespace) {
|
|
|
1637
1529
|
// Removed './index.css' as it's no longer produced by Styled Components
|
|
1638
1530
|
},
|
|
1639
1531
|
scripts: {
|
|
1532
|
+
prebuild: "pnpm check-types",
|
|
1640
1533
|
build: "tsup",
|
|
1641
1534
|
dev: "tsup --watch",
|
|
1642
1535
|
// Helpful for local lib dev
|
|
1536
|
+
"check-types": "tsc --noEmit",
|
|
1643
1537
|
lint: "eslint .",
|
|
1644
1538
|
format: "prettier . --write",
|
|
1645
1539
|
test: "vitest run",
|
|
@@ -1742,40 +1636,6 @@ export function App() {
|
|
|
1742
1636
|
`;
|
|
1743
1637
|
var APP_FILE_GENERATOR = new FileGeneratorImp("src/App.tsx", APP);
|
|
1744
1638
|
|
|
1745
|
-
// src/packages/vite-react-app/files/eslint-config-file-generator.ts
|
|
1746
|
-
var ESLINT_CONFIG6 = `import base from '@stack-dev/eslint-config/base.mjs';
|
|
1747
|
-
|
|
1748
|
-
export default [...base, { ignores: ['**/dist/**'] }];
|
|
1749
|
-
`;
|
|
1750
|
-
var ESLINT_CONFIG_FILE_GENERATOR6 = new FileGeneratorImp(
|
|
1751
|
-
"eslint.config.mjs",
|
|
1752
|
-
ESLINT_CONFIG6
|
|
1753
|
-
);
|
|
1754
|
-
|
|
1755
|
-
// src/packages/vite-react-app/files/prettier-config-file-generator.ts
|
|
1756
|
-
var PRETTIER_CONFIG6 = `import base from '@stack-dev/prettier-config/base.mjs';
|
|
1757
|
-
|
|
1758
|
-
export default base;
|
|
1759
|
-
`;
|
|
1760
|
-
var PRETTIER_CONFIG_FILE_GENERATOR6 = new FileGeneratorImp(
|
|
1761
|
-
"prettier.config.mjs",
|
|
1762
|
-
PRETTIER_CONFIG6
|
|
1763
|
-
);
|
|
1764
|
-
|
|
1765
|
-
// src/packages/vite-react-app/files/tsconfig-file-generator.ts
|
|
1766
|
-
var TSCONFIG6 = `{
|
|
1767
|
-
"extends": "@stack-dev/typescript-config/tsconfig.react.json",
|
|
1768
|
-
"compilerOptions": {
|
|
1769
|
-
"outDir": "dist"
|
|
1770
|
-
},
|
|
1771
|
-
"include": ["src"]
|
|
1772
|
-
}
|
|
1773
|
-
`;
|
|
1774
|
-
var TSCONFIG_FILE_GENERATOR6 = new FileGeneratorImp(
|
|
1775
|
-
"tsconfig.json",
|
|
1776
|
-
TSCONFIG6
|
|
1777
|
-
);
|
|
1778
|
-
|
|
1779
1639
|
// src/packages/vite-react-app/files/vitest-config-file-generator.ts
|
|
1780
1640
|
var VITEST_CONFIG6 = `import { defineConfig } from 'vitest/config';
|
|
1781
1641
|
|
|
@@ -1809,9 +1669,9 @@ async function createViteReactApp(name) {
|
|
|
1809
1669
|
INDEX_HTML_FILE_GENERATOR,
|
|
1810
1670
|
MAIN_FILE_GENERATOR,
|
|
1811
1671
|
APP_FILE_GENERATOR,
|
|
1812
|
-
|
|
1813
|
-
|
|
1814
|
-
|
|
1672
|
+
makeReactTsconfigFileGenerator("tsconfig.json", namespace),
|
|
1673
|
+
makePrettierConfigFileGenerator("prettier.config.mjs", namespace),
|
|
1674
|
+
makeReactEslintConfigGenerator("eslint.config.mjs", namespace),
|
|
1815
1675
|
VITEST_CONFIG_FILE_GENERATOR6
|
|
1816
1676
|
]
|
|
1817
1677
|
);
|
|
@@ -1845,8 +1705,11 @@ function makeAppPackageGenerator3(packageName, namespace) {
|
|
|
1845
1705
|
build: "tsc && vite build",
|
|
1846
1706
|
preview: "vite preview",
|
|
1847
1707
|
start: "pnpm run preview",
|
|
1708
|
+
"check-types": "tsc --noEmit",
|
|
1848
1709
|
lint: "eslint .",
|
|
1849
|
-
format: "prettier . --write"
|
|
1710
|
+
format: "prettier . --write",
|
|
1711
|
+
test: "vitest run",
|
|
1712
|
+
"test:watch": "vitest"
|
|
1850
1713
|
}
|
|
1851
1714
|
}
|
|
1852
1715
|
});
|
|
@@ -2052,7 +1915,105 @@ function isStyleType(s) {
|
|
|
2052
1915
|
|
|
2053
1916
|
// src/workspace/create-workspace.ts
|
|
2054
1917
|
import fs6 from "fs/promises";
|
|
1918
|
+
import path17 from "path";
|
|
1919
|
+
|
|
1920
|
+
// src/workspace/eslint-config.ts
|
|
1921
|
+
import path14 from "path";
|
|
1922
|
+
async function makeEslintConfig(directory, namespace) {
|
|
1923
|
+
const packageJsonModel = new PackageJSON({
|
|
1924
|
+
name: `${namespace}/eslint-config`,
|
|
1925
|
+
peerDependencies: [
|
|
1926
|
+
new Dependency("eslint", "^9.32.0"),
|
|
1927
|
+
new Dependency("typescript", "^5.8.3")
|
|
1928
|
+
],
|
|
1929
|
+
dependencies: [
|
|
1930
|
+
new Dependency("@eslint/js", "^9.32.0"),
|
|
1931
|
+
new Dependency("eslint-plugin-react", "^7.37.5"),
|
|
1932
|
+
new Dependency("typescript-eslint", "^8.38.0")
|
|
1933
|
+
],
|
|
1934
|
+
additionalData: {
|
|
1935
|
+
version: "0.1.0",
|
|
1936
|
+
private: true
|
|
1937
|
+
}
|
|
1938
|
+
});
|
|
1939
|
+
const fullPath = path14.join(directory, "configs/eslint-config");
|
|
1940
|
+
return new PackageGenerator(
|
|
1941
|
+
fullPath,
|
|
1942
|
+
new PackageJsonGenerator(packageJsonModel, namespace),
|
|
1943
|
+
[BASE_FILE_GENERATOR, REACT_FILE_GENERATOR]
|
|
1944
|
+
);
|
|
1945
|
+
}
|
|
1946
|
+
var BASE = `import eslint from "@eslint/js";
|
|
1947
|
+
import tseslint from "typescript-eslint";
|
|
1948
|
+
|
|
1949
|
+
export default tseslint.config(
|
|
1950
|
+
eslint.configs.recommended,
|
|
1951
|
+
tseslint.configs.strict,
|
|
1952
|
+
tseslint.configs.stylistic,
|
|
1953
|
+
{
|
|
1954
|
+
rules: {
|
|
1955
|
+
"@typescript-eslint/array-type": ["error", { default: "generic" }],
|
|
1956
|
+
"@typescript-eslint/consistent-type-definitions": "off",
|
|
1957
|
+
"@typescript-eslint/class-literal-property-style": ["error", "getters"],
|
|
1958
|
+
},
|
|
1959
|
+
}
|
|
1960
|
+
);
|
|
1961
|
+
`;
|
|
1962
|
+
var BASE_FILE_GENERATOR = new FileGeneratorImp("base.mjs", BASE);
|
|
1963
|
+
var REACT = `import eslint from "@eslint/js";
|
|
1964
|
+
import pluginReact from "eslint-plugin-react";
|
|
1965
|
+
import tseslint from "typescript-eslint";
|
|
1966
|
+
|
|
1967
|
+
export default tseslint.config(
|
|
1968
|
+
eslint.configs.recommended,
|
|
1969
|
+
tseslint.configs.strict,
|
|
1970
|
+
pluginReact.configs.flat.recommended,
|
|
1971
|
+
pluginReact.configs.flat["jsx-runtime"],
|
|
1972
|
+
{
|
|
1973
|
+
settings: {
|
|
1974
|
+
react: {
|
|
1975
|
+
version: "detect",
|
|
1976
|
+
},
|
|
1977
|
+
},
|
|
1978
|
+
}
|
|
1979
|
+
);
|
|
1980
|
+
`;
|
|
1981
|
+
var REACT_FILE_GENERATOR = new FileGeneratorImp("react.mjs", REACT);
|
|
1982
|
+
|
|
1983
|
+
// src/workspace/prettier-config.ts
|
|
2055
1984
|
import path15 from "path";
|
|
1985
|
+
async function makePrettierConfig(directory, namespace) {
|
|
1986
|
+
const packageJsonModel = new PackageJSON({
|
|
1987
|
+
name: `${namespace}/prettier-config`,
|
|
1988
|
+
peerDependencies: [new Dependency("prettier", "^3.6.2")],
|
|
1989
|
+
dependencies: [
|
|
1990
|
+
new Dependency("prettier-plugin-organize-imports", "^4.2.0")
|
|
1991
|
+
],
|
|
1992
|
+
additionalData: {
|
|
1993
|
+
version: "0.1.0",
|
|
1994
|
+
private: true
|
|
1995
|
+
}
|
|
1996
|
+
});
|
|
1997
|
+
const fullPath = path15.join(directory, "configs/prettier-config");
|
|
1998
|
+
return new PackageGenerator(
|
|
1999
|
+
fullPath,
|
|
2000
|
+
new PackageJsonGenerator(packageJsonModel, namespace),
|
|
2001
|
+
[BASE_FILE_GENERATOR2]
|
|
2002
|
+
);
|
|
2003
|
+
}
|
|
2004
|
+
var BASE2 = `/**
|
|
2005
|
+
* @see https://prettier.io/docs/configuration
|
|
2006
|
+
* @type {import("prettier").Config}
|
|
2007
|
+
*/
|
|
2008
|
+
const config = {
|
|
2009
|
+
tabWidth: 2,
|
|
2010
|
+
singleQuote: true,
|
|
2011
|
+
plugins: [import.meta.resolve("prettier-plugin-organize-imports")],
|
|
2012
|
+
};
|
|
2013
|
+
|
|
2014
|
+
export default config;
|
|
2015
|
+
`;
|
|
2016
|
+
var BASE_FILE_GENERATOR2 = new FileGeneratorImp("base.mjs", BASE2);
|
|
2056
2017
|
|
|
2057
2018
|
// src/workspace/root-package.ts
|
|
2058
2019
|
async function makeRootPackage(directory, name) {
|
|
@@ -2239,7 +2200,7 @@ vite.config.ts.timestamp-*
|
|
|
2239
2200
|
`;
|
|
2240
2201
|
|
|
2241
2202
|
// src/workspace/typescript-config.ts
|
|
2242
|
-
import
|
|
2203
|
+
import path16 from "path";
|
|
2243
2204
|
async function makeTypescriptConfig(directory, namespace) {
|
|
2244
2205
|
const packageJsonModel = new PackageJSON({
|
|
2245
2206
|
name: `${namespace}/typescript-config`,
|
|
@@ -2250,14 +2211,14 @@ async function makeTypescriptConfig(directory, namespace) {
|
|
|
2250
2211
|
files: ["*.json"]
|
|
2251
2212
|
}
|
|
2252
2213
|
});
|
|
2253
|
-
const fullPath =
|
|
2214
|
+
const fullPath = path16.join(directory, "configs/typescript-config");
|
|
2254
2215
|
return new PackageGenerator(
|
|
2255
2216
|
fullPath,
|
|
2256
2217
|
new PackageJsonGenerator(packageJsonModel, namespace),
|
|
2257
|
-
[
|
|
2218
|
+
[BASE3, REACT2, NODE]
|
|
2258
2219
|
);
|
|
2259
2220
|
}
|
|
2260
|
-
var
|
|
2221
|
+
var BASE3 = new FileGeneratorImp(
|
|
2261
2222
|
"tsconfig.base.json",
|
|
2262
2223
|
JSON.stringify(
|
|
2263
2224
|
{
|
|
@@ -2280,7 +2241,7 @@ var BASE = new FileGeneratorImp(
|
|
|
2280
2241
|
2
|
|
2281
2242
|
)
|
|
2282
2243
|
);
|
|
2283
|
-
var
|
|
2244
|
+
var REACT2 = new FileGeneratorImp(
|
|
2284
2245
|
"tsconfig.react.json",
|
|
2285
2246
|
JSON.stringify(
|
|
2286
2247
|
{
|
|
@@ -2314,23 +2275,25 @@ var NODE = new FileGeneratorImp(
|
|
|
2314
2275
|
async function createWorkspace(name, directory) {
|
|
2315
2276
|
await validateNotInWorkspace(directory);
|
|
2316
2277
|
console.log(`\u2728 Creating workspace: @${name}`);
|
|
2317
|
-
const fullPath =
|
|
2278
|
+
const fullPath = path17.join(directory, name);
|
|
2318
2279
|
await fs6.mkdir(fullPath, { recursive: true });
|
|
2319
2280
|
const namespace = `@${name}`;
|
|
2320
2281
|
const PACKAGES = [
|
|
2321
2282
|
await makeRootPackage(fullPath, name),
|
|
2322
|
-
await makeTypescriptConfig(fullPath, namespace)
|
|
2283
|
+
await makeTypescriptConfig(fullPath, namespace),
|
|
2284
|
+
await makeEslintConfig(fullPath, namespace),
|
|
2285
|
+
await makePrettierConfig(fullPath, namespace)
|
|
2323
2286
|
];
|
|
2324
2287
|
await Promise.all(PACKAGES.map((p) => p.generate()));
|
|
2325
|
-
await fs6.mkdir(
|
|
2326
|
-
await fs6.mkdir(
|
|
2327
|
-
await fs6.mkdir(
|
|
2288
|
+
await fs6.mkdir(path17.join(fullPath, "apps"), { recursive: true });
|
|
2289
|
+
await fs6.mkdir(path17.join(fullPath, "configs"), { recursive: true });
|
|
2290
|
+
await fs6.mkdir(path17.join(fullPath, "packages"), { recursive: true });
|
|
2328
2291
|
console.log(`\u2705 Workspace created at: ${fullPath}`);
|
|
2329
2292
|
console.log("");
|
|
2330
2293
|
console.log(`Run "cd ${fullPath}" followed by "pnpm install"`);
|
|
2331
2294
|
}
|
|
2332
2295
|
async function validateNotInWorkspace(directory) {
|
|
2333
|
-
const namespace = await
|
|
2296
|
+
const namespace = await tryGettingNamespace(directory);
|
|
2334
2297
|
if (namespace !== void 0) {
|
|
2335
2298
|
throw new Error(`Currently in workspace "${namespace}".`);
|
|
2336
2299
|
}
|