Что означает каталог / dist в проектах с открытым исходным кодом?

159

С тех пор как я впервые увидел dist/каталог во многих проектах с открытым исходным кодом, обычно на GitHub, мне стало интересно, что это значит.

С dist, vendor, lib, src, и многие другие имена папок , которые мы видим довольно часто, я иногда удивляюсь , как я должен назвать свои собственные папки.

Поправьте меня если я ошибаюсь!

  • src: содержит исходные коды . Иногда от проекта зависят только чистые исходники, иногда с минифицированной версией.
  • vendor: содержит другие зависимости, как и другие проекты с открытым исходным кодом.
  • lib: Хороший вопрос, это действительно близко к vendorдействительности, в зависимости от проекта мы можем увидеть тот или иной или оба ...
  • dist: Судя по тому, что я видел, он содержит "производственные" файлы, которые мы должны использовать, если мы хотим использовать библиотеку .

Почему открытый исходный код так запутан? Разве нельзя сделать яснее? По крайней мере, для каждого языка, потому что некоторые языки используют определенные имена.

Vadorequest
источник
3
Еще один хороший ответ можно найти здесь .
Skipjack

Ответы:

272

Чтобы ответить на ваш вопрос:

/dist означает «распространяемый», скомпилированный код / ​​библиотека.

Структура папки зависит от системы сборки и языка программирования. Вот несколько стандартных соглашений:

  • src/: "исходные" файлы для сборки и развития проекта. Здесь находятся исходные исходные файлы, прежде чем они будут скомпилированы в меньшее количество файлов в dist/, public/или build/.
  • dist/: "distribution", скомпилированный код / ​​библиотека, также называемая public/или build/. Здесь обычно находятся файлы, предназначенные для производственного или публичного использования.
  • assets/: статический контент, такой как изображения, видео, аудио, шрифты и т. д.
  • lib/: внешние зависимости (если включены напрямую).
  • test/: скрипты тестов проекта, mocks и т. д.
  • 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: config для среды Travis CI .
  • .gitignore: Спецификация файлов, которые Git должен игнорировать .
0xcaff
источник
35
А как насчет значения dist?
Vadorequest
23
дистрибутив обычно содержит скомпилированное программное обеспечение.
0xcaff
2
А что с assets/папкой? Что должно содержать?
Sekhemty
2
@Sekhemty, статический контент, такой как изображения, видео, аудио, шрифты и т. Д.
Quaker
& паблик предназначен для? app.use (express.static (__ dirname + '/ public')); ?? app.use (express.static (__ dirname + '/ dist')); не очень хорошая идея
LOG_TAG 09
58

Чтобы ответить на ваш исходный вопрос о значении distпапки:

Сокращенная форма distозначает distributableи относится к каталогу, в котором будут храниться файлы, которые могут напрямую использоваться другими без необходимости компилировать или минимизировать исходный код, который используется повторно.

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

Нечто подобное применимо и к модулям JavaScript. Обычно код JavaScript минимизирован и обфусцирован для использования в продакшене. Поэтому, если вы хотите распространять библиотеку JavaScript, рекомендуется поместить простой (не минифицированный) исходный код в src(исходный) каталог, а минифицированную и обфусцированную версию в dist(распространяемую) директорию, чтобы другие могли получить минифицированную версию прямо прочь, не уменьшая его самостоятельно.

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

Бенни Нойгебауэр
источник
11
Я думаю, это лучший ответ на вопрос. dist означает распространяемый, а не распространяемый. Это каталог, который после того, как все было скомпилировано, проглочено, перекомпилировано, собрано и произведено из всех других источников, файлов, безделушек и т. Д., Это то, что вы хотите распространить или указать другим, что это распространяется!
Эрик Бишард
4

Резюме папок:

  • bin: двоичные файлы
  • src: источник
  • включают: заголовки C / C ++
  • lib: библиотеки C / C ++
  • contrib: вклад других людей
  • doc / docs: документация
  • человек: руководство (Unix / Linux)
Травор Лю
источник
2

Фактически! "dist folder" - это результат, который вы получаете после изменения исходного кода с помощью "npm run build", "ng build" или "ng build --prod" для производства.

Между тем! После получения "dist folder" вам все еще может быть нужно сделать несколько вещей в зависимости от типа вашего проекта ✌️

Оэлей Олувасегун
источник