create-pika-minigame 1.5.0 → 1.7.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/bin/cli.js CHANGED
@@ -197,10 +197,16 @@ ${colors.reset}
197
197
  const templatesDir = path.join(__dirname, '..', 'templates');
198
198
  const srcTemplateDir = path.join(templatesDir, 'src');
199
199
  const devTemplateDir = path.join(templatesDir, 'dev');
200
+ const scriptsTemplateDir = path.join(templatesDir, 'scripts');
201
+
202
+ // Convert project name to snake_case for Module Federation scope
203
+ const snakeName = projectName.replace(/-/g, '_').toLowerCase();
200
204
 
201
205
  const replacements = {
202
206
  PROJECT_NAME: projectName,
207
+ PROJECT_NAME_KEBAB: projectName.toLowerCase(),
203
208
  PROJECT_NAME_PASCAL: pascalName,
209
+ PROJECT_NAME_SNAKE: snakeName,
204
210
  };
205
211
 
206
212
  // Copy src folder
@@ -213,11 +219,32 @@ ${colors.reset}
213
219
  copyDir(devTemplateDir, path.join(targetDir, 'dev'), replacements);
214
220
  }
215
221
 
222
+ // Copy scripts folder
223
+ if (fs.existsSync(scriptsTemplateDir)) {
224
+ copyDir(scriptsTemplateDir, path.join(targetDir, 'scripts'), replacements);
225
+ // Make deploy script executable
226
+ const deployScript = path.join(targetDir, 'scripts', 'deploy-vercel.sh');
227
+ if (fs.existsSync(deployScript)) {
228
+ fs.chmodSync(deployScript, '755');
229
+ }
230
+ }
231
+
232
+ // Copy Re.Pack config files
233
+ const repackConfigFiles = ['react-native.config.js', 'rspack.config.mjs'];
234
+ for (const configFile of repackConfigFiles) {
235
+ const src = path.join(templatesDir, configFile);
236
+ if (fs.existsSync(src)) {
237
+ const content = fs.readFileSync(src, 'utf8');
238
+ const processed = processTemplate(content, replacements);
239
+ fs.writeFileSync(path.join(targetDir, configFile), processed);
240
+ }
241
+ }
242
+
216
243
  // Step 3: Patch Podfile for fmt compatibility
217
244
  log.step(3, 'Patching for Xcode compatibility...');
218
245
  patchPodfile(targetDir);
219
246
 
220
- // Step 4: Update package.json with additional dependencies
247
+ // Step 4: Update package.json with additional dependencies and scripts
221
248
  log.step(4, 'Updating package.json...');
222
249
 
223
250
  const pkgPath = path.join(targetDir, 'package.json');
@@ -230,7 +257,23 @@ ${colors.reset}
230
257
  'react-native-safe-area-context': '4.12.0',
231
258
  };
232
259
 
233
- // No additional scripts needed - fmt fix is automatic in Podfile
260
+ pkg.devDependencies = {
261
+ ...pkg.devDependencies,
262
+ '@callstack/repack': '^5.0.0',
263
+ 'serve': '^14.2.0',
264
+ };
265
+
266
+ // Add build and deploy scripts
267
+ pkg.scripts = {
268
+ ...pkg.scripts,
269
+ 'build:ios': `npx react-native webpack-bundle --platform ios --entry-file index.js --dev false --bundle-output build/outputs/ios/remotes/${snakeName}.container.js.bundle`,
270
+ 'build:android': `npx react-native webpack-bundle --platform android --entry-file index.js --dev false --bundle-output build/outputs/android/remotes/${snakeName}.container.js.bundle`,
271
+ 'build:all': 'npm run build:ios && npm run build:android',
272
+ 'serve:ios': 'npx serve build/outputs/ios/remotes -l 9000 --cors',
273
+ 'serve:android': 'npx serve build/outputs/android/remotes -l 9000 --cors',
274
+ 'deploy': './scripts/deploy-vercel.sh',
275
+ 'deploy:prod': './scripts/deploy-vercel.sh --prod',
276
+ };
234
277
 
235
278
  fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2));
236
279
 
@@ -248,14 +291,17 @@ ${colors.bright}Next steps:${colors.reset}
248
291
 
249
292
  ${colors.bright}Available commands:${colors.reset}
250
293
 
251
- ${colors.cyan}npm run ios${colors.reset} Run on iOS simulator
252
- ${colors.cyan}npm run android${colors.reset} Run on Android emulator
253
- ${colors.cyan}npm start${colors.reset} Start Metro bundler
294
+ ${colors.cyan}npm run ios${colors.reset} Run on iOS simulator
295
+ ${colors.cyan}npm run android${colors.reset} Run on Android emulator
296
+ ${colors.cyan}npm start${colors.reset} Start Metro bundler
297
+ ${colors.cyan}npm run deploy${colors.reset} Deploy to Vercel (preview)
298
+ ${colors.cyan}npm run deploy:prod${colors.reset} Deploy to Vercel (production)
254
299
 
255
300
  ${colors.bright}Project structure:${colors.reset}
256
301
 
257
302
  src/ Game source code (edit this!)
258
303
  dev/ Development helpers (MockHost)
304
+ scripts/ Deploy scripts
259
305
 
260
306
  Happy coding! ${colors.yellow}🎮${colors.reset}
261
307
  `);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-pika-minigame",
3
- "version": "1.5.0",
3
+ "version": "1.7.0",
4
4
  "description": "CLI to scaffold Pika mini-game projects (bare React Native 0.77)",
5
5
  "author": "Pika Team",
6
6
  "license": "MIT",
@@ -0,0 +1,5 @@
1
+ const {getCommands} = require('@callstack/repack/commands');
2
+
3
+ module.exports = {
4
+ commands: getCommands(),
5
+ };