Was bedeutet das Verzeichnis / dist in Open Source-Projekten?


146

Seit ich zum ersten Mal ein dist/Verzeichnis in vielen Open Source-Projekten gesehen habe, normalerweise auf GitHub, habe ich mich gefragt, was es bedeutet.

Mit dist, vendor, lib, src, und vielen anderen Ordnernamen , dass wir sehr oft zu sehen, manchmal frage ich mich , wie soll ich meine eigenen Ordner benennen.

Korrigiere mich, wenn ich falsch liege!

  • src: Enthält die Quellen . Manchmal hängen nur die reinen Quellen, manchmal mit der minimierten Version, vom Projekt ab.
  • Anbieter: Enthält andere Abhängigkeiten wie andere Open Source-Projekte.
  • lib: Gute Frage, es ist wirklich sehr nahe vendor, je nach Projekt können wir das eine oder andere oder beide sehen ...
  • dist: Soweit ich gesehen habe, enthält es die "Produktions" -Dateien, die wir verwenden sollten, wenn wir die Bibliothek verwenden möchten .

Warum ist Open Source so verwirrend? Ist es nicht möglich, die Dinge klarer zu machen? Zumindest pro Sprache, da einige Sprachen bestimmte Namen verwenden.


3
Eine weitere gute Antwort finden Sie hier .
Skipjack

Antworten:


249

Zur Beantwortung Ihrer Frage:

/dist bedeutet "verteilbar", der kompilierte Code / die kompilierte Bibliothek.

Die Ordnerstruktur variiert je nach Build-System und Programmiersprache. Hier sind einige Standardkonventionen:

  • src/: "Quell" -Dateien zum Erstellen und Entwickeln des Projekts. Dies ist , wo die ursprünglichen Quelldateien befinden, bevor sie in weniger Dateien kompiliert werden dist/, public/oder build/.
  • dist/: "Distribution", der kompilierte Code / die kompilierte Bibliothek, auch benannt public/oder build/. Die Dateien, die für die Produktion oder den öffentlichen Gebrauch bestimmt sind, befinden sich normalerweise hier.
  • assets/: statische Inhalte wie Bilder, Video, Audio, Schriftarten usw.
  • lib/: externe Abhängigkeiten (wenn direkt enthalten).
  • test/: die Testskripte, Mocks usw. des Projekts
  • node_modules/: Enthält Bibliotheken und Abhängigkeiten für JS-Pakete, die von Npm verwendet werden.
  • vendor/: Enthält Bibliotheken und Abhängigkeiten für PHP-Pakete, die von Composer verwendet werden.
  • bin/: Dateien, die bei der Installation zu Ihrem PATH hinzugefügt werden.

Markdown / Textdateien:

  • README.md: Eine Hilfedatei, die sich mit Setup, Tutorials und Dokumentationen des Projekts befasst. README.txtwird auch verwendet.
  • LICENSE.md: Alle Rechte , die Ihnen in Bezug auf das Projekt eingeräumt wurden. LICENSEoder LICENSE.txtsind Variationen des Lizenzdateinamens mit demselben Inhalt.
  • CONTRIBUTING.md: wie man mit dem Projekt hilft . Manchmal wird dies in der README.mdDatei angesprochen .

Spezifisch (diese könnten für immer weitergehen):

  • package.json: Definiert Bibliotheken und Abhängigkeiten für JS-Pakete, die von Npm verwendet werden.
  • package-lock.json: Spezifische Versionssperre für Abhängigkeiten package.json, die von Npm installiert wurden.
  • composer.json: Definiert Bibliotheken und Abhängigkeiten für PHP-Pakete, die von Composer verwendet werden.
  • composer.lock: Spezifische Versionssperre für Abhängigkeiten composer.json, die von Composer installiert wurden.
  • gulpfile.js: Wird verwendet, um Funktionen und Aufgaben zu definieren, die mit Gulp ausgeführt werden sollen.
  • .travis.yml: Konfigurationsdatei für die Travis CI- Umgebung.
  • .gitignore: Angabe der Dateien , die von Git ignoriert werden sollen.

34
Was ist mit der Bedeutung von dist?
Vadorequest

22
Verteilung enthält es normalerweise die kompilierte Software.
0xcaff

2
Was ist mit dem assets/Ordner? Was soll enthalten?
Sekhemty

2
@ Suchhemty, statische Inhalte wie Bilder, Video, Audio, Schriftarten usw.
Quaker

& Publikum gedacht für? app.use (express.static (__ dirname + '/ public')); ?? app.use (express.static (__ dirname + '/ dist')); ist keine gute Idee
LOG_TAG

52

So beantworten Sie Ihre ursprüngliche Frage zur Bedeutung des distOrdners:

Die Kurzform diststeht für distributableein Verzeichnis, in dem Dateien gespeichert werden, die direkt von anderen verwendet werden können, ohne dass der wiederverwendete Quellcode kompiliert oder minimiert werden muss.

Beispiel: Wenn ich den Quellcode einer Java-Bibliothek verwenden möchte, die jemand geschrieben hat, müssen Sie zuerst die Quellen kompilieren, um sie verwenden zu können. Wenn ein Bibliotheksautor jedoch bereits die vorkompilierte Version in das Repository einfügt, können Sie einfach fortfahren. Eine solche bereits kompilierte Version wird im distVerzeichnis gespeichert .

Ähnliches gilt für JavaScript-Module. Normalerweise wird JavaScript-Code für die Verwendung in der Produktion minimiert und verschleiert. Wenn Sie eine JavaScript-Bibliothek verteilen möchten, ist es daher ratsam, den einfachen (nicht minimierten) Quellcode in ein src(Quell-) Verzeichnis und die minimierte und verschleierte Version in das dist(verteilbare) Verzeichnis zu stellen, damit andere die minimierte Version richtig greifen können weg, ohne es selbst minimieren zu müssen.

Hinweis: Einige Entwickler verwenden , um Namen wie target, buildoder dest(Ziel) statt dist. Der Zweck dieser Ordner ist jedoch identisch.


10
Ich denke, das beantwortet die Frage am besten. dist steht für verteilbar, nicht verteilend. Es ist das Verzeichnis, in dem alles kompiliert, verschluckt, transpiliert, zusammengestellt und aus allen anderen Quellen und Dateien und Schmuckstücken usw. hergestellt wurde. Dies ist das, was Sie verteilen oder anderen mitteilen möchten, dass es verteilbar ist!
Eric Bishard

3

Zusammenfassung der Ordner:

  • bin: binaries
  • src: Quelle
  • Include: C / C ++ - Header
  • lib: C / C ++ - Bibliotheken
  • Beitrag: Beitrag von anderen Personen
  • doc / docs: Dokumentationen
  • Mann: Handbuch (Unix / Linux)

1

Tatsächlich! "dist folder" ist das Ergebnis, das Sie erhalten, nachdem Sie einen Quellcode mit "npm run build" oder "ng build" oder "ng build --prod" für die Produktion geändert haben.

Inzwischen! Nachdem Sie "dist folder" erhalten haben, müssen Sie möglicherweise noch einige Dinge tun, abhängig von Ihrem Projekttyp ✌️

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.