@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.
Files changed (38) hide show
  1. package/.turbo/turbo-build.log +6 -6
  2. package/CHANGELOG.md +17 -0
  3. package/dist/index.js +1105 -743
  4. package/dist/index.mjs +1103 -741
  5. package/package.json +6 -5
  6. package/src/index.ts +11 -10
  7. package/src/packages/cli-app/create-cli-app.ts +74 -0
  8. package/src/packages/cli-app/files/eslint-config-file-generator.ts +11 -0
  9. package/src/packages/cli-app/files/index-file-generator.ts +24 -0
  10. package/src/packages/cli-app/files/prettier-config-file-generator.ts +11 -0
  11. package/src/packages/cli-app/files/tsconfig-file-generator.ts +15 -0
  12. package/src/packages/cli-app/files/tsup-file-generator.ts +20 -0
  13. package/src/packages/cli-app/files/vitest-config-file-generator.ts +19 -0
  14. package/src/packages/cli-app/index.ts +1 -0
  15. package/src/packages/fastify-app/create-fastify-app.ts +79 -0
  16. package/src/packages/fastify-app/files/eslint-config-file-generator.ts +11 -0
  17. package/src/packages/fastify-app/files/index-file-generator.ts +144 -0
  18. package/src/packages/fastify-app/files/prettier-config-file-generator.ts +11 -0
  19. package/src/packages/fastify-app/files/tsconfig-file-generator.ts +15 -0
  20. package/src/packages/fastify-app/files/tsup-file-generator.ts +20 -0
  21. package/src/packages/fastify-app/files/vitest-config-file-generator.ts +19 -0
  22. package/src/packages/fastify-app/index.ts +1 -0
  23. package/src/packages/index.ts +3 -0
  24. package/src/packages/react-package/create-react-package.ts +1 -9
  25. package/src/packages/react-package/styled-components-react-package/create-styled-components-react-package.ts +1 -3
  26. package/src/packages/react-package/{css-react-package/create-css-react-package.ts → unstyled-react-package/create-unstyled-react-package.ts} +8 -7
  27. package/src/packages/react-package/{css-react-package → unstyled-react-package}/files/button-file-generator.ts +2 -3
  28. package/src/packages/react-package/{css-react-package → unstyled-react-package}/files/button-spec-file-generator.ts +0 -10
  29. package/src/packages/react-package/{css-react-package → unstyled-react-package}/files/tsup-config-file-generator.ts +3 -6
  30. package/src/packages/vite-react-app/index.ts +1 -0
  31. package/src/utils/style-type.ts +1 -6
  32. package/src/packages/react-package/create-unstyled-react-package.ts +0 -3
  33. package/src/packages/react-package/css-react-package/files/button-css-module-file-generator.ts +0 -16
  34. /package/src/packages/react-package/{css-react-package → unstyled-react-package}/files/eslint-config-file-generator.ts +0 -0
  35. /package/src/packages/react-package/{css-react-package → unstyled-react-package}/files/index-file-generator.ts +0 -0
  36. /package/src/packages/react-package/{css-react-package → unstyled-react-package}/files/prettier-config-file-generator.ts +0 -0
  37. /package/src/packages/react-package/{css-react-package → unstyled-react-package}/files/tsconfig-file-generator.ts +0 -0
  38. /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 createCssReactPackage(name: string): Promise<void> {
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 CSS Modules React library: ${packageName}`);
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': './dist/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
- sideEffects: ['**/*.css'],
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 className={styles.styledButton} {...props} />;
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: ['cjs', 'esm'],
7
+ format: ['esm', 'cjs'],
8
8
  dts: true,
9
- minify: true,
10
9
  clean: true,
11
- injectStyle: true,
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';
@@ -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
 
@@ -1,3 +0,0 @@
1
- export async function createUnstyledReactPackage(name: string): Promise<void> {
2
- throw new Error('Not implemented.');
3
- }
@@ -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
- );