~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 72E1FE259343E155AF889B0796313607__1717498800 ✰
Заголовок документа оригинал.:
✰ npm - Wikipedia ✰
Заголовок документа перевод.:
✰ НПМ — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Npm ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/72/07/72e1fe259343e155af889b0796313607.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/72/07/72e1fe259343e155af889b0796313607__translat.html ✰
Дата и время сохранения документа:
✰ 21.06.2024 13:07:32 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 4 June 2024, at 14:00 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

НПМ — Википедия 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 — диспетчеру пакетов узла» . точка сайта . Проверено 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://en.wikipedia.org/wiki/Npm
Заголовок, (Title) документа по адресу, URL1:
npm - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)