Npm (софтвер)

Npm
Оригинални аутор(и)Ајзек Шлутер
Програмер(и)Ребека Тарнер, Кет Марчан и други
Прво издање12. јануар 2010.; пре 14 година (2010-01-12)[1]
Стабилно издање
5.4.0 / 23. август 2017.; пре 7 година (2017-08-23)[2]
Репозиторијум Уреди на Википодацима
Написан уЈаваСкрипт
ЛиценцаУметничка лиценца 2.0
Веб-сајтwww.npmjs.com

npm (енгл. Node Package Manager) је менаџер пакета за ЈаваСкрипт програмски језик. Он је такође подразумевани менаџер пакета за ЈаваСкрипт радно окружење Node.js. Састоји се од конзоле, која се још назива npm и онлајн базе података јавних и плаћених приватних пакета, који се називају npm регистри. Овим регистрима се приступа преко клијентске конзоле, док се доступни пакети могу претраживати на npm вебсајту. Менаџером пакета и регистрима управља компанија npm (енгл. npm, Inc.)

Историјат

npm је у потпуности написан у ЈаваСкрипту и развио га је Ајзек Шлутер због тога што је сматрао да се модулирање пакета до тад "грозно" обављало и проналазећи недостатке у сличним пројектима као што су PEAR (PHP) и CPAN (Перл).

Опис

npm је садржан и препоручен у Node.js инсталационом програму.[3] npm се састоји од клијентске конзоле која се користи за интеракцију са удаљеним регистрима. Конзола омогућава корисницима коришћење и дистрибуцију ЈаваСкрипт модула који су доступни у регистру.[4] Пакети су у регистру у CommonJS формату и садрже датотеку са метаподацима у JSON формату.[5] Преко 477.000 пакета је тренутно доступно у главном npm регистру.[6] Регистар не поседује механизам за проверу уноса, што значи да доступни пакети могу бити лошег квалитета, несигурни и малициозни.[5] Уместо тога, npm се ослања на пријаве корисника на основу којих уклањају пакете који крше политику регистра тиме што су несигурни, малициозни или слабог квалитета.[7] npm нуди статистику која садржи број преузимања као и број зависних пакета како би помогао програмерима да оцене квалитет пакета.[8]

У марту 2016. године, npm је дошао у жижу медијске пажње[9] након што је пакет под називом left-pad, од кога је зависио велики број популарних ЈаваСкрипт пакета, повучен из регистра као резултат расправе.[10] Иако је пакет поново објављен након 3 сата[11] учињена је велика штета, што је довело до тога да npm промени своју политику која се тиче повлачења пакета како би предупредио сличне догађаје у будућности.[12]

Коришћење

npm може да управља пакетима који су локалне зависности на одређеном пројекту, као и глобално инсталираних ЈаваСкрипт алата.[13] Када се користи као менаџер зависности на локалном пројекту, npm може да инсталира, помоћу само једне команде, све зависности пројекта помоћу package.json фајла.[14] У овом фајлу свака зависност може да специфицира низ валидних верзија користећи семантички верзионисану шему, која омогућава програмерима да аутоматски ажурирају своје пакете а да притом избегну непожељне промене које доводе пуцања кода.[15] npm такође нуди алате за верзионисање који омогућавају програмерима да означе своје пакете одређеном ознаком верзије.[16]

Алтернативе

Постоји неколико алтернатива npm-у отвореног кода за инсталирање модуларног ЈаваСкрипт кода, као што су ied, pnpm, npm-install, npmd, и Yarn, од којих овај последњи развијен од стране Фејсбука и представљен у октобру 2016. године.[17] Сви су они компатибилни са јавним npm регистром кога подразумевано користе, али корисницима нуде другачије искуство са клијентском конзолом, које се обично огледа у побољшању перформанси и детерминистичким алгоритмима у односу на друге npm клијенте.[18]

Референце

  1. ^ „Прве верзије npm-а”. ГитХаб. Приступљено 27. 7. 2016. 
  2. ^ „npm/CHANGELOG.md”. ГитХаб. 23. 8. 2017. Приступљено 23. 8. 2017. [мртва веза]
  3. ^ Диркс, Питер (30. 3. 2016). „npm водич за почетнике — Node Package Manager”. sitepoint. Приступљено 22. 7. 2016. 
  4. ^ Ampersand.js. „Ampersand.js - Научите”. ampersandjs.com. Приступљено 22. 7. 2016. 
  5. ^ а б Ојама, Андрес; Дуна, Карл (2012). „Процена сигурности Node.js платформе”. IEEE Xplore. Приступљено 22. 7. 2016. 
  6. ^ Кенеди, Хју; ДеВај, Paul. „Разумевање npm-а”. Nsight. Архивирано из оригинала 8. 07. 2016. г. Приступљено 22. 7. 2016. 
  7. ^ „npm Кодекс понашања: прихватљив садржај пакета”. Приступљено 9. 5. 2017. 
  8. ^ npm-stat: download statistics for NPM packages
  9. ^ Јегулалп, Сердар (23. 3. 2016). „Како је један повучени ЈаваСкрипт пакет изазвао хаос?”. InfoWorld. Приступљено 22. 7. 2016. 
  10. ^ Вилијамс, Крис. „Како је један програмер управо зауставио Node, Babel и на хиљаде пројеката са 11 линија ЈаваСкрипт кода”. The Register. Приступљено 17. 4. 2016. 
  11. ^ „Kik, left-pad, и npm”. Приступљено 9. 5. 2017. 
  12. ^ „Промене у политици повлачења пакета”. Приступљено 9. 5. 2017. 
  13. ^ Елингвуд, Џастин. „Како се користи npm са Node.js пакетима на Линукс Серверу”. DigitalOcean. Приступљено 22. 10. 2016. 
  14. ^ „npm-install”. docs.npmjs. Приступљено 22. 10. 2016. 
  15. ^ „semver”. docs.npmjs. Архивирано из оригинала 03. 12. 2016. г. Приступљено 22. 10. 2016. 
  16. ^ „npm-version”. docs.npm. Приступљено 29. 10. 2016. 
  17. ^ „Здраво, Yarn!”. npm Блог. 11. 10. 2016. Приступљено 17. 12. 2016. 
  18. ^ Кац, Јехуда (11. 10. 2016). „Зашто радим на Yarn'у”. Приступљено 17. 12. 2016. 

Спољашње везе