13 - Dependency Management

Zuletzt aktualisiert am 28. Februar 2024 2 Minuten

Mit Quellcode Abhängigkeiten umgehen…

PHP Composer

Zu Installation im Root-Verzeichnis des Projekts:

brew install composer
  1. Testen ob er korrekt installiert ist, im Terminal: composer eingeben.
  2. Im Projektverzeichnis eine Datei composer.json anlegen, und die gewünschten Bibliothekenexternal link eintragen:
{
  "require": {
    "phpoffice/phpspreadsheet": "^1.14",
    "nesbot/carbon": "^2.39",
    "erusev/parsedown": "^1.7",
    "josantonius/file": "^1.1"
  }
}
  1. Im Terminal: composer update eingeben, und alle Pakete werden herunter geladen.
  2. Paket entfernen: composer remove josantonius/file

JavaScript Code über NPM verwalten

Den Java-Script Teil verwaltet man über NPMexternal link . Dazu muss man auch node jsexternal link installieren. Wie das geht hab ich in diesem Artikel beschrieben:

Aufgaben mit Gulp automatisieren

Gulp ist ein Build-Systemexternal link . Es dient dazu verschiedene Aufgaben im Webentwicklungsprozessexternal link  zu automatisieren. Auch Gulp basiert auf node jsexternal link .

Einfaches Gulp Beispiel

Wenn ich Java-Script Module über npm herunter lade, werden sie im Verzeichnis node_modules abgelegt. Darin sind dann unter anderem *.js und *.css Dateien die ich in meinem Projekt verwenden möchte. Dazu müsste ich diese Dateien an bestimmte Stellen in meinem Webprojekt kopieren. Das kann man jetzt zu Fuß erledigen, was aber bei vielen Modulen mehr als lästig wird. Um das zu automatisieren lege ich im root Verzeichnis des Projekts eine Datei gulpfile.js an, und tippe folgendes rein:

// Module definieren
const { series, src, dest } = require("gulp");

// Das ist mein Modul...
// node_modules
// ├── ...
// └── morris.js06@0.6.6
//
// Wie bekomme ich jetzt die relevanten Teile ins /assets/ Verzeichnis
// meines Projekts verteilt?

/**
 * Diese Funktion kopiert morris.js, und morris.css
 * in die passenden Verzeichnisse in meinem php Projekt.
 */
function morris() {
  console.log("deploye Morris irgendwie...");
  src("./node_modules/morris.js06/morris.js").pipe(dest("./assets/js/"));
  src("./node_modules/morris.js06/morris.css").pipe(dest("./assets/css/"));

  return Promise.resolve("Fertig...");
}

exports.morris = morris;
exports.default = series(morris); // mehrere Funktionen nacheinander ausführen

Das Skript kann ich dann im Terminal mit gulp morris, oder einfach gulp starten. Wenn ich nur gulp schreibe, wird der Default ausgeführt. Das kann jetzt soweit automatisiert werden, das Änderungen an den Dateien überwacht werden, und der Kopiervorgang jedes mal automatisch abläuft.