create-prisma-php-app 3.3.2 → 3.3.3

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 (2) hide show
  1. package/dist/index.js +98 -35
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -7,7 +7,11 @@ import{execSync,spawnSync}from"child_process";import fs from"fs";import{fileURLT
7
7
  * @param {boolean} [isDev=false] - Whether to install the dependencies as devDependencies.
8
8
  */
9
9
  async function installNpmDependencies(baseDir, dependencies, isDev = false) {
10
- console.log("Initializing new Node.js project...");
10
+ if (!fs.existsSync(path.join(baseDir, "package.json"))) {
11
+ console.log("Initializing new Node.js project...");
12
+ } else {
13
+ console.log("Updating existing Node.js project...");
14
+ }
11
15
  // Initialize a package.json if it doesn't exist
12
16
  if (!fs.existsSync(path.join(baseDir, "package.json"))) {
13
17
  execSync("npm init -y", {
@@ -357,24 +361,57 @@ async function main() {
357
361
  if (updateAnswer?.isUpdate) {
358
362
  const updateUninstallNpmDependencies = [];
359
363
  const updateUninstallComposerDependencies = [];
364
+ // Helper function to check if a composer package is installed
365
+ const isComposerPackageInstalled = (packageName) => {
366
+ try {
367
+ const composerJsonPath = path.join(projectPath, "composer.json");
368
+ if (fs.existsSync(composerJsonPath)) {
369
+ const composerJson = JSON.parse(
370
+ fs.readFileSync(composerJsonPath, "utf8")
371
+ );
372
+ return !!(
373
+ composerJson.require && composerJson.require[packageName]
374
+ );
375
+ }
376
+ return false;
377
+ } catch {
378
+ return false;
379
+ }
380
+ };
381
+ // Helper function to check if an npm package is installed
382
+ const isNpmPackageInstalled = (packageName) => {
383
+ try {
384
+ const packageJsonPath = path.join(projectPath, "package.json");
385
+ if (fs.existsSync(packageJsonPath)) {
386
+ const packageJson = JSON.parse(
387
+ fs.readFileSync(packageJsonPath, "utf8")
388
+ );
389
+ return !!(
390
+ (packageJson.dependencies &&
391
+ packageJson.dependencies[packageName]) ||
392
+ (packageJson.devDependencies &&
393
+ packageJson.devDependencies[packageName])
394
+ );
395
+ }
396
+ return false;
397
+ } catch {
398
+ return false;
399
+ }
400
+ };
360
401
  if (updateAnswer.backendOnly) {
361
402
  nonBackendFiles.forEach((file) => {
362
403
  const filePath = path.join(projectPath, "src", "app", file);
363
404
  if (fs.existsSync(filePath)) {
364
- fs.unlinkSync(filePath); // Delete each file if it exists
405
+ fs.unlinkSync(filePath);
365
406
  console.log(`${file} was deleted successfully.`);
366
- } else {
367
- console.log(`${file} does not exist.`);
368
407
  }
369
408
  });
370
409
  const backendOnlyFolders = ["js", "css"];
371
410
  backendOnlyFolders.forEach((folder) => {
372
411
  const folderPath = path.join(projectPath, "src", "app", folder);
373
412
  if (fs.existsSync(folderPath)) {
374
- fs.rmSync(folderPath, { recursive: true, force: true }); // Use fs.rmSync instead of fs.rmdirSync
413
+ fs.rmSync(folderPath, { recursive: true, force: true });
375
414
  console.log(`${folder} was deleted successfully.`);
376
- } else {
377
- console.log(`${folder} does not exist.`);
378
415
  }
379
416
  });
380
417
  }
@@ -386,44 +423,53 @@ async function main() {
386
423
  "swagger-docs"
387
424
  );
388
425
  if (fs.existsSync(swaggerDocsFolder)) {
389
- fs.rmSync(swaggerDocsFolder, { recursive: true, force: true }); // Use fs.rmSync instead of fs.rmdirSync
426
+ fs.rmSync(swaggerDocsFolder, { recursive: true, force: true });
390
427
  console.log(`swagger-docs was deleted successfully.`);
391
428
  }
392
429
  const swaggerFiles = ["swagger-config.ts"];
393
430
  swaggerFiles.forEach((file) => {
394
431
  const filePath = path.join(projectPath, "settings", file);
395
432
  if (fs.existsSync(filePath)) {
396
- fs.unlinkSync(filePath); // Delete each file if it exists
433
+ fs.unlinkSync(filePath);
397
434
  console.log(`${file} was deleted successfully.`);
398
- } else {
399
- console.log(`${file} does not exist.`);
400
435
  }
401
436
  });
402
- updateUninstallNpmDependencies.push(
403
- "swagger-jsdoc",
404
- "@types/swagger-jsdoc",
405
- "prompts",
406
- "@types/prompts"
407
- );
437
+ // Only add to uninstall list if packages are actually installed
438
+ if (isNpmPackageInstalled("swagger-jsdoc")) {
439
+ updateUninstallNpmDependencies.push("swagger-jsdoc");
440
+ }
441
+ if (isNpmPackageInstalled("@types/swagger-jsdoc")) {
442
+ updateUninstallNpmDependencies.push("@types/swagger-jsdoc");
443
+ }
444
+ if (isNpmPackageInstalled("prompts")) {
445
+ updateUninstallNpmDependencies.push("prompts");
446
+ }
447
+ if (isNpmPackageInstalled("@types/prompts")) {
448
+ updateUninstallNpmDependencies.push("@types/prompts");
449
+ }
408
450
  }
409
451
  if (!updateAnswer.tailwindcss) {
410
452
  const tailwindFiles = ["postcss.config.js"];
411
453
  tailwindFiles.forEach((file) => {
412
454
  const filePath = path.join(projectPath, file);
413
455
  if (fs.existsSync(filePath)) {
414
- fs.unlinkSync(filePath); // Delete each file if it exists
456
+ fs.unlinkSync(filePath);
415
457
  console.log(`${file} was deleted successfully.`);
416
- } else {
417
- console.log(`${file} does not exist.`);
418
458
  }
419
459
  });
420
- updateUninstallNpmDependencies.push(
460
+ // Only add to uninstall list if packages are actually installed
461
+ const tailwindPackages = [
421
462
  "tailwindcss",
422
463
  "postcss",
423
464
  "postcss-cli",
424
465
  "@tailwindcss/postcss",
425
- "cssnano"
426
- );
466
+ "cssnano",
467
+ ];
468
+ tailwindPackages.forEach((pkg) => {
469
+ if (isNpmPackageInstalled(pkg)) {
470
+ updateUninstallNpmDependencies.push(pkg);
471
+ }
472
+ });
427
473
  }
428
474
  if (!updateAnswer.websocket) {
429
475
  const websocketFiles = [
@@ -433,10 +479,8 @@ async function main() {
433
479
  websocketFiles.forEach((file) => {
434
480
  const filePath = path.join(projectPath, "settings", file);
435
481
  if (fs.existsSync(filePath)) {
436
- fs.unlinkSync(filePath); // Delete each file if it exists
482
+ fs.unlinkSync(filePath);
437
483
  console.log(`${file} was deleted successfully.`);
438
- } else {
439
- console.log(`${file} does not exist.`);
440
484
  }
441
485
  });
442
486
  const websocketFolder = path.join(
@@ -446,18 +490,28 @@ async function main() {
446
490
  "Websocket"
447
491
  );
448
492
  if (fs.existsSync(websocketFolder)) {
449
- fs.rmSync(websocketFolder, { recursive: true, force: true }); // Use fs.rmSync instead of fs.rmdirSync
493
+ fs.rmSync(websocketFolder, { recursive: true, force: true });
450
494
  console.log(`Websocket folder was deleted successfully.`);
451
495
  }
452
- updateUninstallNpmDependencies.push("chokidar-cli");
453
- updateUninstallComposerDependencies.push("cboden/ratchet");
496
+ // Only add to uninstall list if packages are actually installed
497
+ if (isNpmPackageInstalled("chokidar-cli")) {
498
+ updateUninstallNpmDependencies.push("chokidar-cli");
499
+ }
500
+ if (isComposerPackageInstalled("cboden/ratchet")) {
501
+ updateUninstallComposerDependencies.push("cboden/ratchet");
502
+ }
454
503
  }
455
504
  if (!updateAnswer.prisma) {
456
- updateUninstallNpmDependencies.push(
505
+ const prismaPackages = [
457
506
  "prisma",
458
507
  "@prisma/client",
459
- "@prisma/internals"
460
- );
508
+ "@prisma/internals",
509
+ ];
510
+ prismaPackages.forEach((pkg) => {
511
+ if (isNpmPackageInstalled(pkg)) {
512
+ updateUninstallNpmDependencies.push(pkg);
513
+ }
514
+ });
461
515
  }
462
516
  if (!updateAnswer.docker) {
463
517
  const dockerFiles = [
@@ -469,14 +523,18 @@ async function main() {
469
523
  dockerFiles.forEach((file) => {
470
524
  const filePath = path.join(projectPath, file);
471
525
  if (fs.existsSync(filePath)) {
472
- fs.unlinkSync(filePath); // Delete each file if it exists
526
+ fs.unlinkSync(filePath);
473
527
  console.log(`${file} was deleted successfully.`);
474
- } else {
475
- console.log(`${file} does not exist.`);
476
528
  }
477
529
  });
478
530
  }
531
+ // Only uninstall if there are packages to uninstall
479
532
  if (updateUninstallNpmDependencies.length > 0) {
533
+ console.log(
534
+ `Uninstalling npm packages: ${updateUninstallNpmDependencies.join(
535
+ ", "
536
+ )}`
537
+ );
480
538
  await uninstallNpmDependencies(
481
539
  projectPath,
482
540
  updateUninstallNpmDependencies,
@@ -484,6 +542,11 @@ async function main() {
484
542
  );
485
543
  }
486
544
  if (updateUninstallComposerDependencies.length > 0) {
545
+ console.log(
546
+ `Uninstalling composer packages: ${updateUninstallComposerDependencies.join(
547
+ ", "
548
+ )}`
549
+ );
487
550
  await uninstallComposerDependencies(
488
551
  projectPath,
489
552
  updateUninstallComposerDependencies
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-prisma-php-app",
3
- "version": "3.3.2",
3
+ "version": "3.3.3",
4
4
  "description": "Prisma-PHP: A Revolutionary Library Bridging PHP with Prisma ORM",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",