Gatsby-Build-Skript mit PHP

Kürzlich habe ich eine statische Gatsby-Site mit Produktseiten erstellt. Ich habe Gatsby + Strapi zum Generieren der statischen Seiten verwendet. Immer wenn ich die Produktdetails in Strapi aktualisiere, muss ich die statischen Seiten mit Gatsby Clean- und Build-Befehlen generieren / erstellen.

Um das Gatsby Clean, Build zu automatisieren und die Dateien von einem Ordner in einen anderen Ordner zu verschieben (da mein Gatsby-Ordner und der statische Site-Ordner unterschiedlich sind), habe ich ein PHP-Skript erstellt.

Erstellen Sie zuerst ein Shell-Skript (z. B. gatsbybuild.sh) mit der entsprechenden Berechtigung

//gatsbybuild.sh
gatsby clean
gatsby build

Als nächstes erstellen Sie eine PHP-Datei, um Gatsby zu erstellen, und verschieben Sie die statischen Seiten in den entsprechenden Ordner auf dem Server

Angenommen, der Ordner „gatsbyserver“ ist das Gatsby-Setup.

<?php
  //gatsbybuild.php

  $output = shell_exec('./gatsbybuild.sh');
  print_r($output);

  //after gatsby build move the generated static pages to site root folder.
  rcopy("/var/www/html/gatsbyserver/public", "/var/www/html/");

  function rrmdir($dir) {
    if (is_dir($dir)) { 
     $objects = scandir($dir); 
     foreach ($objects as $object) { 
       if ($object != "." && $object != "..") { 
         if (is_dir($dir."/".$object) && !is_link($dir."/".$object))
           rrmdir($dir."/".$object);
         else
           unlink($dir."/".$object); 
       } 
     }
     rmdir($dir); 
    } 
  }

  // Function to Copy folders and files       
  function rcopy($src, $dst) {
    if (file_exists ( $dst ))
        rrmdir ( $dst );
    if (is_dir ( $src )) {
        mkdir ( $dst );
        $files = scandir ( $src );
        foreach ( $files as $file )
            if ($file != "." && $file != "..")
                rcopy ( "$src/$file", "$dst/$file" );
    } else if (file_exists ( $src ))
      	copy ( $src, $dst );
  }

?>

Wichtiger Hinweis: Stellen Sie sicher, dass die Berechtigungen für die Ordner www-data:www-data lauten.

Similar Posts

Leave a Reply

Your email address will not be published.