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.


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.

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.


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)

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 ✌️

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.