Моє використання npm - це генерувати мінімізований / погіршений css / js та генерувати JavaScript, необхідний на сторінках, що обслуговуються програмою django. У моїх програмах Javascript працює на сторінці для створення анімації, інколи виконує дзвінки ajax, працює в рамках VUE та / або працює з css. Якщо пакет-lock.json має деякий переважаючий контроль над тим, що є у package.json, можливо, знадобиться одна версія цього файлу. На мій досвід, це або не впливає на те, що встановлено за допомогою npm install, або, якщо це відбувається, воно досі не впливало негативно на програми, які я розгортаю. Я не використовую mongodb та інші подібні програми, які традиційно є тонкими клієнтами.
Я видаляю package-lock.json з repo, оскільки npm install створює цей файл, а npm install є частиною процесу розгортання на кожному сервері, на якому запущено додаток. Контроль версій вузла та npm виконується вручну на кожному сервері, але я обережно, щоб вони були однаковими.
Коли npm install
запускається на сервері, він змінює package-lock.json, і якщо є зміни у файлі, який записується репо на сервері, наступне розгортання WONT дозволить витягнути нові зміни з походження. Тобто ви не можете розгорнути, тому що витяг замінить зміни, внесені до пакета-lock.json.
Ви навіть не можете перезаписати локально згенерований пакет-lock.json з тим, що знаходиться в репо (reset master hard origin), оскільки npm буде скаржитися коли-небудь, коли ви видасте команду, якщо package-lock.json не відображає те, що знаходиться в node_modules завдяки npm install, тим самим порушуючи розгортання. Тепер, якщо це вказує на те, що в node_modules було встановлено трохи інші версії, це ще раз не викликало у мене проблем.
Якщо node_modules не знаходиться у вашому репортажі (і цього не повинно бути), тоді пакет-lock.json слід ігнорувати.
Якщо я щось пропускаю, будь ласка, виправте мене в коментарях, але пункт про те, що версія взята з цього файлу, не має сенсу. У файлі package.json є номери версій, і я припускаю, що цей файл використовується для створення пакетів, коли відбувається встановлення npm, як, коли я його видаляю, npm install скаржиться так:
jason@localhost:introcart_wagtail$ rm package.json
jason@localhost:introcart_wagtail$ npm install
npm WARN saveError ENOENT: no such file or directory, open '/home/jason/webapps/introcart_devtools/introcart_wagtail/package.json'
і збірка не вдається, проте при встановленні node_modules або застосуванні npm для збирання js / css, скарга не подається, якщо я видаляю package-lock.json
jason@localhost:introcart_wagtail$ rm package-lock.json
jason@localhost:introcart_wagtail$ npm run dev
> introcart@1.0.0 dev /home/jason/webapps/introcart_devtools/introcart_wagtail
> NODE_ENV=development webpack --progress --colors --watch --mode=development
10% building 0/1 modules 1 active ...
git log
полегшує справу.