Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 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 са се променяли три пъти от пускането на npm 5.0. **

1. NPM версия 5.0.x, независимо как се променя package.json, NPM I ще бъде изтеглен според заключвания файл

package-lock.json файл не е обновен след като package.json файлът е променен · Брой #16866 · NPM/NPM https://github.com/npm/npm/issues/16866
Този проблем се оплаква от този проблем, очевидно съм сменил package.json ръчно, защо не ми дадеш пакет за ъпгрейд! И тогава това води до проблема с 5.1.0...

2. След версия 5.1.0, инсталацията на npm ще игнорира заключвания файл, за да изтегли последния npm

Тогава някой повдигна този въпрос защо се игнорира заключването на пакета? · Брой #17979 · NPM/NPM https://github.com/npm/npm/issues/17979
Жалбата в крайна сметка се превърна в правилата след версия 5.4.2.

3. След версия 5.4.2, защо заключването на пакета се игнорира? · Брой #17979 · NPM/NPM 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