Ein schlankes Beispielprojekt zu ddev-nub -- zum Nachvollziehen, nicht zum Nachbauen. Die Befehle hier entsprechen 1:1 denen aus dem Blogbeitrag "Node.js in ddev nicht mehr so zäh: nub und das neue Add-on ddev-nub".
Zwei kleine, aber echte Node-Jobs für nub:
- Ein winziges Vite-Frontend (
index.html,src/main.ts) -- gebaut überddev nubx vite build. - Ein TypeScript-Modul mit
enum,namespaceund einer Parameter Property (src/demo.ts) -- Dinge, die Node beim direkten Ausführen einer.ts-Datei ablehnt, nub aber ohne separaten Transpilationsschritt versteht.test/demo.test.tsprüft es überddev nub run test.
- ddev ist installiert und läuft.
Das ddev-nub-Add-on ist bereits Teil dieses
Projekts (siehe .ddev/web-build/Dockerfile.nub, .ddev/docker-compose.nub.yaml und
.ddev/commands/web/{nub,nubx}) -- ein eigener ddev add-on get-Schritt ist nicht nötig.
git clone <this-repo-url>
cd ddev-nub-example
ddev start
ddev nub installDanach stehen ddev nub und ddev nubx bereit.
Build -- nubx als npx-Ersatz führt das lokale vite-Binary direkt aus node_modules/.bin aus:
ddev nubx vite buildTest -- der Script-Runner führt den test-Eintrag aus package.json aus, der wiederum
den Datei-Runner auf test/demo.test.ts ansetzt:
ddev nub run testDatei-Runner direkt -- ganz ohne package.json-Umweg, die Datei mit enum/namespace/
Parameter Property wird direkt ausgeführt:
ddev nub src/demo.tsDie Datei .node-version legt die Node-Version fest, mit der nub die obigen
Befehle ausführt -- ganz ohne nvm oder manuellen Umweg. .nvmrc oder ein engines-Feld in
package.json funktionieren genauso; nub übernimmt die passende Version bei Bedarf automatisch.
Dieses Repository pinnt die nub-Version über .ddev/.env.nub, damit ein
Klon in einem Jahr noch genauso baut wie heute. Zum Aktualisieren:
ddev dotenv set .ddev/.env.nub --nub-version=<version>
ddev restartDie im Blogbeitrag zitierten Beschleunigungsfaktoren sind Herstellerangaben von nub selbst --
mit der üblichen Vorsicht zu genießen, die man Benchmarks des jeweiligen Werkzeugs entgegenbringt.
Ein grober eigener Vergleich braucht nur time:
time ddev nub run testWer zusätzlich einen Paketmanager wie pnpm im Container installiert (z. B. per corepack),
kann denselben Skript-Aufruf darüber gegenrechnen:
time ddev exec pnpm run testAussagekräftig wird das erst im eigenen Projekt, mit dessen tatsächlicher Paketanzahl und CI-Hardware -- hier lässt sich nur das Prinzip zeigen, keine belastbare Zahl.