Розуміння залежностей у реативних носіях

Залежності є зовнішні бібліотеки або модулі, які ваш проект спирається на додавання функціональності, розробки потокового контенту або поліпшення продуктивності. У React Native, залежності зазвичай управляється за допомогою npm або пряжі - менеджери з пакетів JavaScript, які керують установкою бібліотеки, оновленнями, контроль версій та іноді навіть рідним кодом. На відміну від стандартного веб-додатку, React Native проекти часто купують JavaScript залежності поряд з рідними залежностями (iOS CocoaPods, Android Gradle файли), що робить управління залежностю більш наготовленим.

Залежності впадають в дві категорії:

  • JavaScript залежностей] – чисті бібліотеки JS (наприклад, , , які працюють без будь-якої рідної конфігурації.
  • Нативні залежності] – бібліотеки, які вимагають заглиблення на рідний код (наприклад, , ). Ці часто потребують додаткових кроків налаштування, таких як або ручна зміна Gradle.

React Native документація] надає деталі щодо ініціалізації проекту та його типової залежності дерево.

Встановлення залежностей

Для отримання нової бібліотеки до проекту React Native використовуйте команду менеджера пакета. Наприклад, для установки react-navigation], запустіть:

npm install @react-navigation/native @react-navigation/stack

або з пряжею:

yarn add @react-navigation/native @react-navigation/stack

Після установки деякі бібліотеки вимагають посилання на рідний код. У React Native 0.60+ автоматично керує більшість рідних залежностей. Однак деякі бібліотеки (особливо ті, з нестандартними рідними видами або сторонніми SDKs) все ще вимагають ручних кроків:

  • Для iOS: або для установки підкладок CocoaPods.
  • Для Андроїд: бібліотечний автоматично об'єднаний, але ви можете додати репозиторію або змінити , якщо React Native пакет бібліотеки не автоматично шифрується.

Завжди перевірте посібник з встановлення бібліотеки – багато популярних бібліотек після встановлення кроків, щоб уникнути аварійних ситуацій.

Використання npx реаг-нативного посилання (Legacy)

Для проектів, які використовують React Native <0.60, вам необхідно вручну посилання на рідні залежності з . Ця команда модіфікує ваш Podfile і/або . Якщо ви підтримуєте проект спадщини, врахуйте міграцію до автоматичного повідомлення .

Економія залежностей

За замовчуванням, npm і пряжа зберігати встановлені пакети до вашого package.json файл під або розділ. Це відстежує всі залежності і їх діапазони версій, забезпечуючи тим самим іншим розробникам або середовищем розгортання може встановити той же набір пакетів з одним командуванням ( або ).

Коли ви встановите пакет без явного маркування його як де-відповідача, він зберігається під . Для інструментів, які використовуються тільки під час розробки (наприклад, , , ], використовуйте:

npm install --save-dev package-name
yarn add --dev package-name

З метою забезпечення чіткого поділу між часовими та де залежностями зменшує розмір пакету у виробництві та запобігає випадковому включенню будівельних засобів в архіві магазину додатків.

Управління версіями залежностей

Визначте певні версії у вашому package.json] допомагає запобігти несподіваним питанням, викликаним оновленнями. Ви можете використовувати семантичний варіант (семвер) для керування оновленнями:

  • – приймає будь-яку незначну або патчову версію вище 1.0.0 (наприклад, 1.1.0, 1.2.5), але не 2.0.0.
  • - приймає тільки версії патчів вище 1.0.0 (наприклад, 1.0.1, 1.0.9) але не 1.1.0.
  • – прикріплений до точної версії 1.0.0 (без оновлення).

Для виготовлення додатків, закріпіть прямі залежності до точної версії (наприклад, ) для уникнення випадкового перервування змін під час розгортання. Використовуйте файл блокування ( або ) для того, щоб кожен інсталяційний виробляє ідентичні дерева.

Налаштування версії

Якщо дві бібліотеки вимагають різних версій одного пакета, ви можете зіткнутися з попередженнями про залежність або помилки в режимі runtime. Інструменти для вирішення конфліктів:

  • npm ls пакет-name – відображає дерево залежностей та висвітлює дублікати.
  • 'яrn чому пакет-name – пояснює, чому встановлюється пакет.
  • npm dedupe / 'яrn-deduplicate] - планшети, де можливо.

Для React Native зверніть увагу на варіанти конфліктування , , або рідні модулі, такі як . Невідповідні версії можуть викликати шифрові помилки, такі як "Нативний модуль не можна знайти."

Внесення залежності

Регулярно оновлюється залежності є важливою для забезпечення безпеки, виконання та доступу до нових функцій. Використовуйте наступні підходи:

  • Minor/Patch update: або – сейф для нерозривних змін.
  • Major оновлення: вручну bump версія і запустити . Огляд бібліотеки змінного блоку для розбиття змін API.
  • Інтерактивний модерн: (встановлений окремо) для перегляду, які пакети мають останні версії, після чого вибірково оновлення.

При оновленні основного тексту, який відреагує від імені , завжди слідувати офіційному Реактивний посібник з підвищення якості і використання для з'єднання змін у файлах шаблону вашого проекту. Тест ретельно на як і на тренажерах iOS, так і на пристроях, які мають важливе оновлення.

Автоматизаційні оновлення з CI / CD

У безперервному інтеграційній трубопроводі, встановленому робочим пунктом або періодично, створює запит на незначні оновлення, і викликає повну тестову люкс. Це запобігає рупції залежностей при збереженні стабільного середовища.

Видалення невикористаних залежностей

При використанні бібліотеки більше не використовується, видаліть його для зменшення розміру пакету і полегшують обслуговування:

npm uninstall library-name
yarn remove library-name

Невикористані пакети можуть лінгвісти навіть після видалення, якщо вони були транзитні залежності. Запуск або для видалення додаткових пакетів. Для більш ретельного очищення слід розглянути:

  • depcheck] – інструмент, який визначає невикористані залежності у вашому кодовому рядку.
  • npx реагує-нативна бібліотека посилання (юрида) – видаляє будь-які рідні посилання артефакти.

Кращі практики управління залежностей

  • Регуляторно перегляд та оновлення залежностей Розклад щомісячного «аудиту залежностей» – перевірка консультантів безпеки (), оновлення до останніх стабільних версій та очищення застарілих пакетів.
  • Keep залежностей до мінімального значення Уникайте бібліотек «кухня раковина»; оберіть фокус, добре збережені альтернативи (наприклад, для ікон замість імпортування всього комплекту UI).
  • Використовувати семантичні версії для керування оновленнями] Пиріг основних версій та спиратися на файли блокування для відтворюваності.
  • Test ретельно після оновлення залежностей] Тестування блоків, інтеграційні тести, і ручне тестування UI на обох платформах. Зверніть увагу на зміну поведінки модуля.
  • Maintain a clear і замки файли] Уникайте ручних редагувань, які можуть ввести невідповідності. Commit або для керування версіями, щоб забезпечити ідентичні установки по середовищах.
  • Prefer yarn over npm if you need deterministic installs and workspace Ярн Беррі (v2+) пропонує Plug'n'Play, який може прискорити встановлення, але може знадобитися перевірки сумісності з React Native.
  • Use для діагностики поширених залежностей і питань середовища перед відключенням.

Обробка рідних залежностей з кокосою

Для iOS завжди комітують для блокування версій рідних под. Run , коли ви модернізуєте React рідну бібліотеку, щоб отримати останні сумісні версії під. Для Андроїд, переконайтеся, що не має конфлікту ] або значення по бібліотеках.

Використання монорепози з реативним

Якщо ваш проект використовує монорепо (наприклад, Nx, Turborepo, Lerna), керувати залежностями на рівні кореня з робочими просторами. Будьте обережні з підйомом – деякі React Native бібліотеки можуть знадобитися варіанти, щоб уникнути транзитних конфліктів залежностей.

Загальні Питви та Як уникнути

  • ] "Не знайдено модуля" помилок після установки npm: Видалити , , і запустити свіжу установку. Якщо використовувати пряжу, видаліть і (але обережно з файлами блокування).
  • iOS build не може після додавання бібліотеки: Забезпечити вам ран і те, що подфіксовано домен бібліотеки. Перевірте журнали побудови Xcode для помилок «ліберіг не знайдено».
  • Android runtimecrash через відсутній рідний модуль: Перевірити, що пакет бібліотеки Android автоматично регулятор або що ви вручну додали його .
  • ] Дублікатний символ або метод конфліктів: ] і вирішення конфліктуючих кодів, шляхом оновлення або зменшення одного з бібліотек.

Зовнішні ресурси

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