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

Вид: 9038|Відповідь: 0

Який package-lock.json генерується при встановленні npm?

[Копіювати посилання]
Опубліковано 13.12.2017 13:17:45 | | |
Для зміни npm node_modules дерева або будь-якої package.json дії автоматично генерується package-lock.json. Він описує точне дерево, яке генерується, щоб наступні інсталяції могли генерувати те саме дерево, незалежно від проміжних оновлень залежностей.

Цей файл призначений для подачі до репозиторію вихідного коду і доступний для різних цілей:

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

Надайте користувачам інструмент для «просування» до попереднього стану node_modules без необхідності комітувати сам каталог.

Сприяти кращій видимості змін дерева завдяки читабельним відмінностям у контролі версій.

А також оптимізувати процес встановлення, дозволяючи npm пропускати дублювання метаданих у раніше встановлених пакетах.

Ключова деталь package-lock.json полягає в тому, що його не можна опублікувати, і він буде ігноруватися, якщо він знайдеться десь поза топовим пакетом. Він має спільний формат із npm-shrinkwrap.json, фактично той самий файл, але дозволяє публікацію. Це не рекомендується, якщо ви не розгортаєте CLI-інструмент або не використовуєте процес релізу для створення продакшн-пакету.

Якщо і package-lock.json, і npm-shrinkwrap.json існують у кореневій директорії пакету, package-lock.json буде повністю ігноровано.

Оригінальне посилання: https://docs.npmjs.com/files/package-lock.json


З моменту виходу npm 5.x роль блокування 5.6.0 змінювалася багато разів, і тепер багато дрібних білих текстів в Інтернеті застрягли в попередньому перекладі документів.

Я оновив з npm3.x до npm5, але виявив, що явище при виконанні 'npm i' не відповідає популярній науковій статті в Інтернеті.

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

Також згадується, що при повторенні npm i npm ігнорує інформацію про блокування і завантажує модуль оновлення відповідно до інформації про версію версії пакету в package.json (блокування, здається, марне).

**Згідно з інформацією, правила NPM I змінювалися тричі з моменту виходу npm 5.0. **

1. NPM 5.0.x версія, незалежно від того, як змінюється package.json, npm i буде завантажений відповідно до файлу блокування

package-lock.json файл не оновлювався після зміни package.json файл · Випуск #16866 · НПМ/НПМ https://github.com/npm/npm/issues/16866
Ця проблема скаржиться на цю проблему, очевидно, я змінив package.json вручну, чому б вам не дати мені пакет оновлення! А потім це призводить до проблеми 5.1.0...

2. Після версії 5.1.0 встановлення npm ігноруватиме файл блокування для завантаження останнього npm

Тоді хтось підняв це питання: чому блокування пакетів ігнорують? · Випуск #17979 · НПМ/НПМ https://github.com/npm/npm/issues/17979
Скарга згодом еволюціонувала у правила після версії 5.4.2.

3. Після версії 5.4.2 чому ігнорується блокування пакетів? · Випуск #17979 · НПМ/НПМ https://github.com/npm/npm/issues/17979


Грубо кажучи, якщо package.json змінено, і package.json відрізняється від файлу блокування, npm завантажить останній пакет відповідно до номера версії та семантичного значення пакета під час виконання 'npm i' і оновить його до блокування.

Якщо обидва варіанти знаходяться в одному стані, то при виконанні npm я завантажую відповідно до блокування, незалежно від того, чи нова версія пакета.






Попередній:Звітуйте статистику та доповнюйте метод часу без даних
Наступний:Туторіал з npm (4): Встановлюйте пакети NPM локально
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com