@vue-skuilder/cli 0.1.3 → 0.1.4

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.
@@ -11,10 +11,20 @@ export declare function copyDirectory(source: string, destination: string, exclu
11
11
  * Transform package.json to use published dependencies instead of workspace references
12
12
  */
13
13
  export declare function transformPackageJson(packageJsonPath: string, projectName: string, cliVersion: string): Promise<void>;
14
+ /**
15
+ * Create a vite.config.ts to work with published packages instead of workspace sources
16
+ *
17
+ * // [ ] This should be revised so that it works from the existing vite.config.ts in standalone-ui. As is, it recreates 95% of the same config.
18
+ */
19
+ export declare function createViteConfig(viteConfigPath: string): Promise<void>;
14
20
  /**
15
21
  * Generate skuilder.config.json based on project configuration
16
22
  */
17
23
  export declare function generateSkuilderConfig(configPath: string, config: ProjectConfig): Promise<void>;
24
+ /**
25
+ * Generate .gitignore file for the project
26
+ */
27
+ export declare function generateGitignore(gitignorePath: string): Promise<void>;
18
28
  /**
19
29
  * Generate project README.md
20
30
  */
@@ -1 +1 @@
1
- {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../src/utils/template.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAkB,MAAM,aAAa,CAAC;AAK5D;;GAEG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC,CAa5D;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,eAAe,GAAE,MAAM,EAAgD,GACtE,OAAO,CAAC,IAAI,CAAC,CAoBf;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAuBf;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,IAAI,CAAC,CAmBf;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,IAAI,CAAC,CA+Df;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,aAAa,EACrB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAoBf"}
1
+ {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../src/utils/template.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAkB,MAAM,aAAa,CAAC;AAK5D;;GAEG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC,CAa5D;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,eAAe,GAAE,MAAM,EAAgD,GACtE,OAAO,CAAC,IAAI,CAAC,CAoBf;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CA4Bf;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA8D5E;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,IAAI,CAAC,CAmBf;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsH5E;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,IAAI,CAAC,CA+Df;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,aAAa,EACrB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CA8Bf"}
@@ -1,5 +1,4 @@
1
- import { promises as fs } from 'fs';
2
- import { existsSync } from 'fs';
1
+ import { promises as fs, existsSync } from 'fs';
3
2
  import path from 'path';
4
3
  import { fileURLToPath } from 'url';
5
4
  import chalk from 'chalk';
@@ -60,10 +59,81 @@ export async function transformPackageJson(packageJsonPath, projectName, cliVers
60
59
  }
61
60
  }
62
61
  }
62
+ // Add missing terser devDependency for build minification
63
+ if (packageJson.devDependencies && !packageJson.devDependencies['terser']) {
64
+ packageJson.devDependencies['terser'] = '^5.39.0';
65
+ }
63
66
  // Remove CLI-specific fields that don't belong in generated projects
64
67
  delete packageJson.publishConfig;
65
68
  await fs.writeFile(packageJsonPath, JSON.stringify(packageJson, null, 2));
66
69
  }
70
+ /**
71
+ * Create a vite.config.ts to work with published packages instead of workspace sources
72
+ *
73
+ * // [ ] This should be revised so that it works from the existing vite.config.ts in standalone-ui. As is, it recreates 95% of the same config.
74
+ */
75
+ export async function createViteConfig(viteConfigPath) {
76
+ // Create a clean vite config for standalone projects
77
+ const transformedContent = `// packages/standalone-ui/vite.config.ts
78
+ import { defineConfig } from 'vite';
79
+ import vue from '@vitejs/plugin-vue';
80
+ import { fileURLToPath, URL } from 'node:url';
81
+
82
+ export default defineConfig({
83
+ plugins: [vue()],
84
+ resolve: {
85
+ alias: {
86
+ // Alias for internal src paths
87
+ '@': fileURLToPath(new URL('./src', import.meta.url)),
88
+
89
+ // Add events alias if needed (often required by dependencies)
90
+ events: 'events',
91
+ },
92
+ extensions: ['.js', '.ts', '.json', '.vue'],
93
+ dedupe: [
94
+ // Ensure single instances of core libs and published packages
95
+ 'vue',
96
+ 'vuetify',
97
+ 'pinia',
98
+ 'vue-router',
99
+ '@vue-skuilder/db',
100
+ '@vue-skuilder/common',
101
+ '@vue-skuilder/common-ui',
102
+ '@vue-skuilder/courses',
103
+ ],
104
+ },
105
+ // --- Dependencies optimization ---
106
+ optimizeDeps: {
107
+ // Help Vite pre-bundle dependencies from published packages
108
+ include: [
109
+ '@vue-skuilder/common-ui',
110
+ '@vue-skuilder/db',
111
+ '@vue-skuilder/common',
112
+ '@vue-skuilder/courses',
113
+ ],
114
+ },
115
+ server: {
116
+ port: 5173, // Use standard Vite port for standalone projects
117
+ },
118
+ build: {
119
+ sourcemap: true,
120
+ target: 'es2020',
121
+ minify: 'terser',
122
+ terserOptions: {
123
+ keep_classnames: true,
124
+ },
125
+ },
126
+ // Add define block for process polyfills
127
+ define: {
128
+ global: 'window',
129
+ 'process.env': process.env,
130
+ 'process.browser': true,
131
+ 'process.version': JSON.stringify(process.version),
132
+ },
133
+ });
134
+ `;
135
+ await fs.writeFile(viteConfigPath, transformedContent);
136
+ }
67
137
  /**
68
138
  * Generate skuilder.config.json based on project configuration
69
139
  */
@@ -83,6 +153,127 @@ export async function generateSkuilderConfig(configPath, config) {
83
153
  }
84
154
  await fs.writeFile(configPath, JSON.stringify(skuilderConfig, null, 2));
85
155
  }
156
+ /**
157
+ * Generate .gitignore file for the project
158
+ */
159
+ export async function generateGitignore(gitignorePath) {
160
+ const gitignoreContent = `# Dependencies
161
+ node_modules/
162
+ /.pnp
163
+ .pnp.js
164
+
165
+ # Production builds
166
+ /dist
167
+ /build
168
+
169
+ # Local env files
170
+ .env
171
+ .env.local
172
+ .env.development.local
173
+ .env.test.local
174
+ .env.production.local
175
+
176
+ # Log files
177
+ npm-debug.log*
178
+ yarn-debug.log*
179
+ yarn-error.log*
180
+ pnpm-debug.log*
181
+ lerna-debug.log*
182
+
183
+ # Runtime data
184
+ pids
185
+ *.pid
186
+ *.seed
187
+ *.pid.lock
188
+
189
+ # Coverage directory used by tools like istanbul
190
+ coverage/
191
+ *.lcov
192
+
193
+ # nyc test coverage
194
+ .nyc_output
195
+
196
+ # Dependency directories
197
+ jspm_packages/
198
+
199
+ # TypeScript cache
200
+ *.tsbuildinfo
201
+
202
+ # Optional npm cache directory
203
+ .npm
204
+
205
+ # Optional eslint cache
206
+ .eslintcache
207
+
208
+ # Microbundle cache
209
+ .rpt2_cache/
210
+ .rts2_cache_cjs/
211
+ .rts2_cache_es/
212
+ .rts2_cache_umd/
213
+
214
+ # Optional REPL history
215
+ .node_repl_history
216
+
217
+ # Output of 'npm pack'
218
+ *.tgz
219
+
220
+ # Yarn Integrity file
221
+ .yarn-integrity
222
+
223
+ # parcel-bundler cache (https://parceljs.org/)
224
+ .cache
225
+ .parcel-cache
226
+
227
+ # Next.js build output
228
+ .next
229
+
230
+ # Nuxt.js build / generate output
231
+ .nuxt
232
+ dist
233
+
234
+ # Gatsby files
235
+ .cache/
236
+ public
237
+
238
+ # Storybook build outputs
239
+ .out
240
+ .storybook-out
241
+
242
+ # Temporary folders
243
+ tmp/
244
+ temp/
245
+
246
+ # Editor directories and files
247
+ .vscode/
248
+ .idea
249
+ .DS_Store
250
+ *.suo
251
+ *.ntvs*
252
+ *.njsproj
253
+ *.sln
254
+ *.sw?
255
+
256
+ # OS generated files
257
+ Thumbs.db
258
+
259
+ # Cypress
260
+ /cypress/videos/
261
+ /cypress/screenshots/
262
+
263
+ # Local development
264
+ .env.development
265
+ .env.production
266
+
267
+ # Package manager lockfiles (uncomment if you want to ignore them)
268
+ # package-lock.json
269
+ # yarn.lock
270
+ # pnpm-lock.yaml
271
+
272
+ # Skuilder specific
273
+ /src/data/local-*.json
274
+ `;
275
+ await fs.writeFile(gitignorePath, gitignoreContent);
276
+ }
86
277
  /**
87
278
  * Generate project README.md
88
279
  */
@@ -159,12 +350,20 @@ export async function processTemplate(projectPath, config, cliVersion) {
159
350
  console.log(chalk.blue('⚙️ Configuring package.json...'));
160
351
  const packageJsonPath = path.join(projectPath, 'package.json');
161
352
  await transformPackageJson(packageJsonPath, config.projectName, cliVersion);
353
+ console.log(chalk.blue('🔧 Creating vite.config.ts...'));
354
+ const viteConfigPath = path.join(projectPath, 'vite.config.ts');
355
+ if (existsSync(viteConfigPath)) {
356
+ await createViteConfig(viteConfigPath);
357
+ }
162
358
  console.log(chalk.blue('🔧 Generating configuration...'));
163
359
  const configPath = path.join(projectPath, 'skuilder.config.json');
164
360
  await generateSkuilderConfig(configPath, config);
165
361
  console.log(chalk.blue('📝 Creating README...'));
166
362
  const readmePath = path.join(projectPath, 'README.md');
167
363
  await generateReadme(readmePath, config);
364
+ console.log(chalk.blue('📄 Generating .gitignore...'));
365
+ const gitignorePath = path.join(projectPath, '.gitignore');
366
+ await generateGitignore(gitignorePath);
168
367
  console.log(chalk.green('✅ Template processing complete!'));
169
368
  }
170
369
  //# sourceMappingURL=template.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/utils/template.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/utils/template.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "0.1.3",
6
+ "version": "0.1.4",
7
7
  "type": "module",
8
8
  "description": "CLI scaffolding tool for vue-skuilder projects",
9
9
  "bin": {
@@ -33,7 +33,7 @@
33
33
  "course"
34
34
  ],
35
35
  "dependencies": {
36
- "@vue-skuilder/standalone-ui": "^0.1.3",
36
+ "@vue-skuilder/standalone-ui": "^0.1.4",
37
37
  "chalk": "^5.3.0",
38
38
  "commander": "^11.0.0",
39
39
  "fs-extra": "^11.2.0",
@@ -1,5 +1,4 @@
1
- import { promises as fs } from 'fs';
2
- import { existsSync } from 'fs';
1
+ import { promises as fs, existsSync } from 'fs';
3
2
  import path from 'path';
4
3
  import { fileURLToPath } from 'url';
5
4
  import chalk from 'chalk';
@@ -81,12 +80,86 @@ export async function transformPackageJson(
81
80
  }
82
81
  }
83
82
 
83
+ // Add missing terser devDependency for build minification
84
+ if (packageJson.devDependencies && !packageJson.devDependencies['terser']) {
85
+ packageJson.devDependencies['terser'] = '^5.39.0';
86
+ }
87
+
84
88
  // Remove CLI-specific fields that don't belong in generated projects
85
89
  delete packageJson.publishConfig;
86
90
 
87
91
  await fs.writeFile(packageJsonPath, JSON.stringify(packageJson, null, 2));
88
92
  }
89
93
 
94
+ /**
95
+ * Create a vite.config.ts to work with published packages instead of workspace sources
96
+ *
97
+ * // [ ] This should be revised so that it works from the existing vite.config.ts in standalone-ui. As is, it recreates 95% of the same config.
98
+ */
99
+ export async function createViteConfig(viteConfigPath: string): Promise<void> {
100
+ // Create a clean vite config for standalone projects
101
+ const transformedContent = `// packages/standalone-ui/vite.config.ts
102
+ import { defineConfig } from 'vite';
103
+ import vue from '@vitejs/plugin-vue';
104
+ import { fileURLToPath, URL } from 'node:url';
105
+
106
+ export default defineConfig({
107
+ plugins: [vue()],
108
+ resolve: {
109
+ alias: {
110
+ // Alias for internal src paths
111
+ '@': fileURLToPath(new URL('./src', import.meta.url)),
112
+
113
+ // Add events alias if needed (often required by dependencies)
114
+ events: 'events',
115
+ },
116
+ extensions: ['.js', '.ts', '.json', '.vue'],
117
+ dedupe: [
118
+ // Ensure single instances of core libs and published packages
119
+ 'vue',
120
+ 'vuetify',
121
+ 'pinia',
122
+ 'vue-router',
123
+ '@vue-skuilder/db',
124
+ '@vue-skuilder/common',
125
+ '@vue-skuilder/common-ui',
126
+ '@vue-skuilder/courses',
127
+ ],
128
+ },
129
+ // --- Dependencies optimization ---
130
+ optimizeDeps: {
131
+ // Help Vite pre-bundle dependencies from published packages
132
+ include: [
133
+ '@vue-skuilder/common-ui',
134
+ '@vue-skuilder/db',
135
+ '@vue-skuilder/common',
136
+ '@vue-skuilder/courses',
137
+ ],
138
+ },
139
+ server: {
140
+ port: 5173, // Use standard Vite port for standalone projects
141
+ },
142
+ build: {
143
+ sourcemap: true,
144
+ target: 'es2020',
145
+ minify: 'terser',
146
+ terserOptions: {
147
+ keep_classnames: true,
148
+ },
149
+ },
150
+ // Add define block for process polyfills
151
+ define: {
152
+ global: 'window',
153
+ 'process.env': process.env,
154
+ 'process.browser': true,
155
+ 'process.version': JSON.stringify(process.version),
156
+ },
157
+ });
158
+ `;
159
+
160
+ await fs.writeFile(viteConfigPath, transformedContent);
161
+ }
162
+
90
163
  /**
91
164
  * Generate skuilder.config.json based on project configuration
92
165
  */
@@ -114,6 +187,129 @@ export async function generateSkuilderConfig(
114
187
  await fs.writeFile(configPath, JSON.stringify(skuilderConfig, null, 2));
115
188
  }
116
189
 
190
+ /**
191
+ * Generate .gitignore file for the project
192
+ */
193
+ export async function generateGitignore(gitignorePath: string): Promise<void> {
194
+ const gitignoreContent = `# Dependencies
195
+ node_modules/
196
+ /.pnp
197
+ .pnp.js
198
+
199
+ # Production builds
200
+ /dist
201
+ /build
202
+
203
+ # Local env files
204
+ .env
205
+ .env.local
206
+ .env.development.local
207
+ .env.test.local
208
+ .env.production.local
209
+
210
+ # Log files
211
+ npm-debug.log*
212
+ yarn-debug.log*
213
+ yarn-error.log*
214
+ pnpm-debug.log*
215
+ lerna-debug.log*
216
+
217
+ # Runtime data
218
+ pids
219
+ *.pid
220
+ *.seed
221
+ *.pid.lock
222
+
223
+ # Coverage directory used by tools like istanbul
224
+ coverage/
225
+ *.lcov
226
+
227
+ # nyc test coverage
228
+ .nyc_output
229
+
230
+ # Dependency directories
231
+ jspm_packages/
232
+
233
+ # TypeScript cache
234
+ *.tsbuildinfo
235
+
236
+ # Optional npm cache directory
237
+ .npm
238
+
239
+ # Optional eslint cache
240
+ .eslintcache
241
+
242
+ # Microbundle cache
243
+ .rpt2_cache/
244
+ .rts2_cache_cjs/
245
+ .rts2_cache_es/
246
+ .rts2_cache_umd/
247
+
248
+ # Optional REPL history
249
+ .node_repl_history
250
+
251
+ # Output of 'npm pack'
252
+ *.tgz
253
+
254
+ # Yarn Integrity file
255
+ .yarn-integrity
256
+
257
+ # parcel-bundler cache (https://parceljs.org/)
258
+ .cache
259
+ .parcel-cache
260
+
261
+ # Next.js build output
262
+ .next
263
+
264
+ # Nuxt.js build / generate output
265
+ .nuxt
266
+ dist
267
+
268
+ # Gatsby files
269
+ .cache/
270
+ public
271
+
272
+ # Storybook build outputs
273
+ .out
274
+ .storybook-out
275
+
276
+ # Temporary folders
277
+ tmp/
278
+ temp/
279
+
280
+ # Editor directories and files
281
+ .vscode/
282
+ .idea
283
+ .DS_Store
284
+ *.suo
285
+ *.ntvs*
286
+ *.njsproj
287
+ *.sln
288
+ *.sw?
289
+
290
+ # OS generated files
291
+ Thumbs.db
292
+
293
+ # Cypress
294
+ /cypress/videos/
295
+ /cypress/screenshots/
296
+
297
+ # Local development
298
+ .env.development
299
+ .env.production
300
+
301
+ # Package manager lockfiles (uncomment if you want to ignore them)
302
+ # package-lock.json
303
+ # yarn.lock
304
+ # pnpm-lock.yaml
305
+
306
+ # Skuilder specific
307
+ /src/data/local-*.json
308
+ `;
309
+
310
+ await fs.writeFile(gitignorePath, gitignoreContent);
311
+ }
312
+
117
313
  /**
118
314
  * Generate project README.md
119
315
  */
@@ -203,6 +399,12 @@ export async function processTemplate(
203
399
  const packageJsonPath = path.join(projectPath, 'package.json');
204
400
  await transformPackageJson(packageJsonPath, config.projectName, cliVersion);
205
401
 
402
+ console.log(chalk.blue('🔧 Creating vite.config.ts...'));
403
+ const viteConfigPath = path.join(projectPath, 'vite.config.ts');
404
+ if (existsSync(viteConfigPath)) {
405
+ await createViteConfig(viteConfigPath);
406
+ }
407
+
206
408
  console.log(chalk.blue('🔧 Generating configuration...'));
207
409
  const configPath = path.join(projectPath, 'skuilder.config.json');
208
410
  await generateSkuilderConfig(configPath, config);
@@ -211,5 +413,9 @@ export async function processTemplate(
211
413
  const readmePath = path.join(projectPath, 'README.md');
212
414
  await generateReadme(readmePath, config);
213
415
 
416
+ console.log(chalk.blue('📄 Generating .gitignore...'));
417
+ const gitignorePath = path.join(projectPath, '.gitignore');
418
+ await generateGitignore(gitignorePath);
419
+
214
420
  console.log(chalk.green('✅ Template processing complete!'));
215
421
  }