Должен ли я зафиксировать свою папку wwwroot/lib в веб-приложении ASP .Net Core?

Я только что создал веб-приложение ASP .Net с помощью команды dotnet new webapp.

Интересно, нужно ли зафиксировать папку wwwroot/lib? Похоже, что он содержит версионные библиотеки, и версия больше нигде в приложении не упоминается, поэтому я думаю, что мне следует их зафиксировать. Но я действительно не хочу иметь дистрибутивы сторонних библиотек в моем репозитории git.

dotnet new mvc поставляется с 57 файлами общим размером 7,8 МБ в папке wwwroot/lib, но без системы управления пакетами, которая могла бы вытащить их, если они не являются частью репозитория. Странно фиксировать так много сторонних файлов и добавлять их в свой собственный контроль версий.
KyleMit 22.06.2022 20:55

Другой компромисс, о котором никто не упоминал ранее (и я уже сталкивался с этим раньше), заключается в том, что какая-либо из этих библиотек становится недоступной или вам нужно запустить очень старую сборку с использованием гораздо более старых версий фреймворка/библиотеки, и эти библиотеки не могут быть загружены или собраны/скомпилированы с более новыми версиями фреймворка и доступными собственными заголовками/компиляторами.

Behrooz 28.06.2022 09:24
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
4
2
1 214
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

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

Если указанная библиотека невелика и вы хотите лучше обеспечить целостность кода, вы можете зафиксировать wwwroot/lib.

Ответ принят как подходящий

С недавними изменениями в основном веб-приложении ASP.Net. вы можете игнорировать добавление клиентской библиотеки (содержимое папки wwwroot) в свой контроль версий, такой как git.

они должны быть восстановлены во время сборки.

вы можете использовать LibMan для восстановления этих библиотек во время сборки.

эта статья от Microsoft расскажет вам, как включить восстановление клиентской библиотеки во время сборки, чтобы вам не приходилось добавлять их в систему управления версиями.

поскольку он также содержит конкретную версию, поэтому проблем с совместимостью не будет.

пример файла libman.json

 {
  "version": "1.0",
  "defaultProvider": "cdnjs",
  "libraries": [
    {
      "library": "[email protected]",
      "files": [
        "jquery.min.js",
        "jquery.js",
        "jquery.min.map"
      ],
      "destination": "wwwroot/lib/jquery/"
    },
    {
      "provider": "unpkg",
      "library": "[email protected]",
      "destination": "wwwroot/lib/bootstrap/"
    },
    {
      "provider": "filesystem",
      "library": "C:\\temp\\lodash\\",
      "files": [
        "lodash.js",
        "lodash.min.js"
      ],
      "destination": "wwwroot/lib/lodash/"
    }
  ]
}

Надеюсь, это полезно.

Я использую Libman в течение многих лет. В последнее время были некоторые сбои, приводящие к недоступности пакетов. В одном из своих проектов я даже решил удалить Libman и поместить каждую зависимость в папку lib-raw с контролируемой версией, где я закрепляю определенные версии зависимостей.

citronas 27.06.2022 10:15

@citronas Просто любопытно, как вы управляете ими в проекте? И какой инструмент вы используете для управления им?

CesarB 03.02.2023 16:59

@CesarB Мы используем Git для контроля версий

citronas 05.02.2023 21:44

Решение представляет собой компромисс между временем сборки и наличием «восстанавливаемых» файлов в репозитории. В нескольких проектах я изначально игнорировал файлы в wwwroot/lib и использовал libman.json и восстановление клиентских библиотек во время сборки . Это восстановление повлияло на «бесплатные минуты», предоставляемые CI (Github Actions, Azure DevOps), поэтому я отменил свое решение; и вручную восстановил эти файлы и отправил файлы wwwroot/lib в репозиторий.

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

Другие вопросы по теме