@stack-dev/cli 0.1.7 → 0.3.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/.turbo/turbo-build.log +6 -6
- package/CHANGELOG.md +17 -0
- package/dist/index.js +1105 -743
- package/dist/index.mjs +1103 -741
- package/package.json +6 -5
- package/src/index.ts +11 -10
- package/src/packages/cli-app/create-cli-app.ts +74 -0
- package/src/packages/cli-app/files/eslint-config-file-generator.ts +11 -0
- package/src/packages/cli-app/files/index-file-generator.ts +24 -0
- package/src/packages/cli-app/files/prettier-config-file-generator.ts +11 -0
- package/src/packages/cli-app/files/tsconfig-file-generator.ts +15 -0
- package/src/packages/cli-app/files/tsup-file-generator.ts +20 -0
- package/src/packages/cli-app/files/vitest-config-file-generator.ts +19 -0
- package/src/packages/cli-app/index.ts +1 -0
- package/src/packages/fastify-app/create-fastify-app.ts +79 -0
- package/src/packages/fastify-app/files/eslint-config-file-generator.ts +11 -0
- package/src/packages/fastify-app/files/index-file-generator.ts +144 -0
- package/src/packages/fastify-app/files/prettier-config-file-generator.ts +11 -0
- package/src/packages/fastify-app/files/tsconfig-file-generator.ts +15 -0
- package/src/packages/fastify-app/files/tsup-file-generator.ts +20 -0
- package/src/packages/fastify-app/files/vitest-config-file-generator.ts +19 -0
- package/src/packages/fastify-app/index.ts +1 -0
- package/src/packages/index.ts +3 -0
- package/src/packages/react-package/create-react-package.ts +1 -9
- package/src/packages/react-package/styled-components-react-package/create-styled-components-react-package.ts +1 -3
- package/src/packages/react-package/{css-react-package/create-css-react-package.ts → unstyled-react-package/create-unstyled-react-package.ts} +8 -7
- package/src/packages/react-package/{css-react-package → unstyled-react-package}/files/button-file-generator.ts +2 -3
- package/src/packages/react-package/{css-react-package → unstyled-react-package}/files/button-spec-file-generator.ts +0 -10
- package/src/packages/react-package/{css-react-package → unstyled-react-package}/files/tsup-config-file-generator.ts +3 -6
- package/src/packages/vite-react-app/index.ts +1 -0
- package/src/utils/style-type.ts +1 -6
- package/src/packages/react-package/create-unstyled-react-package.ts +0 -3
- package/src/packages/react-package/css-react-package/files/button-css-module-file-generator.ts +0 -16
- /package/src/packages/react-package/{css-react-package → unstyled-react-package}/files/eslint-config-file-generator.ts +0 -0
- /package/src/packages/react-package/{css-react-package → unstyled-react-package}/files/index-file-generator.ts +0 -0
- /package/src/packages/react-package/{css-react-package → unstyled-react-package}/files/prettier-config-file-generator.ts +0 -0
- /package/src/packages/react-package/{css-react-package → unstyled-react-package}/files/tsconfig-file-generator.ts +0 -0
- /package/src/packages/react-package/{css-react-package → unstyled-react-package}/files/vitest-config-file-generator.ts +0 -0
|
@@ -3,7 +3,6 @@ import { PackageJsonGenerator } from '../../../file-generator';
|
|
|
3
3
|
import { Dependency, PackageJSON } from '../../../package-json';
|
|
4
4
|
import { PackageGenerator } from '../../../utils/package-generator';
|
|
5
5
|
import { getNamespace, getWorkspaceRoot } from '../../../utils/workspace';
|
|
6
|
-
import { BUTTON_CSS_MODULE_FILE_GENERATOR } from './files/button-css-module-file-generator';
|
|
7
6
|
import { BUTTON_FILE_GENERATOR } from './files/button-file-generator';
|
|
8
7
|
import { BUTTON_SPEC_FILE_GENERATOR } from './files/button-spec-file-generator';
|
|
9
8
|
import { ESLINT_CONFIG_FILE_GENERATOR } from './files/eslint-config-file-generator';
|
|
@@ -13,14 +12,14 @@ import { TSCONFIG_FILE_GENERATOR } from './files/tsconfig-file-generator';
|
|
|
13
12
|
import { TSUP_CONFIG_FILE_GENERATOR } from './files/tsup-config-file-generator';
|
|
14
13
|
import { VITEST_CONFIG_FILE_GENERATOR } from './files/vitest-config-file-generator';
|
|
15
14
|
|
|
16
|
-
export async function
|
|
15
|
+
export async function createUnstyledReactPackage(name: string): Promise<void> {
|
|
17
16
|
const rootDir = await getWorkspaceRoot();
|
|
18
17
|
const directory = path.join(rootDir, 'packages', name);
|
|
19
18
|
|
|
20
19
|
const namespace = await getNamespace(rootDir);
|
|
21
20
|
const packageName = `${namespace}/${name}`;
|
|
22
21
|
|
|
23
|
-
console.log(`✨ Creating
|
|
22
|
+
console.log(`✨ Creating Un-styled React library: ${packageName}`);
|
|
24
23
|
|
|
25
24
|
const generator = new PackageGenerator(
|
|
26
25
|
directory,
|
|
@@ -28,7 +27,6 @@ export async function createCssReactPackage(name: string): Promise<void> {
|
|
|
28
27
|
[
|
|
29
28
|
INDEX_FILE_GENERATOR,
|
|
30
29
|
BUTTON_FILE_GENERATOR,
|
|
31
|
-
BUTTON_CSS_MODULE_FILE_GENERATOR,
|
|
32
30
|
BUTTON_SPEC_FILE_GENERATOR,
|
|
33
31
|
TSUP_CONFIG_FILE_GENERATOR,
|
|
34
32
|
TSCONFIG_FILE_GENERATOR,
|
|
@@ -46,6 +44,7 @@ export async function createCssReactPackage(name: string): Promise<void> {
|
|
|
46
44
|
function makePackageGenerator(packageName: string, namespace: string) {
|
|
47
45
|
const packageJsonModel = new PackageJSON({
|
|
48
46
|
name: packageName,
|
|
47
|
+
// Peer deps are crucial for Styled Components to prevent "Multiple instances" errors
|
|
49
48
|
peerDependencies: [
|
|
50
49
|
new Dependency('react', '>=18'),
|
|
51
50
|
new Dependency('react-dom', '>=18'),
|
|
@@ -65,7 +64,6 @@ function makePackageGenerator(packageName: string, namespace: string) {
|
|
|
65
64
|
new Dependency('prettier-plugin-organize-imports', '^4.2.0'),
|
|
66
65
|
// Build
|
|
67
66
|
new Dependency('tsup', '^8.0.0'),
|
|
68
|
-
new Dependency('postcss', '^8.4.0'),
|
|
69
67
|
// Testing
|
|
70
68
|
new Dependency('vitest', '^3.2.4'),
|
|
71
69
|
new Dependency('@vitest/coverage-v8', '^3.2.4'),
|
|
@@ -76,6 +74,7 @@ function makePackageGenerator(packageName: string, namespace: string) {
|
|
|
76
74
|
additionalData: {
|
|
77
75
|
version: '0.1.0',
|
|
78
76
|
private: true,
|
|
77
|
+
type: 'module', // Added this to ensure ESM consistency
|
|
79
78
|
main: 'dist/index.js',
|
|
80
79
|
module: 'dist/index.mjs',
|
|
81
80
|
types: 'dist/index.d.ts',
|
|
@@ -86,16 +85,18 @@ function makePackageGenerator(packageName: string, namespace: string) {
|
|
|
86
85
|
require: './dist/index.js',
|
|
87
86
|
types: './dist/index.d.ts',
|
|
88
87
|
},
|
|
89
|
-
'./index.css'
|
|
88
|
+
// Removed './index.css' as it's no longer produced by Styled Components
|
|
90
89
|
},
|
|
91
90
|
scripts: {
|
|
92
91
|
build: 'tsup',
|
|
92
|
+
dev: 'tsup --watch', // Helpful for local lib dev
|
|
93
93
|
lint: 'eslint .',
|
|
94
94
|
format: 'prettier . --write',
|
|
95
95
|
test: 'vitest run',
|
|
96
96
|
'test:watch': 'vitest',
|
|
97
97
|
},
|
|
98
|
-
|
|
98
|
+
// Set to false or removed because Styled Components are pure JS/TS
|
|
99
|
+
sideEffects: false,
|
|
99
100
|
},
|
|
100
101
|
});
|
|
101
102
|
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { FileGeneratorImp } from '../../../../file-generator/file-generator-imp';
|
|
2
2
|
|
|
3
|
-
const BUTTON = `import React from 'react';
|
|
4
|
-
import * as styles from './button.module.css';
|
|
3
|
+
const BUTTON = `import React, { HTMLAttributes } from 'react';
|
|
5
4
|
|
|
6
5
|
export function Button(props: HTMLAttributes<HTMLButtonElement>) {
|
|
7
|
-
return <button
|
|
6
|
+
return <button {...props} />;
|
|
8
7
|
}
|
|
9
8
|
`;
|
|
10
9
|
|
|
@@ -14,16 +14,6 @@ describe('Button', () => {
|
|
|
14
14
|
const buttonElement = screen.getByRole('button');
|
|
15
15
|
expect(buttonElement.tagName).toBe('BUTTON');
|
|
16
16
|
});
|
|
17
|
-
|
|
18
|
-
/* Note: Testing for specific CSS classes with CSS Modules is tricky
|
|
19
|
-
because class names are mangled (e.g., _styledButton_123).
|
|
20
|
-
Usually, we just test that the class attribute exists.
|
|
21
|
-
*/
|
|
22
|
-
it('applies a class name', () => {
|
|
23
|
-
render(<Button>Styled</Button>);
|
|
24
|
-
const buttonElement = screen.getByRole('button');
|
|
25
|
-
expect(buttonElement.className).toBeTruthy();
|
|
26
|
-
});
|
|
27
17
|
});
|
|
28
18
|
`;
|
|
29
19
|
|
|
@@ -4,19 +4,16 @@ const TSUP_CONFIG = `import { defineConfig } from 'tsup';
|
|
|
4
4
|
|
|
5
5
|
export default defineConfig({
|
|
6
6
|
entry: ['src/index.ts'],
|
|
7
|
-
format: ['
|
|
7
|
+
format: ['esm', 'cjs'],
|
|
8
8
|
dts: true,
|
|
9
|
-
minify: true,
|
|
10
9
|
clean: true,
|
|
11
|
-
|
|
12
|
-
external: ['react', 'react-dom'],
|
|
10
|
+
external: ['react', 'react-dom', 'styled-components'],
|
|
13
11
|
outExtension({ format }) {
|
|
14
12
|
return {
|
|
15
13
|
js: format === 'esm' ? '.mjs' : '.js',
|
|
16
14
|
};
|
|
17
15
|
},
|
|
18
|
-
})
|
|
19
|
-
`;
|
|
16
|
+
});`;
|
|
20
17
|
|
|
21
18
|
export const TSUP_CONFIG_FILE_GENERATOR = new FileGeneratorImp(
|
|
22
19
|
'tsup.config.ts',
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './create-vite-react-app';
|
package/src/utils/style-type.ts
CHANGED
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
import { prompt } from 'enquirer';
|
|
2
2
|
|
|
3
|
-
export const styleTypes = [
|
|
4
|
-
'tailwind',
|
|
5
|
-
'css-modules',
|
|
6
|
-
'styled-components',
|
|
7
|
-
'none',
|
|
8
|
-
] as const;
|
|
3
|
+
export const styleTypes = ['styled-components', 'none'] as const;
|
|
9
4
|
|
|
10
5
|
export type StyleType = (typeof styleTypes)[number];
|
|
11
6
|
|
package/src/packages/react-package/css-react-package/files/button-css-module-file-generator.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { FileGeneratorImp } from '../../../../file-generator/file-generator-imp';
|
|
2
|
-
|
|
3
|
-
const BUTTON_CSS_MODULE = `.styledButton {
|
|
4
|
-
background: blue;
|
|
5
|
-
color: white;
|
|
6
|
-
padding: 10px;
|
|
7
|
-
border: none;
|
|
8
|
-
border-radius: 4px;
|
|
9
|
-
cursor: pointer;
|
|
10
|
-
}
|
|
11
|
-
`;
|
|
12
|
-
|
|
13
|
-
export const BUTTON_CSS_MODULE_FILE_GENERATOR = new FileGeneratorImp(
|
|
14
|
-
'src/button.module.css',
|
|
15
|
-
BUTTON_CSS_MODULE,
|
|
16
|
-
);
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|