Яке значення довідника / dist у проектах з відкритим кодом?


148

Оскільки я вперше побачив dist/каталог у багатьох проектах з відкритим кодом, як правило, на GitHub, мені було цікаво, що це означає.

З dist, vendor, lib, src, і багато інших імена папок , які ми бачимо досить часто, я іноді дивуюся , як я повинен назвати свої власні папки.

Виправте мене, якщо я помиляюся!

  • src: Містить джерела . Іноді від проекту залежать лише чисті джерела, іноді із мінімізованою версією.
  • постачальник: Містить інші залежності, як і інші проекти з відкритим кодом.
  • lib: Добре запитання, це насправді близько до vendorфактично, залежно від проекту, який ми можемо побачити одне чи інше чи обидва ...
  • dist: З того, що я бачив, він містить файли "виробництва", той, який ми повинні використовувати, якщо ми хочемо використовувати бібліотеку .

Чому відкритий код настільки заплутаний? Хіба це не можливо зробити зрозуміліше? Принаймні на кожній мові, оскільки деякі мови використовують конкретні назви.


3
Ще одну вдалу відповідь можна знайти тут .
Skipjack

Відповіді:


252

Щоб відповісти на ваше запитання:

/dist означає "розподільний", складений код / ​​бібліотека.

Структура папок залежить від побудови системи та мови програмування. Ось кілька стандартних умов:

  • src/: "вихідні" файли для створення та розвитку проекту. Тут розташовані вихідні файли-вихідні файли, перш ніж їх компілювати в меншу кількість файлів dist/, public/або build/.
  • dist/: "розповсюдження", складений код / ​​бібліотека, також названі public/або build/. Файли, призначені для виробництва або публічного використання, зазвичай знаходяться тут.
  • assets/: статичний вміст, наприклад зображення, відео, аудіо, шрифти тощо.
  • lib/: зовнішні залежності (якщо вони включені безпосередньо).
  • test/: сценарії тестів проекту, макети тощо.
  • node_modules/: включає бібліотеки та залежності для JS-пакетів, використовуваних Npm.
  • vendor/: включає бібліотеки та залежності для PHP-пакетів, використовуваних Composer.
  • bin/: файли, які додаються до вашого PATH при встановленні.

Відмітка / текстові файли:

  • README.md: Довідковий файл, який стосується налаштування, навчальних посібників та документує проект. README.txtтакож використовується.
  • LICENSE.md: будь-які права, надані вам щодо проекту. LICENSEабо LICENSE.txtє варіантами імені файлу ліцензії, що має однаковий вміст.
  • CONTRIBUTING.md: як допомогти з проектом. Іноді це вирішується у README.mdфайлі.

Конкретні (вони можуть тривати назавжди):

  • package.json: визначає бібліотеки та залежності для JS-пакетів, використовуваних Npm.
  • package-lock.json: специфічне блокування версій для встановлених залежностей package.json, використовуваних Npm.
  • composer.json: визначає бібліотеки та залежності для PHP-пакетів, використовуваних Composer.
  • composer.lock: специфічне блокування версій для встановлених залежностей composer.json, використовуваних Composer.
  • gulpfile.js: використовується для визначення функцій та завдань, які слід виконувати з Gulp.
  • .travis.yml: конфігураційний файл для CI Travis .
  • .gitignore: Специфікація файлів , які Git повинен ігнорувати .

35
Що про значення dist?
Vadorequest

23
розповсюдження, воно зазвичай містить складене програмне забезпечення.
0xcaff

2
Що з assets/папкою? Що повинно містити?
Сехемті

2
@Sekhemty, статичний вміст, такі як зображення, відео, аудіо, шрифти тощо
Quaker

& громадськість призначена для? app.use (express.static (__ dirname + '/ public')); ?? app.use (express.static (__ dirname + '/ dist')); не гарна ідея
LOG_TAG

55

Щоб відповісти на своє початкове запитання про значення distпапки:

Коротка форма distрозшифровується distributableі посилається на каталог, в якому будуть зберігатися файли, які можуть бути безпосередньо використані іншими без необхідності складання або мінімізації вихідного коду, який використовується повторно.

Приклад: Якщо я хочу використати вихідний код бібліотеки Java, яку хтось написав, то для початку використання вам потрібно скомпілювати джерела. Але якщо автор бібліотеки помістить уже попередньо скомпільовану версію у сховище, то можна просто продовжити. Така вже складена версія зберігається уdist каталозі.

Щось подібне стосується модулів JavaScript. Зазвичай JavaScript-код мінімізований і неясний для використання у виробництві. Тому, якщо ви хочете розповсюдити бібліотеку JavaScript, доцільно помістити звичайний (не мінімізований) вихідний код у srcкаталог (джерело), ​​а мінімізовану та заплутану версію - у дирекцію dist(розповсюджувану), щоб інші могли захопити мінімізовану версію праворуч геть без необхідності їх мінімізувати.

Примітка. Деякі розробники використовують замість таких імен, як target( buildабо destпризначення) dist. Але призначення цих папок однакове.


11
Я думаю, що це найкраще відповідає на питання. dist розшифровується, а не розповсюджується. Це каталог, який після того, як все було складено, збито, перекладено, зібрано та виготовлено з усіх інших джерел, файлів і дрібниць тощо. Це те, що ви хочете поширити або вказати іншим, що це розповсюджуване!
Ерік Бішард

3

Короткий зміст папок:

  • бін: двійкові файли
  • src: джерело
  • включають: заголовки C / C ++
  • lib: бібліотеки C / C ++
  • contrib: внесок інших людей
  • doc / docs: документація
  • man: посібник (Unix / Linux)

1

Насправді! "dist папка" - це результат, який ви отримуєте після зміни вихідного коду за допомогою "npm run build" або "ng build" або "ng build --prod" для виробництва.

Тим часом! Після отримання "dist папки" все ще може бути кілька речей, які вам все-таки потрібно зробити, залежно від типу проекту ✌️

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.