Дополнительно
Почему предпочитаете менеджер пакетов через папку библиотеки?
Когда я думаю о плюсах и минусах статического папку библиотеки и менеджер пакетов, я чувствую, что в Библиотека папка является лучшим подходом.
Плюсы я вижу в папку библиотеки:
- Не нужен внешний инструмент для управления пакетами.
- Не требуется подключение к интернету для создания.
- Быстрое построение (проверка пакета).
- Проще среды (менее требуемых знаний).
Плюсы я вижу с менеджером пакетов:
- Помогает при сложных зависимостей деревья (и которыми можно управлять загрузкой зависимость вместе со всеми его зависимостями).
- Помогает проверить, если новая версия доступна.
Промышленность, похоже, решила идти по пути менеджер пакетов для почти все, что строится сегодня. Так, что я упускаю?
68
9
Важный момент отсутствует в других ответов:
Используя менеджер пакетов означает иметь конфигурацию, которая указывает, что вы думаете версий библиотек вы using_ и гарантирует, что конфигурации информация на самом деле верна.
Зная, какие библиотеки вы используете, и какая версия, это очень важно, если вы:
Кроме того, когда вы на самом деле делать обновление, менеджер пакетов (как правило) делает все транзитивные зависимости, обновляются по мере необходимости.
В то время как с
либерал
папку, у тебя просто куча (возможно, Бинарные, и, возможно, измененные) файлы, и вы'будете иметь, чтобы догадаться, откуда они взялись и какую версию они (или доверять какой-то файл README, который может или не может быть правильным).Для решения ваших других пунктов:
Верно, но а) в качестве разработчика программного обеспечения нужно установить себе множество инструментов, в любом случае, так что одним больше, как правило, не имеет значения, и Б) обычно есть только один или несколько пакетных менеджеров в любой сфере (и Maven/Gradle в для Java, НПМ для JS/машинопись и т. д.), Так что's не как вам нужно, чтобы установить их десятки.
Все менеджеры пакетов, которые я знаю, работают офф-лайн, как только они загрузили необходимые зависимости (это может произойти сразу после загрузки самого проекта).
Наверное, правда, но кажется маловероятным, что проверка автономного пакета займет значительное количество времени (это's просто сравнивая некоторые цифры версии). Проверка online может занять некоторое время, но которую можно отключить при желании (если это вообще по умолчанию - Мэйвен например никогда не проверяет наличие обновлений для версии).
Правда, но, как объяснялось выше, папке Либ также требует знаний. Также, как описано выше, вы'будете, вероятно, работать только с горсткой разные менеджеры пакетов, которые вы'МР уже знаете.
Плюсы папку lib, быстро исчезают после того, как вы перейти от малого масштаба развития, чтобы больше работать.
Например в "пользу" и не требует внешнего инструмента является сфабрикованным работу требуется вручную управлять своей зависимости, поэтому инструмент будет у вас (более чем в одном смысле).
Вы Don'т необходимость подключения к интернету для менеджера пакетов. Вы можете использовать локальные хранилища.
Быстрее строить может быть правдой, но это'ы вряд ли что-то, что должен определить, следует ли использовать менеджер пакетов или нет. Мы'повторно не говорю о величинах разница в конце концов, и это тоже зависит от вашей конфигурации. Вы можете легко сделать медленный построения с помощью менеджера пакетов, но это'ы в принципе вредительство.
Проще средах (меньше знаний требуется)? Опять же, в небольших масштабах развития вполне возможно. Вы сможете вести полностью проект в голове, вплоть до каждого из нескольких библиотек используется. Добавить простой файл Makefile / другие сборочный скрипт и вы'ве получил себе полный пакет.
Но это вовсе'т сделать среды проще, он работает только в простых средах. В больших масштабах развития вы'll быть рады, что вы're, используя стандартные инструменты, а не индивидуальные решения. После всех, вы только должны выучить его один раз (и когда менеджер пакетов дежурные заменен на новый классная вещь, вы должны понять, что слишком).
Вы'вновь отсутствует многих преимущества пакетных менеджеров.
Недавно преобразован наш продукт с помощью вручную скачал библиотеки для автоматического управления пакетами с помощью NuGet, я могу сказать, что через менеджер пакетов имеет огромные преимущества.
Наш продукт реализуется в 27 проектах c#, который является относительно небольшой по нынешним's стандарты. Некоторые из наших зависимостей третьей стороны есть десятки сборок.
До в NuGet, если бы я хотел, чтобы обновить все наши зависимости до последней версии, мне придется:
С 27 проектов и десятки зависимостей сборки, этот процесс был очень подвержен ошибкам и может занять несколько часов.
Теперь, когда мы'вэ обновлены с помощью NuGet, это's все сделано для меня с одной командой.
Что'ы вроде не сказать, что это? Если я буду использовать менеджер пакетов, я не'т должны иметь папку lib. Я также Дон'т иметь, чтобы управлять собой пакеты.
Кроме того, не имея подключения к интернету в настоящее время развивается довольно редко (возможно, за исключением нахождения в пути), приличный менеджер пакетов должен'т требуют, чтобы вы должны иметь последнюю версию приложения. Он может жаловаться, но там's нет причин, чтобы не строить с версией, что уже установлена
Что's довольно маргинальной speedboost, но вы можете, вероятно, сделать замечание за это.
Большинство менеджеров пакетов так просто в эти дни, что он'ы вряд ли стоит пытаться их обойти, делая эти. Там's даже визуально клиенты, если вы хотите. Они на самом деле скрывают много Крофт, что происходит.
Пакетные менеджеры также позволит вам поделиться этими пакетами между различными проектами. Если 5 из моих проектов используется одна и та же версия наддува, там's нет необходимости дублировать это для каждого проекта. Это особенно актуально для сложных зависимостей деревья, о которых вы говорите.
С папку lib управления пакетами только для этого проекта, в то время как пакетный менеджер позволяет сделать это для всей среды разработки с помощью одного инструмента.
Это разница между просто using библиотек (каталог lib), и, используя их, поддерживать мета-информации (менеджер пакетов). Такие мета-информация касается номера версии, (транзитивно) зависимостей между библиотеками и такие.
Обсуждениях ада DLL, совместимости библиотек, системы модуля Java, OSGi и таких как минимум должен быть достаточно убедительным, какой стоит иметь некоторую форму управления зависимостями.
Также есть благо общей (локальной) репозитория, так что несколько проектов не нужно сохранять копии импортируемых библиотек. Если у вас есть проект с 20 подмодулей, некоторые из этих модулей, имеющих 40 нечетное зависимостей.
В некоторых случаях папка lib может быть необходимо, например при работе с устаревшими библиотеками (его версия больше не поддерживается/в наличии), локально модифицированной версией библиотеки, ...
Но за все остальное, это's, как застройщик, взяв на себя роль диспетчера пакетов:
И ИМХО, это's меньше знаний требуется, потому что вы должны узнать об использовании внешнего инструмента, но меньше о библиотеках (т. е. зависимости).
Есть еще одна проблема, не распространяются другие вопросы: обмен депс.
Позвольте'ы сказать, у вас есть два пакета строительство одной библиотеке. В лучшем случае, не будет coflicts, но все же жесткого диска пространство дважды. В худшем, там будет различных конфликтов, как версии.
Если вы используете менеджер пакетов, он будет установить библиотеку только один раз (в разных версиях) и уже путь к нему.
П. С.: Конечно, вам нужно динамическое связывание (или аналогичную функцию в ваш язык), чтобы получить это Pro.
Одна из основных причин, почему разделяемых библиотек рассматриваются как элемент прогресса в 90'с эпохи Unix и Windows систем, как они могут снизить использование оперативной памяти при нескольких программ, используя тот же набор библиотек были загружены. Космический код нужно только один раз выделен в точных библиотека и версии этой библиотеки только для каждого экземпляра оставшейся памяти для статических переменных.
Многие операционные системы используют общие библиотеки таким образом, что зависит от механизмов как вызов mmap в Unix() API-интерфейс, который означает, что библиотека не только нужно быть точно такой же версии, но на самом деле тот же файл. Это просто невозможно, чтобы воспользоваться всеми преимуществами программы, которая входит свой собственный набор библиотек.
Учитывая, что в памяти намного дешевле, и версии библиотек нужны более разнообразные, чем в 90-е годы, этот аргумент не'т нести как сегодня много веса.