Jump to content

НПМ

НПМ
Оригинальный автор(ы) Исаак З. Шлютер
Разработчик(и) npm, Inc. (дочерняя компания GitHub , [1] дочерняя компания Microsoft )
Первоначальный выпуск 12 января 2010 г .; 14 лет назад ( 12.01.2010 ) [2]
Стабильная версия
10.8.0 [3]  Отредактируйте это в Викиданных / 15 мая 2024 г.
Репозиторий
Написано в JavaScript
Платформа Кросс-платформенный
Тип Менеджер пакетов
Лицензия Художественная лицензия 2.0
Веб-сайт www .npmjs

npm — это менеджер пакетов для языка программирования JavaScript , поддерживаемый npm, Inc., дочерней компанией GitHub . npm — это менеджер пакетов по умолчанию для среды выполнения JavaScript Node.js , который включен в качестве рекомендуемой функции в установщик Node.js. [4]

Он состоит из клиента командной строки, также называемого npm, и онлайн-базы данных общедоступных и платных частных пакетов, называемой реестром npm. Доступ к реестру осуществляется через клиент, а доступные пакеты можно просматривать и искать на веб-сайте npm. Менеджер пакетов и реестр управляются npm, Inc.

Хотя «npm» обычно понимается как аббревиатура от «Node Package Manager», официально это рекурсивный бэкроним фразы «npm не является аббревиатурой». [5]

История [ править ]

npm был разработан Исааком З. Шлютером в результате того, что он «увидел ужасно выполненную упаковку модулей» и вдохновился другими подобными проектами, такими как PEAR ( PHP ) и CPAN ( Perl ). [6] npm — это JavaScript-замена pm, сценария оболочки . [7]

Компания npm, Inc. была основана в 2014 году в Окленде, Калифорния , США, соучредителем Лори Восс. Брайан Богенсбергер присоединился к компании в качестве генерального директора в июле 2018 года и ушел в отставку в сентябре 2019 года. [8] Перед отставкой Богенсбергера Лори Восс подала в отставку в июле 2019 года. [9]

В марте 2020 года npm была приобретена компанией GitHub , которая является дочерней компанией Microsoft .

Использование [ править ]

npm может управлять пакетами, которые являются локальными зависимостями конкретного проекта, а также глобально установленными инструментами JavaScript. [10] При использовании в качестве менеджера зависимостей для локального проекта npm может установить одной командой все зависимости проекта через package.json файл. [11] В package.json В файле каждая зависимость может указывать диапазон допустимых версий с использованием схемы семантического управления версиями, что позволяет разработчикам автоматически обновлять свои пакеты и в то же время избегать нежелательных критических изменений. [12] npm также предоставляет разработчикам инструменты для обновления версий, позволяющие помечать свои пакеты определенной версией. [13] npm также предоставляет package-lock.json[14] файл, в котором есть запись о точной версии, используемой проектом после оценки семантического управления версиями в package.json.

Клиент [ править ]

npm Клиент интерфейса командной строки позволяет пользователям использовать и распространять модули JavaScript, доступные в реестре. [15]

В феврале 2018 г. в версии 5.7.0 была обнаружена проблема, из-за которой при запуске sudo npm в системах Linux изменится право собственности на системные файлы, что навсегда нарушит работу операционной системы. [16]

В npm версии 6 была введена функция аудита, которая помогает разработчикам выявлять и устранять уязвимости безопасности в установленных пакетах. [17] Источник уязвимостей безопасности был взят из отчетов, обнаруженных на платформе Node Security Platform (NSP), и был интегрирован с npm после приобретения NSP компанией npm. [18]

Реестр [ править ]

Пакеты в реестре представлены в формате модуля ECMAScript (ESM) или CommonJS и включают файл метаданных в формате JSON . [19]

В основном реестре npm доступно более 1,3 миллиона пакетов. [20]

В реестре не предусмотрен какой-либо процесс проверки отправки, а это означает, что найденные там пакеты потенциально могут быть низкого качества, небезопасными или вредоносными. [19] Вместо этого npm полагается на отчеты пользователей, чтобы удалять пакеты, если они нарушают политики из-за низкого качества, небезопасности или вредоносности. [21] npm предоставляет статистику, включая количество загрузок и количество зависимых пакетов, чтобы помочь разработчикам оценить качество пакетов. [22]

Внутри npm использует базу данных NoSQL Couch для управления общедоступными данными. [23]

Безопасность и разрушение [ править ]

левая панель [ править ]

В марте 2016 года пакет под названием left-pad был неопубликован в результате спора об именах между Азером Кочулу, индивидуальным инженером-программистом, и Киком . [24] [25] Пакет пользовался огромной популярностью на платформе: от него зависели тысячи проектов, и до его удаления его загрузили 15 миллионов раз. [24] [26] Несколько проектов, критически важных для экосистемы JavaScript, включая Babel и Webpack, зависели от left-pad и были приведены в негодность. [27] Хотя пакет был переиздан через три часа, [28] это вызвало массовые сбои, в результате чего npm изменил свою политику в отношении отмены публикации, чтобы предотвратить подобное событие в будущем. [29]

мирно-невойна [ править ]

В марте 2022 года разработчик Брэндон Нозаки Миллер , сопровождающий node-ipc пакет, добавлен peacenotwar как зависимость от пакета; peacenotwar рекурсивно перезаписывает содержимое жесткого диска затронутого компьютера смайликом сердца, если у него есть белорусский или российский IP-адрес. Посылка также оставляет текстовый файл на машине , содержащий сообщение протеста против российского вторжения в Украину . Vue.js , который использует node-ipc в качестве зависимости, не привязывал свои зависимости к безопасной версии, а это означает, что некоторые пользователи Vue.js подвергались воздействию вредоносного пакета, если зависимость была получена как последний пакет. [30] [31] Затронутая зависимость также ненадолго присутствовала в версии 3.1 Unity Hub ; Однако в тот же день было выпущено исправление, устраняющее проблему. [32]

Другие примечательные инциденты [ править ]

В ноябре 2018 года было обнаружено, что вредоносный пакет был добавлен в качестве зависимости к версии 3.3.6 популярного пакета. event-stream. [33] Вредоносный пакет под названием flatmap-stream, содержал зашифрованную полезную нагрузку, которая украла биткойны из определенных приложений. [34]

В мае 2021 года pac-resolver, пакет npm, который загрузили более 3 миллионов раз в неделю, обнаружил уязвимость, позволяющую удаленно выполнять код . [35] Уязвимость возникла из-за того, как пакет передал файлы конфигурации, и была исправлена ​​в версиях 5 и выше. [36]

В январе 2022 года мейнтейнер популярного пакета colors нажатие изменений печатает мусорный текст в бесконечном цикле. [26] Сопровождающий также очистил репозиторий от другого популярного пакета: fakerи его пакет на npm и заменил его README, который гласил: «Что на самом деле случилось с Аароном Шварцем [37]

В мае 2023 года несколько пакетов npm, включая bignum были обнаружены с целью кражи учетных данных и информации пользователей с затронутых компьютеров. Исследователи обнаружили, что эти пакеты были скомпрометированы с помощью эксплойта с использованием Amazon S3 и корзин node-gyp инструмент командной строки. [38]

Альтернативы [ править ]

Существует ряд альтернатив npm с открытым исходным кодом для установки модульного JavaScript, включая Yarn , [39] Бун и Дено . Deno и Bun также предоставляют среду выполнения JavaScript, но только Deno работает независимо от реестра NPM или любого централизованного репозитория. [40] и по состоянию на январь 2024 года поддержка реестра НПМ все еще является предметом продолжающейся работы. [41] Все они совместимы с общедоступным реестром npm и используют его по умолчанию, но предоставляют разные возможности на стороне клиента, обычно направленные на повышение производительности и детерминированности по сравнению с клиентом npm. [42]

См. также [ править ]

Ссылки [ править ]

  1. ^ «GitHub, принадлежащий Microsoft, приобретает менеджер пакетов JavaScript Npm» . GeekWire . 17 марта 2020 г.
  2. ^ «Самые ранние выпуски npm» . Гитхаб . Проверено 5 января 2019 г.
  3. ^ «Выпуск 10.8.0» . 15 мая 2024 г. Проверено 23 мая 2024 г.
  4. ^ Диркс, Питер (30 марта 2016 г.). «Руководство для начинающих по npm — диспетчеру пакетов Node» . точка сайта . Проверено 22 июля 2016 г.
  5. ^ "НПМ" . НПМ . 15 мая 2024 года. Архивировано из оригинала 14 мая 2024 года.
  6. ^ Шлютер, Исаак З. (25 марта 2013 г.). «Забудьте о CommonJS. Он мертв. **Мы — серверный JavaScript.**» . Гитхаб .
  7. ^ «НПМ/Кли» . Гитхаб .
  8. ^ Чан, Розали. «Брайан Богенсбергер, генеральный директор JavaScript Package Startup NPM, уходит в отставку» . Бизнес-инсайдер . Бизнес-инсайдер . Проверено 30 июня 2021 г.
  9. ^ Чан, Розали. «Соучредитель NPM и директор по данным Лори Восс уходит в отставку» . Бизнес-инсайдер . Бизнес-инсайдер . Проверено 30 июня 2021 г.
  10. ^ Эллингвуд, Джастин. «Как использовать npm для управления пакетами Node.js на сервере Linux» . Цифровой Океан . Проверено 22 октября 2016 г. .
  11. ^ «npm-установить» . docs.npmjs . Проверено 22 октября 2016 г. .
  12. ^ «семвер» . docs.npmjs . Архивировано из оригинала 3 декабря 2016 года . Проверено 22 октября 2016 г. .
  13. ^ "npm-версия" . docs.npm . Проверено 29 октября 2016 г.
  14. ^ Койрала, Шивпрасад (21 августа 2017 г.). «Зачем нужен package-lock.json в Node?» . кодпроект .
  15. ^ Амперсанд.js. «Ampersand.js — Обучение» . ampersandjs.com . Проверено 22 июля 2016 г.
  16. ^ «Критические разрешения файловой системы Linux изменяются в последней версии» . Гитхаб . Проверено 25 февраля 2018 г. .
  17. ^ нпм. « Аудит npm: выявление и исправление небезопасных зависимостей» . Блог npm . Проверено 14 августа 2018 г.
  18. ^ нпм. «Служба Node Security Platform закрывается 30 сентября» . Блог npm . Проверено 14 августа 2018 г.
  19. Перейти обратно: Перейти обратно: а б Оямаа, Андрес; Дууна, Карл (2012). «Оценка безопасности платформы Node.js» . 2012 Международная конференция по интернет-технологиям и защищенным транзакциям . IEEE. ISBN  978-1-4673-5325-0 . Проверено 22 июля 2016 г.
  20. ^ Насри, Ахмад (14 апреля 2020 г.). «Прощайте, и спасибо за все посылки!» . Блог npm . Проверено 6 января 2021 г.
  21. ^ «Кодекс поведения npm: приемлемое содержимое пакета» . Проверено 9 мая 2017 г.
  22. ^ Ворбах, Пол. «npm-stat: статистика загрузки пакетов NPM» . npm-stat.com .
  23. ^ «Реестр | Документы npm» . docs.npmjs.com . Проверено 10 мая 2021 г.
  24. Перейти обратно: Перейти обратно: а б Уильямс, Крис. «Как один разработчик только что сломал Node, Babel и тысячи проектов в 11 строках JavaScript» . Регистр . Проверено 17 апреля 2016 г.
  25. ^ Коллинз, Кейт (27 марта 2016 г.). «Как один программист сломал Интернет, удалив крошечный фрагмент кода» . Кварц . Проверено 23 декабря 2020 г.
  26. Перейти обратно: Перейти обратно: а б Шарма, Акс (27 июля 2022 г.). «Протестное ПО набирает обороты: почему разработчики саботируют собственный код» . ТехКранч . Проверено 11 мая 2024 г.
  27. ^ «Как 17 строк кода уничтожили самые горячие стартапы Кремниевой долины» . ХаффПост . 24 марта 2016 года . Проверено 11 мая 2024 г.
  28. ^ «кик, левая панель и npm» . Проверено 9 мая 2017 г.
  29. ^ «изменения в политике отмены публикации» . Блог npm (архив) . Проверено 23 января 2022 г.
  30. ^ «БОЛЬШОЙ саботаж: знаменитый пакет npm удаляет файлы в знак протеста против войны в Украине» . Пипящий компьютер . Проверено 17 марта 2022 г.
  31. ^ Юха Сааринен (17 марта 2022 г.). « Зависимость пакета npm 'Protestware', помеченная как атака на цепочку поставок» . Новости ИТ . следующиемедиа .
  32. ^ Провен, Лиам (18 марта 2022 г.). «Обновлена ​​библиотека JavaScript для очистки файлов с российских компьютеров» . Регистр . Ситуация Издательство. Архивировано из оригинала 18 марта 2022 года . Проверено 18 марта 2022 г.
  33. ^ Гудин, Дэн (26 ноября 2018 г.). «Широко используемое программное обеспечение с открытым исходным кодом содержало бэкдор для кражи биткойнов» . Арс Техника . Проверено 11 мая 2024 г.
  34. ^ Клэберн, Томас. «Проверьте свои репозитории... Код для кражи криптовалют проникает в довольно популярную библиотеку NPM (2 миллиона загрузок в неделю)» . www.theregister.com . Проверено 11 мая 2024 г.
  35. ^ Шарма, Акс (2 сентября 2021 г.). «Пакет NPM с 3 миллионами загрузок в неделю имел серьезную уязвимость» . Арс Техника . Проверено 11 мая 2024 г.
  36. ^ Клэберн, Томас. «Библиотека JavaScript, загружаемая 3 миллиона раз в неделю, делает приложения уязвимыми для взлома с помощью злонамеренных конфигураций прокси-сервера» . www.theregister.com . Проверено 11 мая 2024 г.
  37. ^ «Разработчик портит «цвета» библиотек NPM и «фейкер» ломает тысячи приложений» . Пипящий компьютер . Проверено 9 января 2022 г.
  38. ^ Берт, Джефф. «Захваченные корзины S3 использовались при атаках на пакеты npm» . www.theregister.com . Проверено 11 мая 2024 г.
  39. ^ «Привет, Ярн!» . Блог npm . 11 октября 2016 года . Проверено 17 декабря 2016 г.
  40. ^ «Управление зависимостями» . Документы Дено . Проверено 6 января 2024 г.
  41. ^ «Модули Node и npm | Документы Deno» . docs.deno.com . Проверено 16 января 2024 г.
  42. ^ Кац, Иегуда (11 октября 2016 г.). «Почему я работаю на Yarn» . Проверено 17 декабря 2016 г.

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 72e1fe259343e155af889b0796313607__1717498800
URL1:https://arc.ask3.ru/arc/aa/72/07/72e1fe259343e155af889b0796313607.html
Заголовок, (Title) документа по адресу, URL1:
npm - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)