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

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

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

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

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

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

Ответ 1

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

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

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

  • src/: "исходные" файлы для сборки и разработки проекта. Здесь находятся исходные файлы, прежде чем они будут скомпилированы в меньшее количество файлов в dist/, public/ или build/.
  • dist/: "распределение", скомпилированный код/​​библиотека, также называемая public/ или build/. Файлы, предназначенные для промышленного или публичного использования, обычно находятся здесь.
  • 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: файл конфигурации для среды Travis CI.
  • .gitignore: спецификация файлов подразумевает, что будет игнорироваться Git.

Ответ 2

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

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

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

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

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

Ответ 3

Сводка папок:

  • bin: двоичные файлы
  • src: source
  • включить: заголовки C/С++
  • lib: библиотеки C/С++
  • вклад: вклад других людей
  • doc/docs: документация
  • man: manual (Unix/Linux)