create-bunli 0.1.3 โ†’ 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 (58) hide show
  1. package/README.md +13 -0
  2. package/dist/cli.js +10 -1
  3. package/dist/index.js +9 -0
  4. package/dist/templates/advanced/.bunli/commands.gen.report.json +6 -0
  5. package/dist/templates/advanced/.bunli/commands.gen.ts +66 -0
  6. package/dist/templates/advanced/bunli.config.ts +29 -0
  7. package/dist/templates/advanced/package.json +2 -1
  8. package/dist/templates/advanced/src/index.ts +1 -1
  9. package/dist/templates/advanced/template.json +8 -1
  10. package/dist/templates/advanced/tsconfig.json +1 -1
  11. package/dist/templates/basic/.bunli/commands.gen.report.json +6 -0
  12. package/dist/templates/basic/.bunli/commands.gen.ts +66 -0
  13. package/dist/templates/basic/bunli.config.ts +29 -0
  14. package/dist/templates/basic/package.json +2 -1
  15. package/dist/templates/basic/src/index.ts +1 -1
  16. package/dist/templates/basic/tsconfig.json +1 -1
  17. package/dist/templates/monorepo/.bunli/commands.gen.report.json +6 -0
  18. package/dist/templates/monorepo/.bunli/commands.gen.ts +66 -0
  19. package/dist/templates/monorepo/README.md +2 -2
  20. package/dist/templates/monorepo/bunli.config.ts +34 -0
  21. package/dist/templates/monorepo/package.json +2 -1
  22. package/dist/templates/monorepo/packages/cli/package.json +2 -1
  23. package/dist/templates/monorepo/packages/cli/src/index.ts +1 -1
  24. package/dist/templates/monorepo/packages/core/package.json +1 -1
  25. package/dist/templates/monorepo/packages/utils/package.json +1 -1
  26. package/dist/templates/monorepo/template.json +8 -1
  27. package/dist/templates/monorepo/tsconfig.json +1 -1
  28. package/dist/templates/monorepo/turbo.json +1 -1
  29. package/package.json +6 -5
  30. package/templates/advanced/.bunli/commands.gen.report.json +6 -0
  31. package/templates/advanced/.bunli/commands.gen.ts +66 -0
  32. package/templates/advanced/bunli.config.ts +29 -0
  33. package/templates/advanced/package.json +2 -1
  34. package/templates/advanced/src/index.ts +1 -1
  35. package/templates/advanced/template.json +8 -1
  36. package/templates/advanced/tsconfig.json +1 -1
  37. package/templates/basic/.bunli/commands.gen.report.json +6 -0
  38. package/templates/basic/.bunli/commands.gen.ts +66 -0
  39. package/templates/basic/bunli.config.ts +29 -0
  40. package/templates/basic/package.json +2 -1
  41. package/templates/basic/src/index.ts +1 -1
  42. package/templates/basic/tsconfig.json +1 -1
  43. package/templates/monorepo/.bunli/commands.gen.report.json +6 -0
  44. package/templates/monorepo/.bunli/commands.gen.ts +66 -0
  45. package/templates/monorepo/README.md +2 -2
  46. package/templates/monorepo/bunli.config.ts +34 -0
  47. package/templates/monorepo/package.json +2 -1
  48. package/templates/monorepo/packages/cli/package.json +2 -1
  49. package/templates/monorepo/packages/cli/src/index.ts +1 -1
  50. package/templates/monorepo/packages/core/package.json +1 -1
  51. package/templates/monorepo/packages/utils/package.json +1 -1
  52. package/templates/monorepo/template.json +8 -1
  53. package/templates/monorepo/tsconfig.json +1 -1
  54. package/templates/monorepo/turbo.json +1 -1
  55. package/dist/templates/advanced/test/commands.test.ts +0 -34
  56. package/dist/templates/basic/test/hello.test.ts +0 -26
  57. package/templates/advanced/test/commands.test.ts +0 -34
  58. package/templates/basic/test/hello.test.ts +0 -26
package/README.md CHANGED
@@ -21,6 +21,7 @@ create-bunli my-cli
21
21
  - ๐Ÿงช **Testing included** - Comes with @bunli/test for CLI testing
22
22
  - ๐ŸŽจ **Best practices** - Follows Bunli conventions and patterns
23
23
  - ๐ŸŒ **Flexible sources** - Use bundled templates or any GitHub repository
24
+ - โšก **Type generation** - All templates include codegen for enhanced developer experience
24
25
 
25
26
  ## Usage
26
27
 
@@ -205,6 +206,18 @@ Templates can include a `template.json` manifest:
205
206
  }
206
207
  ```
207
208
 
209
+ ### Type Generation
210
+
211
+ All templates include type generation configuration for enhanced developer experience:
212
+
213
+ This provides:
214
+ - **Autocomplete** for command names and options
215
+ - **Type safety** at compile time
216
+ - **IntelliSense** for command metadata
217
+ - **CLI wrappers** for programmatic execution
218
+
219
+ Learn more in the [Type Generation Guide](/docs/guides/type-generation).
220
+
208
221
  ### Template Variables
209
222
 
210
223
  Use these variables in your template files:
package/dist/cli.js CHANGED
@@ -102,6 +102,15 @@ async function getFilesToProcess(dir, manifest) {
102
102
  }
103
103
  }
104
104
  await walk(dir);
105
+ if (manifest?.files?.exclude) {
106
+ return files.filter((file) => {
107
+ return !manifest.files.exclude.some((pattern) => {
108
+ const regexPattern = pattern.replace(/\*\*/g, ".*").replace(/\*/g, "[^/]*").replace(/\?/g, "[^/]");
109
+ const regex = new RegExp(`^${regexPattern}$`);
110
+ return regex.test(file);
111
+ });
112
+ });
113
+ }
105
114
  return files;
106
115
  }
107
116
  async function runPostInstallHooks(dir, hooks) {
@@ -277,7 +286,7 @@ async function run() {
277
286
  } else if (args[0] && !args[0].startsWith("-") && args[0] !== "create") {
278
287
  process.argv.splice(2, 0, "create");
279
288
  }
280
- const cli = createCLI({
289
+ const cli = await createCLI({
281
290
  name: "create-bunli",
282
291
  version: "0.1.0",
283
292
  description: "Scaffold new Bunli CLI projects"
package/dist/index.js CHANGED
@@ -96,6 +96,15 @@ async function getFilesToProcess(dir, manifest) {
96
96
  }
97
97
  }
98
98
  await walk(dir);
99
+ if (manifest?.files?.exclude) {
100
+ return files.filter((file) => {
101
+ return !manifest.files.exclude.some((pattern) => {
102
+ const regexPattern = pattern.replace(/\*\*/g, ".*").replace(/\*/g, "[^/]*").replace(/\?/g, "[^/]");
103
+ const regex = new RegExp(`^${regexPattern}$`);
104
+ return regex.test(file);
105
+ });
106
+ });
107
+ }
99
108
  return files;
100
109
  }
101
110
  async function runPostInstallHooks(dir, hooks) {
@@ -0,0 +1,6 @@
1
+ {
2
+ "commandsParsed": 0,
3
+ "filesScanned": 0,
4
+ "skipped": [],
5
+ "names": []
6
+ }
@@ -0,0 +1,66 @@
1
+ // This file was automatically generated by Bunli.
2
+ // You should NOT make any changes in this file as it will be overwritten.
3
+
4
+ import type { Command, CLI, GeneratedOptionMeta, RegisteredCommands, CommandOptions, GeneratedCommandMeta } from '@bunli/core'
5
+ import { createGeneratedHelpers, registerGeneratedStore } from '@bunli/core'
6
+
7
+
8
+
9
+ // Narrow list of command names to avoid typeof-cycles in types
10
+ const names = [] as const
11
+ type GeneratedNames = typeof names[number]
12
+
13
+ const modules: Record<GeneratedNames, Command<any>> = {
14
+
15
+ } as const
16
+
17
+ const metadata: Record<GeneratedNames, GeneratedCommandMeta> = {
18
+
19
+ } as const
20
+
21
+ export const generated = registerGeneratedStore(createGeneratedHelpers(modules, metadata))
22
+
23
+ export const commands = generated.commands
24
+ export const commandMeta = generated.metadata
25
+
26
+ export interface GeneratedCLI {
27
+ register(cli?: CLI<any>): GeneratedCLI
28
+ list(): Array<{
29
+ name: GeneratedNames
30
+ command: (typeof modules)[GeneratedNames]
31
+ metadata: (typeof metadata)[GeneratedNames]
32
+ }>
33
+ get<Name extends GeneratedNames>(name: Name): (typeof modules)[Name]
34
+ getMetadata<Name extends GeneratedNames>(name: Name): (typeof metadata)[Name]
35
+ getFlags<Name extends keyof RegisteredCommands & string>(name: Name): CommandOptions<Name>
36
+ getFlagsMeta<Name extends GeneratedNames>(name: Name): Record<string, GeneratedOptionMeta>
37
+ withCLI(cli: CLI<any>): { execute(name: string, options: unknown): Promise<void> }
38
+ }
39
+
40
+ export const cli: GeneratedCLI = {
41
+ register: (cliInstance?: CLI<any>) => { generated.register(cliInstance); return cli },
42
+ list: () => generated.list(),
43
+ get: <Name extends GeneratedNames>(name: Name) => generated.get(name),
44
+ getMetadata: <Name extends GeneratedNames>(name: Name) => generated.getMetadata(name),
45
+ getFlags: <Name extends keyof RegisteredCommands & string>(name: Name) => generated.getFlags(name) as CommandOptions<Name>,
46
+ getFlagsMeta: <Name extends GeneratedNames>(name: Name) => generated.getFlagsMeta(name),
47
+ withCLI: (cliInstance) => generated.withCLI(cliInstance)
48
+ }
49
+
50
+ // Enhanced helper functions
51
+ export const listCommands = () => generated.list().map(c => c.name)
52
+ export const getCommandApi = <Name extends GeneratedNames>(name: Name) => generated.getMetadata(name)
53
+ export const getTypedFlags = <Name extends GeneratedNames>(name: Name) => generated.getFlags(name) as CommandOptions<Name>
54
+ export const validateCommand = <Name extends GeneratedNames>(name: Name, flags: Record<string, unknown>) => generated.validateCommand(name, flags)
55
+ export const findCommandByName = <Name extends GeneratedNames>(name: Name) => generated.findByName(name)
56
+ export const findCommandsByDescription = (searchTerm: string) => generated.findByDescription(searchTerm)
57
+ export const getCommandNames = () => generated.getCommandNames()
58
+
59
+ // Auto-register on import for zero-config usage
60
+ export default cli
61
+
62
+ // Ensure module augmentation happens on import
63
+ declare module '@bunli/core' {
64
+ // Precise key mapping without typeof cycles
65
+ interface RegisteredCommands extends Record<GeneratedNames, Command<any>> {}
66
+ }
@@ -0,0 +1,29 @@
1
+ import { defineConfig } from '@bunli/core'
2
+
3
+ export default defineConfig({
4
+ name: '{{name}}',
5
+ version: '{{version}}',
6
+ description: '{{description}}',
7
+
8
+ plugins: [],
9
+
10
+ build: {
11
+ entry: './src/index.ts',
12
+ outdir: './dist',
13
+ targets: ['darwin-arm64', 'darwin-x64', 'linux-x64', 'windows-x64'],
14
+ minify: true,
15
+ sourcemap: true,
16
+ compress: true
17
+ },
18
+
19
+ dev: {
20
+ watch: true,
21
+ inspect: false
22
+ },
23
+
24
+ test: {
25
+ pattern: ['**/*.test.ts', '**/*.spec.ts'],
26
+ coverage: true,
27
+ watch: false
28
+ }
29
+ })
@@ -9,11 +9,12 @@
9
9
  "{{projectName}}": "./dist/index.js"
10
10
  },
11
11
  "scripts": {
12
+ "postinstall": "bunli generate",
12
13
  "dev": "bun run src/index.ts",
13
14
  "build": "bunli build",
14
15
  "test": "bun test",
15
16
  "test:watch": "bun test --watch",
16
- "type-check": "tsc --noEmit",
17
+ "typecheck": "tsc --noEmit",
17
18
  "lint": "tsc --noEmit",
18
19
  "prepare": "bun run build"
19
20
  },
@@ -6,7 +6,7 @@ import { serveCommand } from './commands/serve.js'
6
6
  import { configCommand } from './commands/config.js'
7
7
  import { loadConfig } from './utils/config.js'
8
8
 
9
- const cli = createCLI({
9
+ const cli = await createCLI({
10
10
  name: '{{projectName}}',
11
11
  version: '0.1.0',
12
12
  description: '{{description}}'
@@ -33,5 +33,12 @@
33
33
  { "label": "Unlicense", "value": "Unlicense" }
34
34
  ]
35
35
  }
36
- ]
36
+ ],
37
+ "files": {
38
+ "exclude": [
39
+ "node_modules/**",
40
+ ".git/**",
41
+ "template.json"
42
+ ]
43
+ }
37
44
  }
@@ -12,7 +12,7 @@
12
12
  "declarationMap": true,
13
13
  "outDir": "./dist",
14
14
  "rootDir": "./src",
15
- "types": ["bun-types"],
15
+ "types": ["bun"],
16
16
  "noUnusedLocals": true,
17
17
  "noUnusedParameters": true,
18
18
  "noImplicitReturns": true,
@@ -0,0 +1,6 @@
1
+ {
2
+ "commandsParsed": 0,
3
+ "filesScanned": 0,
4
+ "skipped": [],
5
+ "names": []
6
+ }
@@ -0,0 +1,66 @@
1
+ // This file was automatically generated by Bunli.
2
+ // You should NOT make any changes in this file as it will be overwritten.
3
+
4
+ import type { Command, CLI, GeneratedOptionMeta, RegisteredCommands, CommandOptions, GeneratedCommandMeta } from '@bunli/core'
5
+ import { createGeneratedHelpers, registerGeneratedStore } from '@bunli/core'
6
+
7
+
8
+
9
+ // Narrow list of command names to avoid typeof-cycles in types
10
+ const names = [] as const
11
+ type GeneratedNames = typeof names[number]
12
+
13
+ const modules: Record<GeneratedNames, Command<any>> = {
14
+
15
+ } as const
16
+
17
+ const metadata: Record<GeneratedNames, GeneratedCommandMeta> = {
18
+
19
+ } as const
20
+
21
+ export const generated = registerGeneratedStore(createGeneratedHelpers(modules, metadata))
22
+
23
+ export const commands = generated.commands
24
+ export const commandMeta = generated.metadata
25
+
26
+ export interface GeneratedCLI {
27
+ register(cli?: CLI<any>): GeneratedCLI
28
+ list(): Array<{
29
+ name: GeneratedNames
30
+ command: (typeof modules)[GeneratedNames]
31
+ metadata: (typeof metadata)[GeneratedNames]
32
+ }>
33
+ get<Name extends GeneratedNames>(name: Name): (typeof modules)[Name]
34
+ getMetadata<Name extends GeneratedNames>(name: Name): (typeof metadata)[Name]
35
+ getFlags<Name extends keyof RegisteredCommands & string>(name: Name): CommandOptions<Name>
36
+ getFlagsMeta<Name extends GeneratedNames>(name: Name): Record<string, GeneratedOptionMeta>
37
+ withCLI(cli: CLI<any>): { execute(name: string, options: unknown): Promise<void> }
38
+ }
39
+
40
+ export const cli: GeneratedCLI = {
41
+ register: (cliInstance?: CLI<any>) => { generated.register(cliInstance); return cli },
42
+ list: () => generated.list(),
43
+ get: <Name extends GeneratedNames>(name: Name) => generated.get(name),
44
+ getMetadata: <Name extends GeneratedNames>(name: Name) => generated.getMetadata(name),
45
+ getFlags: <Name extends keyof RegisteredCommands & string>(name: Name) => generated.getFlags(name) as CommandOptions<Name>,
46
+ getFlagsMeta: <Name extends GeneratedNames>(name: Name) => generated.getFlagsMeta(name),
47
+ withCLI: (cliInstance) => generated.withCLI(cliInstance)
48
+ }
49
+
50
+ // Enhanced helper functions
51
+ export const listCommands = () => generated.list().map(c => c.name)
52
+ export const getCommandApi = <Name extends GeneratedNames>(name: Name) => generated.getMetadata(name)
53
+ export const getTypedFlags = <Name extends GeneratedNames>(name: Name) => generated.getFlags(name) as CommandOptions<Name>
54
+ export const validateCommand = <Name extends GeneratedNames>(name: Name, flags: Record<string, unknown>) => generated.validateCommand(name, flags)
55
+ export const findCommandByName = <Name extends GeneratedNames>(name: Name) => generated.findByName(name)
56
+ export const findCommandsByDescription = (searchTerm: string) => generated.findByDescription(searchTerm)
57
+ export const getCommandNames = () => generated.getCommandNames()
58
+
59
+ // Auto-register on import for zero-config usage
60
+ export default cli
61
+
62
+ // Ensure module augmentation happens on import
63
+ declare module '@bunli/core' {
64
+ // Precise key mapping without typeof cycles
65
+ interface RegisteredCommands extends Record<GeneratedNames, Command<any>> {}
66
+ }
@@ -0,0 +1,29 @@
1
+ import { defineConfig } from '@bunli/core'
2
+
3
+ export default defineConfig({
4
+ name: '{{name}}',
5
+ version: '{{version}}',
6
+ description: '{{description}}',
7
+
8
+ build: {
9
+ entry: './src/index.ts',
10
+ outdir: './dist',
11
+ targets: ['native'],
12
+ minify: true,
13
+ sourcemap: true,
14
+ compress: false
15
+ },
16
+
17
+ dev: {
18
+ watch: true,
19
+ inspect: true
20
+ },
21
+
22
+ test: {
23
+ pattern: ['**/*.test.ts', '**/*.spec.ts'],
24
+ coverage: true,
25
+ watch: false
26
+ },
27
+
28
+ plugins: [],
29
+ })
@@ -8,10 +8,11 @@
8
8
  "{{projectName}}": "./dist/index.js"
9
9
  },
10
10
  "scripts": {
11
+ "postinstall": "bunli generate",
11
12
  "dev": "bun run src/index.ts",
12
13
  "build": "bunli build",
13
14
  "test": "bun test",
14
- "type-check": "tsc --noEmit"
15
+ "typecheck": "tsc --noEmit"
15
16
  },
16
17
  "dependencies": {
17
18
  "@bunli/core": "latest"
@@ -2,7 +2,7 @@
2
2
  import { createCLI } from '@bunli/core'
3
3
  import { helloCommand } from './commands/hello.js'
4
4
 
5
- const cli = createCLI({
5
+ const cli = await createCLI({
6
6
  name: '{{projectName}}',
7
7
  version: '0.1.0',
8
8
  description: '{{description}}'
@@ -12,7 +12,7 @@
12
12
  "declarationMap": true,
13
13
  "outDir": "./dist",
14
14
  "rootDir": "./src",
15
- "types": ["bun-types"]
15
+ "types": ["bun"]
16
16
  },
17
17
  "include": ["src/**/*"],
18
18
  "exclude": ["node_modules", "dist", "test/**/*"]
@@ -0,0 +1,6 @@
1
+ {
2
+ "commandsParsed": 0,
3
+ "filesScanned": 0,
4
+ "skipped": [],
5
+ "names": []
6
+ }
@@ -0,0 +1,66 @@
1
+ // This file was automatically generated by Bunli.
2
+ // You should NOT make any changes in this file as it will be overwritten.
3
+
4
+ import type { Command, CLI, GeneratedOptionMeta, RegisteredCommands, CommandOptions, GeneratedCommandMeta } from '@bunli/core'
5
+ import { createGeneratedHelpers, registerGeneratedStore } from '@bunli/core'
6
+
7
+
8
+
9
+ // Narrow list of command names to avoid typeof-cycles in types
10
+ const names = [] as const
11
+ type GeneratedNames = typeof names[number]
12
+
13
+ const modules: Record<GeneratedNames, Command<any>> = {
14
+
15
+ } as const
16
+
17
+ const metadata: Record<GeneratedNames, GeneratedCommandMeta> = {
18
+
19
+ } as const
20
+
21
+ export const generated = registerGeneratedStore(createGeneratedHelpers(modules, metadata))
22
+
23
+ export const commands = generated.commands
24
+ export const commandMeta = generated.metadata
25
+
26
+ export interface GeneratedCLI {
27
+ register(cli?: CLI<any>): GeneratedCLI
28
+ list(): Array<{
29
+ name: GeneratedNames
30
+ command: (typeof modules)[GeneratedNames]
31
+ metadata: (typeof metadata)[GeneratedNames]
32
+ }>
33
+ get<Name extends GeneratedNames>(name: Name): (typeof modules)[Name]
34
+ getMetadata<Name extends GeneratedNames>(name: Name): (typeof metadata)[Name]
35
+ getFlags<Name extends keyof RegisteredCommands & string>(name: Name): CommandOptions<Name>
36
+ getFlagsMeta<Name extends GeneratedNames>(name: Name): Record<string, GeneratedOptionMeta>
37
+ withCLI(cli: CLI<any>): { execute(name: string, options: unknown): Promise<void> }
38
+ }
39
+
40
+ export const cli: GeneratedCLI = {
41
+ register: (cliInstance?: CLI<any>) => { generated.register(cliInstance); return cli },
42
+ list: () => generated.list(),
43
+ get: <Name extends GeneratedNames>(name: Name) => generated.get(name),
44
+ getMetadata: <Name extends GeneratedNames>(name: Name) => generated.getMetadata(name),
45
+ getFlags: <Name extends keyof RegisteredCommands & string>(name: Name) => generated.getFlags(name) as CommandOptions<Name>,
46
+ getFlagsMeta: <Name extends GeneratedNames>(name: Name) => generated.getFlagsMeta(name),
47
+ withCLI: (cliInstance) => generated.withCLI(cliInstance)
48
+ }
49
+
50
+ // Enhanced helper functions
51
+ export const listCommands = () => generated.list().map(c => c.name)
52
+ export const getCommandApi = <Name extends GeneratedNames>(name: Name) => generated.getMetadata(name)
53
+ export const getTypedFlags = <Name extends GeneratedNames>(name: Name) => generated.getFlags(name) as CommandOptions<Name>
54
+ export const validateCommand = <Name extends GeneratedNames>(name: Name, flags: Record<string, unknown>) => generated.validateCommand(name, flags)
55
+ export const findCommandByName = <Name extends GeneratedNames>(name: Name) => generated.findByName(name)
56
+ export const findCommandsByDescription = (searchTerm: string) => generated.findByDescription(searchTerm)
57
+ export const getCommandNames = () => generated.getCommandNames()
58
+
59
+ // Auto-register on import for zero-config usage
60
+ export default cli
61
+
62
+ // Ensure module augmentation happens on import
63
+ declare module '@bunli/core' {
64
+ // Precise key mapping without typeof cycles
65
+ interface RegisteredCommands extends Record<GeneratedNames, Command<any>> {}
66
+ }
@@ -32,7 +32,7 @@ bun run build
32
32
  bun test
33
33
 
34
34
  # Type check
35
- bun run type-check
35
+ bun run typecheck
36
36
  ```
37
37
 
38
38
  ## Creating a New Package
@@ -62,7 +62,7 @@ bun run release
62
62
  - `dev` - Run all packages in development mode
63
63
  - `build` - Build all packages
64
64
  - `test` - Run all tests
65
- - `type-check` - Type check all packages
65
+ - `typecheck` - Type check all packages
66
66
  - `lint` - Lint all packages
67
67
  - `clean` - Clean all build artifacts
68
68
  - `changeset` - Create a new changeset
@@ -0,0 +1,34 @@
1
+ import { defineConfig } from '@bunli/core'
2
+
3
+ export default defineConfig({
4
+ name: '{{name}}',
5
+ version: '{{version}}',
6
+ description: '{{description}}',
7
+
8
+ plugins: [],
9
+
10
+ build: {
11
+ entry: './packages/core/src/index.ts',
12
+ outdir: './packages/core/dist',
13
+ targets: ['darwin-arm64', 'darwin-x64', 'linux-x64', 'windows-x64'],
14
+ minify: true,
15
+ compress: true,
16
+ sourcemap: true
17
+ },
18
+
19
+ dev: {
20
+ watch: true,
21
+ inspect: false
22
+ },
23
+
24
+ test: {
25
+ pattern: ['**/*.test.ts', '**/*.spec.ts'],
26
+ coverage: true,
27
+ watch: false
28
+ },
29
+
30
+ workspace: {
31
+ packages: ['./packages/*'],
32
+ versionStrategy: 'fixed'
33
+ }
34
+ })
@@ -9,10 +9,11 @@
9
9
  "packages/*"
10
10
  ],
11
11
  "scripts": {
12
+ "postinstall": "bunli generate",
12
13
  "dev": "turbo run dev",
13
14
  "build": "turbo run build",
14
15
  "test": "turbo run test",
15
- "type-check": "turbo run type-check",
16
+ "typecheck": "turbo run typecheck",
16
17
  "lint": "turbo run lint",
17
18
  "clean": "turbo run clean && rm -rf node_modules",
18
19
  "changeset": "changeset",
@@ -9,10 +9,11 @@
9
9
  "{{projectName}}": "./dist/index.js"
10
10
  },
11
11
  "scripts": {
12
+ "postinstall": "bunli generate",
12
13
  "dev": "bun run src/index.ts",
13
14
  "build": "bunli build",
14
15
  "test": "bun test",
15
- "type-check": "tsc --noEmit",
16
+ "typecheck": "tsc --noEmit",
16
17
  "clean": "rm -rf dist"
17
18
  },
18
19
  "dependencies": {
@@ -3,7 +3,7 @@ import { createCLI } from '@bunli/core'
3
3
  import { logger } from '@{{projectName}}/utils'
4
4
  import { processCommand, analyzeCommand } from '@{{projectName}}/core'
5
5
 
6
- const cli = createCLI({
6
+ const cli = await createCLI({
7
7
  name: '{{projectName}}',
8
8
  version: '0.1.0',
9
9
  description: '{{description}}'
@@ -16,7 +16,7 @@
16
16
  "scripts": {
17
17
  "build": "bun scripts/build.ts && bun run tsc",
18
18
  "test": "bun test",
19
- "type-check": "tsc --noEmit",
19
+ "typecheck": "tsc --noEmit",
20
20
  "clean": "rm -rf dist"
21
21
  },
22
22
  "dependencies": {
@@ -16,7 +16,7 @@
16
16
  "scripts": {
17
17
  "build": "bun scripts/build.ts && bun run tsc",
18
18
  "test": "bun test",
19
- "type-check": "tsc --noEmit",
19
+ "typecheck": "tsc --noEmit",
20
20
  "clean": "rm -rf dist"
21
21
  },
22
22
  "devDependencies": {
@@ -20,5 +20,12 @@
20
20
  "type": "string",
21
21
  "default": ""
22
22
  }
23
- ]
23
+ ],
24
+ "files": {
25
+ "exclude": [
26
+ "node_modules/**",
27
+ ".git/**",
28
+ "template.json"
29
+ ]
30
+ }
24
31
  }
@@ -8,7 +8,7 @@
8
8
  "skipLibCheck": true,
9
9
  "forceConsistentCasingInFileNames": true,
10
10
  "resolveJsonModule": true,
11
- "types": ["bun-types"]
11
+ "types": ["bun"]
12
12
  },
13
13
  "exclude": ["node_modules", "dist", "build", ".turbo"]
14
14
  }
@@ -14,7 +14,7 @@
14
14
  "lint": {
15
15
  "dependsOn": ["^build"]
16
16
  },
17
- "type-check": {
17
+ "typecheck": {
18
18
  "dependsOn": ["^build"]
19
19
  },
20
20
  "dev": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-bunli",
3
- "version": "0.1.3",
3
+ "version": "0.3.0",
4
4
  "type": "module",
5
5
  "description": "Scaffold new Bunli CLI projects",
6
6
  "bin": {
@@ -43,12 +43,13 @@
43
43
  "dev": "bun run src/cli.ts",
44
44
  "build": "bun scripts/build.ts && bun run tsc",
45
45
  "test": "bun test",
46
- "type-check": "tsc --noEmit",
46
+ "typecheck": "tsc --noEmit",
47
47
  "prepublishOnly": "bun run build"
48
48
  },
49
49
  "dependencies": {
50
- "@bunli/core": "0.1.0",
51
- "@bunli/utils": "0.1.0",
50
+ "@bunli/core": "0.3.0",
51
+ "@bunli/utils": "0.2.0",
52
+ "@bunli/test": "0.2.0",
52
53
  "giget": "^2.0.0",
53
54
  "zod": "^3.25.67"
54
55
  },
@@ -56,4 +57,4 @@
56
57
  "@types/bun": "latest",
57
58
  "typescript": "^5.8.0"
58
59
  }
59
- }
60
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "commandsParsed": 0,
3
+ "filesScanned": 0,
4
+ "skipped": [],
5
+ "names": []
6
+ }