NPM (software) - Npm (software)
![]() | tento článek příliš spoléhá na Reference na primární zdroje.Červen 2020) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
![]() Aktuální od roku 2020 | |
Původní autoři | Isaac Z. Schlueter. |
---|---|
Vývojáři | npm, Inc. (dceřiná společnost společnosti GitHub[1], dceřiná společnost společnosti Microsoft ) |
První vydání | 12. ledna 2010[2] |
Stabilní uvolnění | 7.1.0 / 4. prosince 2020[3] |
Úložiště | ![]() |
Napsáno | JavaScript |
Plošina | Cross-platform |
Typ | Správce balíčků |
Licence | Umělecká licence 2.0 |
webová stránka | www |
npm (původně zkratka pro Správce balíků uzlů)[4] je správce balíčků pro JavaScript programovací jazyk. npm, Inc. je dceřinou společností společnosti GitHub, americká nadnárodní společnost, která poskytuje hosting pro vývoj softwaru a správu verzí s využitím Git. Je to výchozí správce balíčků pro běhové prostředí JavaScriptu Node.js. Skládá se z klienta příkazového řádku, nazývaného také npm, a online databáze veřejných a placených soukromých balíčků, které se nazývají registr npm. Do registru se přistupuje prostřednictvím klienta a dostupné balíčky lze procházet a prohledávat na webu npm. Správce balíků a registr spravuje společnost npm, Inc.
Dějiny
npm je napsán výhradně v JavaScriptu a byl vyvinut Isaacem Z. Schlueterem jako výsledek toho, že „bylo vidět, že balení modulů bylo provedeno strašně“ a na základě inspirace z dalších podobných projektů jako HRUŠKA (PHP ) a CPAN (Perl ).[5]
Pozoruhodné rozbití
- V březnu 2016 přitáhly npm pozornost tisku[6] po volání balíčku
levá podložka
, historicky používaný jako příklad, který se stal závislostí mnoha populárních balíčků JavaScriptu, byl nepublikován jako výsledek sporu o pojmenování.[7] Ačkoli byl balíček znovu publikován o tři hodiny později,[8] způsobil rozsáhlé narušení, což vedlo společnost npm ke změně své politiky týkající se nepublikování, aby se zabránilo podobné události v budoucnu.[9] - V únoru 2018 byl objeven problém ve verzi 5.7.0, ve které běží
sudo npm
v systémech Linux by změnilo vlastnictví systémových souborů a trvale by narušilo operační systém.[10] - V červenci 2018 se NPM pověření udržovatele populární
rozsah eslint
balíček byl kompromitován, což mělo za následek škodlivé vydánírozsah eslint
, verze 3.7.2. Škodlivý kód kopíruje přihlašovací údaje NPM běžícího počítačerozsah eslint
a nahraje je útočníkovi.[11] - V listopadu 2018 bylo zjištěno, že škodlivý balíček byl přidán jako závislost na verzi 3.3.6 populárního balíčku
stream událostí
. Škodlivý balíček s názvemflatmap-stream
obsahoval šifrované užitečné zatížení, které krade bitcoiny z určitých aplikací. Správci NPM odpověděli odstraněním nevhodného balíčku.[12][13] - V dubnu 2020 zavolal malý balíček
je-slib
vyústil ve výpadek bezserverových aplikací a nasazení po celém světě na základě závislosti mnoha velkých a důležitých aplikací.[14]
Popis
npm je zahrnuta jako doporučená funkce v Node.js instalátor.[15] NPM sestává z a příkazový řádek klient, který komunikuje se vzdáleným registrem. Umožňuje uživatelům využívat a distribuovat moduly JavaScriptu, které jsou k dispozici v registru.[16]Balíčky v registru jsou v CommonJS formát a zahrnout soubor metadat ve formátu JSON formát.[17]Více než 477 000 balíčků je k dispozici v hlavním registru npm.[18] Registr nemá žádný proces prověřování pro odeslání, což znamená, že nalezené balíčky mohou být nízké kvality, nezabezpečené nebo škodlivé.[17] Místo toho npm spoléhá na to, že uživatelské zprávy sundají balíčky, pokud porušují zásady tím, že jsou nízké kvality, nezabezpečené nebo škodlivé.[19] npm odhaluje statistiky včetně počtu stažení a počtu závislých balíčků, které pomáhají vývojářům při posuzování kvality balíčků.[20]
V NPM verze 6 byla zavedena funkce auditu, která vývojářům pomáhá identifikovat a opravit problémy se zranitelností a zabezpečením v nainstalovaných balíčcích.[21] Zdroj bezpečnostních problémů byl převzat ze zpráv nalezených na Node Security Platform (NSP) a je integrován s npm od akvizice NSP společností npm.[22]
Používání
npm může spravovat lokální balíčky závislosti konkrétního projektu, stejně jako globálně nainstalované nástroje JavaScriptu.[23]Při použití jako správce závislostí pro místní projekt může npm nainstalovat v jednom příkazu všechny závislosti projektu prostřednictvím balíček.json
soubor.[24] V balíček.json
soubor, každá závislost může určit rozsah platných verze pomocí schématu sémantického verzování, které umožňuje vývojářům automaticky aktualizovat své balíčky a současně se vyhnout nechtěným změnám.[25]npm také poskytuje nástroje pro narušení verzí pro vývojáře, aby označili své balíčky konkrétní verzí.[26] NPM také poskytuje balíček-lock.json
[27] soubor, který má po vyhodnocení sémantického verzování ve Windows záznam přesné verze použité projektem balíček.json
.
Alternativy
Existuje řada open-source alternativ k npm pro instalaci modulárního JavaScriptu, včetně ied
, pnpm
, npmd
a Yarn, z nichž poslední vydala společnost Facebook v říjnu 2016.[28] Všichni jsou kompatibilní s veřejným registrem npm a používají jej ve výchozím nastavení, ale poskytují různé zážitky na straně klienta, obvykle zaměřené na zlepšení výkonu a determinismus ve srovnání s npm klientem.[29]
Na JSConf 2019 oznámil bývalý technický ředitel NPM nový federovaný registr balíků Entropic, který je zaměřen na decentralizaci běžných JavaScriptu.[30]
Společnost
Za softwarem npm stojí společnost npm, Inc. se sídlem v Oaklandu v Kalifornii. Generální ředitel Bryan Bogensberger, který do společnosti nastoupil v červenci 2018, rezignoval v září 2019. Před rezignací Bogensbergera odstoupila v červenci 2019 spoluzakladatelka NPM Laurie Voss.[31]
GitHub oznámila v březnu 2020, že získává společnost npm, Inc.[32]
Viz také
Reference
- ^ „Společnost GitHub vlastněná společností Microsoft získá správce balíčků JavaScript Npm“. GeekWire. 17. března 2020.
- ^ „Nejstarší vydání npm“. GitHub. Citováno 5. ledna 2019.
- ^ „cli / CHANGELOG.md nejpozději“. GitHub. Citováno 4. prosince 2020.
- ^ „Počáteční pokles. Ošklivé, povrchní a ještě ne tak docela„ práce v programu… · npm / cli @ 4626dfa “. GitHub.
- ^ Schlueter, Isaac Z. (25. března 2013). „Zapomeňte na CommonJS. Je mrtvý. ** Jsme JavaScript na straně serveru. **“. GitHub.
- ^ Yegulalp, Serdar (23. března 2016). "Jak jeden trhl balíček JavaScriptu způsobil zmatek". InfoWorld. Citováno 22. července 2016.
- ^ Williams, Chris. „Jak jeden vývojář právě zlomil Node, Babel a tisíce projektů v 11 řádcích JavaScriptu“. Registrace. Citováno 17. dubna 2016.
- ^ „kik, left-pad a npm“. Citováno 9. května 2017.
- ^ „změny zásad nepublikování“. Citováno 9. května 2017.
- ^ „Kritická oprávnění systému souborů Linux jsou změněna nejnovější verzí“. GitHub. Citováno 25. února 2018.
- ^ „Virus in eslint-scope? · Vydání # 39 · eslint / eslint-scope“. GitHub.
- ^ „Podrobnosti o incidentu streamování událostí“. Blog NPM. Citováno 28. listopadu 2018.
- ^ „Závislost backdoorů? Flatmap-stream-0.1.1 a flatmap-stream-0.1.2“. Github. Citováno 28. listopadu 2018.
- ^ „ERR_INVALID_PACKAGE_TARGET“. Github. Citováno 22. srpna 2020.
- ^ Dierx, Peter (30. března 2016). „Průvodce pro začátečníky po npm - správce balíčků uzlů“. sitepoint. Citováno 22. července 2016.
- ^ Ampersand.js. „Ampersand.js - učit se“. ampersandjs.com. Citováno 22. července 2016.
- ^ A b Ojamaa, Andres; Duuna, Karl (2012). „Posouzení bezpečnosti platformy Node.js“. 2012 Mezinárodní konference o internetových technologiích a zabezpečených transakcích. IEEE. ISBN 978-1-4673-5325-0. Citováno 22. července 2016.
- ^ Kennedy, Hugh; DeVay, Paule. „Porozumění npm“. Nsight. Archivovány od originál dne 8. července 2016. Citováno 22. července 2016.
- ^ „Kodex chování NPM: přijatelný obsah balíčku“. Citováno 9. května 2017.
- ^ Vorbach, Paul. "npm-stat: stáhnout statistiky pro balíčky NPM". npm-stat.com.
- ^ npm. "'NPM audit ': identifikujte a opravte nezabezpečené závislosti ". Blog NPM. Citováno 14. srpna 2018.
- ^ npm. „Služba Node Security Platform se vypíná 30. 9.“. Blog NPM. Citováno 14. srpna 2018.
- ^ Ellingwood, Justine. „Jak používat npm ke správě balíků Node.js na serveru Linux“. DigitalOcean. Citováno 22. října 2016.
- ^ "npm-install". docs.npmjs. Citováno 22. října 2016.
- ^ "semver". docs.npmjs. Citováno 22. října 2016.
- ^ "npm-version". docs.npm. Citováno 29. října 2016.
- ^ Koirala, Shivprasad (21. srpna 2017). "Co je potřeba package-lock.json v Node?". společný projekt.
- ^ „Ahoj, přízi!“. Blog NPM. 11. října 2016. Citováno 17. prosince 2016.
- ^ Katz, Jehuda (11. října 2016). „Proč pracuji na přízi“. Citováno 17. prosince 2016.
- ^ JSConf (3. června 2019), Ekonomika open source od C J Silverio | JSConf EU 2019, vyvoláno 3. června 2019
- ^ NPM, vč. „Generální ředitel NPM Bryan Bogensberger rezignuje září 2019“. Business Insider. Citováno 17. února 2020.
- ^ Friedman, Nat (16. března 2020). „NPM se připojuje ke GitHubu“. Blog GitHub.