1 Punkte von GN⁺ 3 시간 전 | 1 Kommentare | Auf WhatsApp teilen
  • Um den Aufwand zu verringern, Web-Entwicklungswerkzeuge für jedes Projekt separat zusammenzustellen, bündelt Vite+ Runtime, Paketmanager sowie Build-, Test- und Prüfwerkzeuge in einem einzigen Einstiegspunkt
  • vp dev, vp check, vp test, vp build, vp pack, vp run sind mit Vite 8, Vitest, Rolldown, tsdown, Oxlint, Oxfmt verbunden und bieten ein konsistentes Befehlssystem
  • Seit der Alpha-Phase wurden in mehr als 12 Versionen und mehr als 500 PRs Caching, Migration, Organisations-Templates, Unterstützung für Unternehmensnetzwerke und plattformübergreifende Stabilität verbessert
  • Laut öffentlichem Repository sind mehr als 1.300 Projekte von vite-plus abhängig; Projekte wie Dify, critical, BlockNote, vinext, îles, Inkline und npmx setzen es bereits ein
  • Da 1.0 noch nicht erreicht ist, stehen Remote Caching, GitLab-CI/CD-Unterstützung, Framework- und Plugin-Kompatibilität, Migration sowie Verbesserungen bei Distributionskanälen und Diagnose noch aus

Die integrierte Toolchain von Vite+

  • Vite+ wurde als integrierte Toolchain für die Web-Entwicklung in die Beta entlassen
  • Über einen einzigen Einstiegspunkt verwaltet es Runtime und Paketmanager und liefert mehrere Frontend-Werkzeuge als getesteten Stack gemeinsam aus
  • Vollständig Open Source unter der MIT-Lizenz und nicht an ein bestimmtes Framework gebunden
  • Kann in verschiedenen Web-Projekten eingesetzt werden, darunter CLI-Tools, Bibliotheken und Web-Apps
  • Neue Projekte starten mit vp create, bestehende Projekte mit vp migrate

Entwicklung, Prüfung und Build mit denselben Befehlen

  • Vite+ ist so konzipiert, dass statt projektweise unterschiedliche Tool-Kombinationen und Befehle gelernt werden müssen, überall dasselbe Befehlssystem verwendet wird
  • Die wichtigsten Befehle sind:
    • vp dev: startet einen Entwicklungsserver auf Basis von Vite 8 mit Hot Module Replacement
    • vp check: führt Oxfmt-Formatierung, Oxlint-Linting und Typprüfung in einem Schritt aus
    • vp test: führt Unit-Tests auf Basis von Vitest aus
    • vp build: erstellt einen Production-Build auf Basis von Vite 8
    • vp pack: bündelt Bibliotheken auf Basis von tsdown und enthält Best Practices
    • vp run: führt mit dem integrierten, monorepobewussten Task-Runner npm-Skripte oder Tasks aus und nutzt intelligentes Caching
  • Je größer Team und Codebasis werden, desto stärker fallen folgende Vorteile ins Gewicht:
    • Tool-Versionen sind aufeinander abgestimmt
    • Konfigurationen lassen sich leichter teilen
    • der Einrichtungsaufwand für neue Beitragende sinkt
    • CI führt dieselben Befehle aus wie die lokale Entwicklung
  • Es richtet sich an Entwickler, die ihre Toolchain nicht immer wieder selbst zusammensetzen möchten, und an Teams, die projektübergreifend konsistente Konfigurationen wollen
  • Vite+ ersetzt das Vite-Ökosystem nicht
    • Vite-Plugins bleiben weiterhin Vite-Plugins
    • Projekte können intern weiterhin den gewünschten Paketmanager verwenden
    • Vite+ bietet eine Integrationsschicht, damit diese Elemente wie eine einzige Toolchain zusammenarbeiten

Veränderungen von der Alpha bis zur Beta

  • Seit der Alpha von Vite+ wurden nach Tests in realen Projekten mehr als 12 Versionen veröffentlicht und mehr als 500 PRs zusammengeführt
  • Zu den wichtigsten Verbesserungen gehören:
    • Intelligenteres Caching: vp run kombiniert automatisches Data Tracking mit von Vite gemeldeten Metadaten, sodass Build-Caches korrekt funktionieren, ohne Eingaben, Ausgaben und Umgebungsvariablen manuell auflisten zu müssen
    • Verbesserte Migration: vp migrate verarbeitet verschiedene App-Konfigurationen und stellt auch Migrations-Prompts für Agenten bereit
    • Enterprise-Funktionen: Mit Organisations-Templates lassen sich Konfigurationen teamübergreifend standardisieren, und dank HTTP mit Proxy- und Custom-CA-Erkennung kann vp auch hinter Unternehmens-Proxys und Firewalls ausgeführt werden
    • Plattformübergreifend: vp wurde so verbessert, dass es auf den wichtigsten Betriebssystemen und Shells zuverlässiger funktioniert
    • Feinschliff und Verbesserungen: Mehr als 180 Korrekturen und Verbesserungen sind in vite-plus eingeflossen
  • Ausführliche Änderungslisten gibt es in den Vite+-Release-Notes

Die zugrunde liegenden Werkzeuge haben sich ebenfalls weiterentwickelt

Beispiele aus der Praxis

  • Öffentliche Repositories mit Abhängigkeit von vite-plus zählen mehr als 1.300, private Projekte und globale CLI-Installationen sind nicht eingerechnet
  • Vite+ wird in sehr unterschiedlichen Projekttypen eingesetzt
    • Dify: Open-Source-Plattform zum Erstellen von LLM-Apps
    • critical: frameworkunabhängiges Critical-Path-CSS-Tool von Addy Osmani
    • BlockNote: blockbasierter Rich-Text-Editor im Notion-Stil für React
    • vinext: Vite-basiertes, Next.js-kompatibles Drop-in-Framework
    • zerobyte: Self-Hosting-Backup-Automatisierung für Endnutzer, erstellt mit TanStack und React
    • îles: Site-Generator mit partieller Hydration im Islands-Stil für Vue
    • agentsview: lokal priorisiertes Such- und Analysewerkzeug für Sessions von Coding-Agenten, erstellt mit Svelte
    • Inkline: UI-Komponentenbibliothek mit Unterstützung für Vue, React, Svelte, Angular, Solid, Qwik, Astro
    • npmx: Open-Source-Browser für npm-Registries auf Basis von Nuxt
  • Daniel Roe von npmx sagt, dass Vite+ die Entwicklererfahrung schnell hält und auch CI- sowie Review-Prozesse beschleunigt

Offene Aufgaben bis 1.0

  • Vite+ ist stabil, aber noch nicht vollständig abgeschlossen; wenn die integrierte Toolchain die benötigten Funktionen abdeckt, wird die Einführung empfohlen
  • Bis 1.0 stehen folgende Punkte im Fokus:
    • Implementierung von Remote Caching für Vite Task in vp run
    • Einführung von setup-vp für GitLab CI/CD
    • bessere Kompatibilität mit Vite-Frameworks und -Plugins insgesamt
    • Unterstützung für weitere Migrationsziele
    • zusätzliche Distributionskanäle wie eine offizielle Homebrew formula
    • klarere Dokumentation und bessere Diagnose
  • Um verbleibende Kompatibilitätslücken vor dem Release von 1.0 zu schließen, hat Community-Feedback Priorität

Installation und Migration

  • Der globale Befehl vp wird unter macOS/Linux mit folgendem Befehl installiert
curl -fsSL https://vite.plus | bash
  • Unter Windows wird folgender PowerShell-Befehl verwendet
irm https://vite.plus/ps1 | iex
  • Zum Erstellen eines neuen Projekts wird folgender Befehl verwendet
vp create
  • Um Vite+ in einem bestehenden Vite-Projekt auszuprobieren, wird folgender Befehl verwendet
vp migrate

1 Kommentare

 
GN⁺ 3 시간 전
Meinungen auf Hacker News
  • Ich mag Vite wirklich, habe aber keine Ahnung, was die anderen Tools sein sollen.
    Kaum hat man kurz den Kopf gesenkt und gearbeitet, hat sich das Frontend-Tooling plötzlich weiterentwickelt, und ich frage mich, ob es einen Trend zu einem langweiligen, aber gut funktionierenden Stack gibt.

    • Die enthaltenen Tools sind tatsächlich ziemlich gut: vitest ist ein sehr schneller Test-Runner, und selbst nachdem ich mehrere Tools wie jest oder den in Node eingebauten Test-Runner ausprobiert habe, gefällt er mir.
      oxlint ersetzt eslint, ist mit dessen Konfigurationsdateiformat kompatibel und sehr schnell, weil es nicht in JavaScript geschrieben ist. Ich habe auch biome ausprobiert, aber oxlint hatte mehr Regeln und eine bessere eslint-Kompatibilität.
      oxfmt ersetzt prettier, ist ebenfalls schneller, weil es nicht in JavaScript geschrieben ist, und rolldown ersetzt rollup, bleibt kompatibel, ist aber deutlich schneller. In neuen Projekten nutze ich diese Tools bereits hauptsächlich.
    • Die anderen Tools sind für Testing, Bundling, Linting und Formatting.
      Früher musste man Tools aus unterschiedlichen Open-Source-Projekten mit jeweils anderen Konfigurationen und Update-Zyklen verwenden; jetzt wird das als eine einfache Toolchain behandelt.
      Vite+ ist im Grunde genau dieser „langweilige, aber gut funktionierende“ Stack, mit besserer Performance und weniger Konfiguration.
    • Genau, das ist genau die Richtung.
      eslint → oxlint, prettier → oxfmt: in Rust neu geschrieben und dadurch schneller; webpack → Vite ist bereits weit genug verbreitet, dass man es akzeptiert.
      rolldown → tsdown ergänzt TypeScript-Unterstützung, und jest → vitest passt gut zu Vite.
      Im Grunde nimmt man die Konventionen, die sich in den letzten zehn Jahren etabliert haben, und bündelt TypeScript-Unterstützung, Rust-basierte Performance und Interoperabilität.
    • Ich wollte Vite ausprobieren, habe aber gegenüber esbuild keinen großen Vorteil gesehen und bin wieder davon abgekommen.
      Ich nutze auch Deno und frage mich, was daran nützlich sein soll.
    • Das ist der aktuell aufkommende moderne langweilige, aber gut funktionierende Stack.
  • Ich mag Vite, Vitest, Oxlint und Oxfmt und schaue mir bei den meisten neuen Projekten zuerst diese Richtung an.
    Ich hoffe, dass diese Leute genug Finanzierung bekommen, um mindestens die nächsten zehn Jahre weiterentwickeln zu können.
    Das ist viel besser, als ein altes Projekt zu öffnen und dort ein Durcheinander aus Gulp, Grunt, webpack und diversen anderen Tools vorzufinden. Eines dieser Projekte habe ich auch auf den neuen Stack migriert.

    • Soweit ich weiß, wurde VoidZero von Cloudflare übernommen, daher dürfte Geld kein Problem sein.
      Die Frage ist, ob Cloudflare diese Leute weiter Vite- und Vite+-Funktionen bauen lässt. Denn das sind Funktionen, die nicht nur Cloudflare, sondern allen Cloud-Plattformen nützen.
      https://blog.cloudflare.com/voidzero-joins-cloudflare/
    • Vite, ESLint, Prettier, TypeScript und React reibungslos zusammenspielen zu lassen, kann knifflig sein.
      Besonders bei Full-Stack mit serverseitigem Rendering; wenn man nur aufs Frontend schaut und TypeScript weglässt, wird es ziemlich einfach.
      Ob Vite+ bei komplexeren Fällen hilft, muss man abwarten.
  • Ich finde, dieses Projekt sollte einen besseren Namen finden.
    Es ist ziemlich verwirrend, weil es eigentlich nicht wirklich ein besseres Vite ist, sondern eher ein Bündel anderer Tools.
    Damals wollte Void Zero die Vite-Marke vielleicht monetarisieren, aber jetzt, da sie von Cloudflare übernommen wurden, besteht diese Notwendigkeit nicht mehr.

    • Da Vite um mehrere Dinge ergänzt wird, kann „plus“ mehrere Bedeutungen haben.
  • Ich nutze Vite, Vitest, Rolldown, tsdown, Oxlint und Oxfmt mit großer Zufriedenheit.
    Ich habe auch viele Pakete hart geforkt und möchte nicht zurück. Alles funktioniert einfach.
    Wenn die Namen verwirren, schaut euch zuerst Oxlint https://oxc.rs/docs/guide/usage/linter und Rolldown https://rolldown.rs/ an.
    Bei der Einführung in den letzten sechs Monaten musste ich die tsconfig nur minimal ändern.
    Normalerweise hole ich neue Pakete, sofern es nicht um Dinge wie antd6, echart, Rendering-Engines oder Geospatial-Bibliotheken geht, bereinige sie mit Claude, bringe sie auf ein striktes und einheitliches Typsystem und passe sie dann an meine Vorlieben bei Vite, tsconfig und oxlint an.
    Dadurch muss ich mich letztlich weniger ständig mit Bibliotheks-Bloat oder Supply-Chain-Angriffen beschäftigen, und der Code wird leichter lesbar und änderbar.

  • Vite hat in den vier Jahren von 2022 bis 2026 fünf Major-Versionen erhöht: 3 → 4 → 5 → 6 → 7 → 8.
    Jedes Mal gab es Breaking Changes, und Entwickler mussten migrieren; das ist zu viel. Zumal es im Vergleich zu Version 3 nicht dramatisch besser geworden ist.
    Dieses Maß an unnötiger Veränderung und ständiger Unruhe möchte ich nicht auch noch in den Rest der Entwicklungstoolchain holen.
    Wenn Vite+ am Ende nur bestehende Tools hinter einer abstrahierten Kommandozeilenschnittstelle verpackt, muss man sich für das gewünschte Verhalten durch noch mehr Indirektionsschichten kämpfen; deshalb bin ich noch nicht optimistisch.

    • Ich habe alle großen Migrationen mitgemacht, und sie liefen ziemlich reibungslos.
      An größere Probleme erinnere ich mich nicht, und es war jedes Mal im Großen und Ganzen den Aufwand wert.
    • Ich habe selbst migriert, aber es war nicht schrecklich.
      Es gab ein paar Breaking Changes, aber sie waren relativ isoliert, und die Geschwindigkeit und Verbesserungen zwischen diesen Versionen waren ziemlich erheblich.
    • Wir haben diese Major-Version-Migrationen ebenfalls alle gemacht, hatten aber keine Brüche oder großen churn.
      Ich wäre neugierig, welche Brüche ihr erlebt habt.
    • Dass es im Vergleich zu Version 3 kaum besser geworden sei, sehe ich anders.
      Die zusätzlichen Funktionen rund um serverseitiges Rendering waren eine große Verbesserung.
    • Ich bin in einem Schritt von 4 auf 8 gegangen und musste nur fünf Zeilen Konfiguration ändern.
      Ich wünschte, man würde aufhören, sich ständig über ein nicht existentes Problem zu beschweren. Ich frage mich sogar, ob diese Leute die Tools überhaupt wirklich benutzen.
  • Es ist wirklich schwer, beim Frontend- oder überhaupt beim JavaScript-Ökosystem mitzuhalten
    Ich vermisse die Zeit, in der ich mit Laravel gearbeitet habe, und wünschte, Jobs mit Laravel würden besser bezahlt

    • Mit Laravel Livewire und Alpine.js würde man wohl nicht arbeiten wollen
      Trotzdem muss man weiter dranbleiben, und das Ergebnis ist vielleicht auch nicht besonders zufriedenstellend
    • Eigentlich muss man gar nicht unbedingt mithalten
      Das, was man früher verwendet hat, funktioniert immer noch
    • Kann ich nachvollziehen. Wir ersetzen unseren Laravel-Monolithen auch langsam durch Python Lambda
      Ich vermisse die Laravel-6-Zeit wirklich
  • Da der Ansatz bei uv funktioniert hat, denke ich, dass ein fähiges Team dasselbe auch in JavaScript schaffen kann

    • Es überrascht mich, dass uv in den Kommentaren nur hier erwähnt wird
      Für mich ist das ein sehr naheliegender Vergleich, und es fühlt sich auch für das JavaScript-Ökosystem wie eine sehr willkommene Entwicklung an
      Dank uv macht die Arbeit mit Python wieder Spaß
  • Ich frage mich, ob man es wie Vite auch für Node-Builds verwenden kann oder ob es nur für den Browser gedacht ist

    • Da es Vite verwendet, gelten dieselben Einschränkungen wie bei Vite
      Allerdings nutze ich Vite mit vite-plugin-node problemlos für einen NestJS-Server
      Ein Beispiel siehe https://github.com/leosuncin/nest-vite-example/blob/master/v...
    • Meine wie maßgeschneiderte Konfiguration, die beim Targeting von Node gut funktioniert, ist hier: https://pastebin.com/ynz4B5X0
      Im Grunde muss man einfach so tun, als wäre man selbst eine Library
    • Ich verwende Vite+ auch für CLIs
      In diesem Fall nutze ich Vite nicht als Entwicklungsserver, aber Linting, Formatierung, Task-Ausführung und Caching bleiben erhalten
    • Jedes Mal, wenn jemand vorschlägt, Node-Code zu bündeln, frage ich mich immer nach dem Use Case
      Was ist der Vorteil? Geht es darum, bei SEA zu obfuskieren?
  • Ich frage mich, ob hier auch ein Abo dranhängt
    Wenn im Namen ein „+“ steht, werde ich vorsichtig und gehe automatisch davon aus, dass ein Abo dazugehört
    Nach einem Blick darauf scheint das aber nicht der Fall zu sein

    • Das war auch mein erster Gedanke
      Inzwischen ist „$name+“ fest als „Abo-Dienst von $name“ verankert
    • Dort steht „vollständig Open Source unter der MIT-Lizenz“
    • Ursprünglich war das vielleicht so geplant, aber später wurden sie wohl per Acqui-hire übernommen
    • Der Name macht mir schon etwas Sorgen
  • Ich frage mich, ob man es zusammen mit Astro verwenden kann