Jakie jest znaczenie katalogu / dist w projektach open source?

148

Odkąd po raz pierwszy zobaczyłem dist/katalog w wielu projektach open source, zwykle na GitHubie, zastanawiałem się, co to znaczy.

Z dist, vendor, lib, src, i wiele innych nazw folderów, które widzimy dość często, czasami zastanawiam się, w jaki sposób należy wymienić własne foldery.

Popraw mnie, jeśli się mylę!

  • src: zawiera źródła . Czasami tylko czyste źródła, czasami z wersją zminimalizowaną, zależą od projektu.
  • sprzedawca: zawiera inne zależności, podobnie jak inne projekty open source.
  • lib: Dobre pytanie, jest naprawdę blisko vendor, w zależności od projektu możemy zobaczyć jeden lub drugi lub oba ...
  • dist: Z tego co widziałem, zawiera pliki "produkcyjne", z których powinniśmy skorzystać, jeśli chcemy skorzystać z biblioteki .

Dlaczego open source jest tak zagmatwany? Czy nie można zrobić rzeczy jaśniej? Przynajmniej na język, ponieważ niektóre języki używają określonych nazw.

Vadorequest
źródło
3
Kolejną dobrą odpowiedź można znaleźć tutaj .
Skipjack

Odpowiedzi:

252

Odpowiedzieć na Twoje pytanie:

/dist oznacza „dystrybuowalny”, skompilowany kod / bibliotekę.

Struktura folderów różni się w zależności od systemu kompilacji i języka programowania. Oto kilka standardowych konwencji:

  • src/: pliki „źródłowe” do tworzenia i rozwijania projektu. To gdzie oryginalne pliki źródłowe znajdują, zanim zostanie skompilowany do mniejszej liczby plików do dist/, public/lub build/.
  • dist/: "dystrybucja", skompilowany kod / biblioteka, również nazywana public/lub build/. Pliki przeznaczone do produkcji lub użytku publicznego zwykle znajdują się tutaj.
  • assets/: treści statyczne, takie jak obrazy, wideo, audio, czcionki itp.
  • lib/: zależności zewnętrzne (jeśli są dołączone bezpośrednio).
  • test/: projekt testuje skrypty, makiety itp.
  • node_modules/: zawiera biblioteki i zależności dla pakietów JS, używane przez Npm.
  • vendor/: zawiera biblioteki i zależności dla pakietów PHP używane przez Composera.
  • bin/: pliki, które są dodawane do twojej PATH podczas instalacji.

Pliki Markdown / tekstowe:

  • README.md: Plik pomocy, który dotyczy instalacji, samouczków i dokumentacji projektu. README.txtjest również używany.
  • LICENSE.md: wszelkie prawa przyznane w związku z projektem. LICENSElub LICENSE.txtsą odmianami nazwy pliku licencji, mającymi tę samą zawartość.
  • CONTRIBUTING.md: jak pomóc w projekcie. Czasami jest to opisane w README.mdpliku.

Konkretne (mogą trwać wiecznie):

  • package.json: definiuje biblioteki i zależności dla pakietów JS, używane przez Npm.
  • package-lock.json: specyficzna blokada wersji dla zależności zainstalowanych z package.json, używana przez Npm.
  • composer.json: definiuje biblioteki i zależności dla pakietów PHP używane przez Composera.
  • composer.lock: specyficzna blokada wersji dla zależności zainstalowanych z composer.json, używana przez Composer.
  • gulpfile.js: używany do definiowania funkcji i zadań do uruchomienia z Gulp.
  • .travis.yml: plik konfiguracyjny dla środowiska Travis CI .
  • .gitignore: Specyfikacja plików, które mają być ignorowane przez Git.
0xcaff
źródło
35
A co ze znaczeniem dist?
Vadorequest
23
dystrybucji, zwykle zawiera skompilowane oprogramowanie.
0xcaff
2
A co z assets/folderem? Co ma zawierać?
Sekhemty
2
@Sekhemty, statyczne treści, takie jak obrazy, wideo, audio, czcionki itp.
Quaker
i publiczne przeznaczone dla? app.use (express.static (__ dirname + '/ public')); ?? app.use (express.static (__ dirname + '/ dist')); to nie jest dobry pomysł
LOG_TAG
55

Aby odpowiedzieć na pierwotne pytanie dotyczące znaczenia distfolderu:

Shortform distoznacza distributablei odnosi się do katalogu, w którym będą przechowywane pliki, które mogą być bezpośrednio wykorzystane przez innych bez potrzeby kompilacji lub Minify kodu źródłowego, który jest ponownie wykorzystane.

Przykład: Jeśli chcę użyć kodu źródłowego biblioteki Java, którą ktoś napisał, musisz najpierw skompilować źródła, aby z niego skorzystać. Ale jeśli autor biblioteki umieści już prekompilowaną wersję w repozytorium, możesz po prostu iść dalej. Taka już skompilowana wersja jest zapisywana w distkatalogu.

Coś podobnego dotyczy modułów JavaScript. Zwykle kod JavaScript jest zminimalizowany i zaciemniony do użycia w środowisku produkcyjnym. Dlatego, jeśli chcesz rozpowszechniać bibliotekę JavaScript, zaleca się umieszczenie zwykłego (nie zminimalizowanego) kodu srcźródłowego w katalogu (źródłowym), a zminimalizowaną i zaciemnioną wersję w dist(dystrybuowalnym) Directoy, aby inni mogli prawidłowo pobrać zminimalizowaną wersję bez konieczności ich samodzielnego zmniejszania.

Uwaga: niektórzy programiści używają nazw takich jak target, buildlub dest(miejsce docelowe) zamiast dist. Ale cel tych folderów jest identyczny.

Benny Neugebauer
źródło
11
Myślę, że to najlepiej odpowiada na pytanie. dist oznacza dystrybucję, a nie dystrybucję. Jest to katalog, w którym wszystko zostało skompilowane, przejęte, przetransponowane, zmontowane i wyprodukowane ze wszystkich innych źródeł, plików i bibelotów itp. To jest to, co chcesz rozpowszechniać lub wskazywać innym, że jest do dystrybucji!
Eric Bishard
3

Podsumowanie folderów:

  • bin: pliki binarne
  • src: źródło
  • obejmują: nagłówki C / C ++
  • lib: biblioteki C / C ++
  • wkład: wkład innych osób
  • doc / docs: dokumentacje
  • man: manual (Unix / Linux)
Travor Liu
źródło
1

Tak właściwie! „folder dist” to wynik uzyskany po zmodyfikowaniu kodu źródłowego za pomocą „npm run build”, „ng build” lub „ng build --prod” do celów produkcyjnych.

W międzyczasie! Po pobraniu „folderu dist” może być jeszcze kilka rzeczy do zrobienia w zależności od typu projektu ✌️

Oyeleye Oluwasegun
źródło