Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. Weltenzyklopädie
  2. npm — Wikipédia
npm — Wikipédia 👆 Click Here! Read More..
Un article de Wikipédia, l'encyclopédie libre.

npm
Description de l'image Npm-logo.svg.

Informations
Créateur Isaac Z. Schlueter (d)Voir et modifier les données sur Wikidata
Développé par Isaac Z. Schlueter
Première version 0.0.1[1] 13 janvier 2010 (15 ans, 277 jours)
Dernière version 11.1.0 (29 janvier 2025)
Dépôt github.com/npm/cliVoir et modifier les données sur Wikidata
Écrit en JavaScript
Système d'exploitation Multiplateforme (en)Voir et modifier les données sur Wikidata
Type Application-level package manager (d)
Bibliothèque JavaScriptVoir et modifier les données sur Wikidata
Licence Artistic License 2.0
Site web https://www.npmjs.com

modifier - modifier le code - voir Wikidata (aide)

npm est le gestionnaire de paquets par défaut pour l'environnement d'exécution JavaScript Node.js.

npm se compose d'un client en ligne de commande, également appelé npm, et d'une base de données en ligne de paquets publics et privés payants, appelée le registre npm. Le registre est accessible via le client, et les paquets disponibles peuvent être parcourus et recherchés via le site Web de npm. Le gestionnaire de paquets et le registre sont gérés par npm, Inc.

Depuis la version 0.6.3 de Node.js, npm fait partie de l'environnement et est donc automatiquement installé par défaut[2]. npm fonctionne avec un terminal et gère les dépendances pour une application. Il permet également d'installer des applications Node.js disponibles sur le dépôt npm. En avril 2020, GitHub annonce l'acquisition de npm[3].

Histoire

[modifier | modifier le code]

npm est entièrement écrit en JavaScript et a été développé par Isaac Z. Schlueter en s'inspirant d'autres projets similaires tels que PEAR (PHP) et CPAN (Perl)[4].

Anecdotes

[modifier | modifier le code]

En 2016, Azer Koçulu a retiré son paquet très utilisé left-pad du registre npm, ce qui a eu un impact significatif sur de nombreux projets dépendant de ce paquet[5]. À la suite de cet événement, npm Inc. a modifié sa politique permettant aux développeurs de retirer leurs paquets s'ils ont moins de 24 heures. Pour les paquets plus anciens, des étapes spécifiques doivent être suivies impliquant le personnel de support de l'entreprise[6].

Un exemple notable d'un paquet NPM légitime qui a été compromis est celui de event-stream. En 2018, un attaquant a réussi à injecter du code malveillant dans ce paquet populaire en prenant le contrôle d'un des dépôts GitHub du projet. Cela a permis à l'attaquant de déployer une version malveillante de event-stream qui contenait un logiciel de minage de cryptomonnaie. Cette attaque a affecté de nombreux utilisateurs qui ont téléchargé la version compromise du paquet, mettant en évidence les risques liés à la confiance accordée aux dépendances tierces dans le développement logiciel[7],[8].

Fin 2021, la bibliothèque NPM populaire coa a été détournée pour intégrer un code malveillant destiné à voler les mots de passe des utilisateurs[9].

En janvier 2022, le mainteneur de deux paquets populaires, colors et faker, a poussé des modifications corrompant ses propres fichiers de manière délibérée, ce qui a provoqué des impressions de texte inutile dans une boucle infinie[10],[11],[12].

En mars 2022, le paquet node-ipc, téléchargé plus d'un million de fois par semaine, a commencé à effacer les machines de développeurs russes et biélorusses présumés, en protestation contre l'invasion de l'Ukraine par la Russie[13]. De la même manière, Event-source-polyfill, es5-ext, et styled-components, ont été transformés en protestware, affichant des messages pacifiques ou redirigeant les utilisateurs vers des sources d'informations sur la guerre en Ukraine[5].

Le paquet NPM e2eakarev a été publié comme un "paquet de protestation pour la Palestine", affichant un message en anglais appelant à la paix si le paquet est lancé en Israël. Ce paquet, bien qu'il ne soit pas malveillant, illustre le risque que des fonctionnalités non intentionnelles ou malveillantes passent inaperçues dans des applications largement utilisées[14].

Fin 2023, des chercheurs en cybersécurité ont identifié une vague de paquets NPM malveillants visant à exfiltrer des configurations Kubernetes et des clés SSH vers un serveur distant. Plusieurs paquets, initialement légitimes, comme hardhat-gas-report, sont devenus malveillants après des mises à jour, indiquant un vol ciblé de clés privées Ethereum. Un autre paquet, gcc-patch, prétendait être un compilateur GCC mais contenait un mineur de cryptomonnaie[15].

Nom

[modifier | modifier le code]

Contrairement à la croyance populaire, npm n'est pas en fait un sigle pour "Node Package Manager". Le précurseur de npm était un utilitaire bash nommé «pm», qui était le nom abrégé de «pkgmakeinst» , une fonction bash qui installait diverses choses sur diverses plateformes. Si npm devait un jour être considéré comme un sigle, ce serait comme «node pm» ou, potentiellement, «new pm»[16].

D'après l'auteur, npm n'est pas le sigle de « Node Package Manager ». Comme il le dit en plaisantant :

« Contrairement à la croyance de beaucoup, « npm » n'est en fait pas l'acronyme de « Node Package Manager ». Il s'agit d'un rétroacronyme signifiant « npm is not an acronym » (« npm n'est pas un acronyme ») (si le nom avait été ninaa, ç'aurait été un acronyme, et donc nommé de manière incorrecte)[17]. »

Il précise par la suite :

« Donc, plus sérieusement, le projet « npm » est nommé d'après son utilitaire en ligne de commande, lui-même ainsi nommé pour être facilement écrit par un programmeur droitier sur un clavier US QWERTY, finissant avec l'annulaire droit en position pour taper la touche - pour les flags et autres arguments en ligne de commande. Cet utilitaire s'écrit toujours en bas de casse, même s'il est en tête de la plupart des phrases dans lesquelles il intervient[17]. »

Toutefois, le fichier README.md inclus dans la toute première version de npm (npm-0.0.1.zip[18]) indique clairement : « The Node Package Manager ».

Syntaxe

[modifier | modifier le code]

Par exemple pour une installation en environnement de développement intégré uniquement :

npm install mon_package --save-dev

Références

[modifier | modifier le code]
  1. ↑ « v0.0.1 », sur GitHub
  2. ↑ https://raw.github.com/joyent/node/v0.6.3/ChangeLog
  3. ↑ (en-US) « npm is joining GitHub », sur The GitHub Blog, 16 mars 2020 (consulté le 28 avril 2020)
  4. ↑ (en) « Breaking the CommonJS standardization impasse · Issue #5132 · nodejs/node-v0.x-archive », sur GitHub (consulté le 11 janvier 2022)
  5. ↑ a et b (en-US) « Third npm protestware: 'event-source-polyfill' calls Russia out », sur BleepingComputer (consulté le 29 février 2024)
  6. ↑ (en-US) By David Ramel et 2016 March 30, « After npm JavaScript Package Fiasco, Firm Changes Policy, Says 'We're Sorry' - », sur ADTmag (consulté le 29 février 2024)
  7. ↑ « npm Blog Archive: Details about the event-stream incident », sur blog.npmjs.org (consulté le 29 février 2024)
  8. ↑ (en-US) Lucian Constantin, « Attackers Up Their Game with Latest npm Package Compromise », sur The New Stack, 30 novembre 2018 (consulté le 29 février 2024)
  9. ↑ « La bibliothèque npm populaire », Developpez.com,‎ 6 novembre 2021 (lire en ligne, consulté le 29 février 2024)
  10. ↑ (en-US) « Dev corrupts NPM libs 'colors' and 'faker' breaking thousands of apps », sur BleepingComputer (consulté le 11 janvier 2022)
  11. ↑ (en) Vish Gain, « Open source developer corrupts his own files, impacting millions », sur Silicon Republic, 10 janvier 2022 (consulté le 11 janvier 2022)
  12. ↑ (en-US) Dan Goodin, « Developer sabotages his own apps, then claims Aaron Swartz was murdered », sur Ars Technica, 10 janvier 2022 (consulté le 11 janvier 2022)
  13. ↑ (en-US) Ax Sharma, « Protestware on the rise: Why developers are sabotaging their own code », sur TechCrunch, 27 juillet 2022 (consulté le 29 février 2024)
  14. ↑ (en) Paul Roberts, « Protestware taps npm to call out wars in Ukraine, Gaza », sur ReversingLabs, 16 novembre 2023 (consulté le 29 février 2024)
  15. ↑ (en) « Fresh Wave of Malicious npm Packages Threaten Kubernetes Configs and SSH Keys », sur The Hacker News (consulté le 29 février 2024)
  16. ↑ npm - a JavaScript package manager, npm, 11 janvier 2022 (lire en ligne)
  17. ↑ a et b « Program analysis platform. Contribute to google/shipshape development by creating an account on GitHub », sur GitHub, 9 mai 2019
  18. ↑ « npm/npm », sur GitHub (consulté le 28 mars 2016)

Liens externes

[modifier | modifier le code]
  • (en) Site web officiel
v · m
JavaScript
Analyse statique de programmes
  • ESLint
  • JSHint
  • JSLint
Compilateur source à source
  • Babel.js
  • CoffeeScript
  • Dart
  • Emscripten
  • Google Closure Compiler
  • Google Web Toolkit
  • Morfik
  • TypeScript
  • AtScript
  • Opa
  • Nim
  • Haxe
  • Clojure
  • WebSharper
Concepts
  • Ajax
  • Client-side
  • HTML dynamique
  • Framework JavaScript
  • Syntaxe JavaScript
  • Javascript discret
Débogueur
  • Firebug
  • Komodo IDE
  • Microsoft Script Debugger
  • Microsoft Script Editor
  • Opera Dragonfly
  • Venkman
  • Web Inspector
Générateur de documentation
  • JSDoc
Éditeurs (comparaison (en))
  • Ace
    • Cloud9 IDE
  • Atom
  • CodeMirror
    • Light Table
    • Brackets
  • Koding
  • Orion
  • PhpStorm
  • Visual Studio
    • Visual Studio Express
    • Visual Studio Code
    • Visual Studio Team Services
Moteur
  • Moteur JavaScript
Framework
  • Comparaison des frameworks JavaScript
Technologie associée
  • Feuilles de style en cascade
  • Document Object Model
  • HTML
  • JSON
  • WebAssembly
Gestionnaire de paquets
  • npm
  • NuGet
  • Yarn
Côté serveur
  • Active Server Pages
  • Bun
  • CommonJS
  • JSGI
  • Node.js
  • Deno
  • Wakanda
Test unitaire
  • Jasmine
  • Mocha
  • QUnit
Personnalité
  • Douglas Crockford
  • Brendan Eich
  • John Resig
  • icône décorative Portail des logiciels libres
  • icône décorative Portail de la programmation informatique
Ce document provient de « https://fr.teknopedia.teknokrat.ac.id/w/index.php?title=Npm&oldid=225271349 ».
Catégories :
  • Gestionnaire de paquets
  • JavaScript
  • Node.js
Catégories cachées :
  • Page utilisant des données de Wikidata à traduire de l'anglais
  • Page utilisant P170
  • Page utilisant P1324
  • Page utilisant P306
  • Page utilisant P31
  • Article utilisant une Infobox
  • Article contenant un appel à traduction en anglais
  • Portail:Logiciels libres/Articles liés
  • Portail:Logiciel/Articles liés
  • Portail:Informatique/Articles liés
  • Portail:Programmation informatique/Articles liés

  • indonesia
  • Polski
  • الرية
  • Deutsch
  • English
  • Español
  • Français
  • Italiano
  • مصر
  • Nederlands
  • 本語
  • Português
  • Sinugboanong Binisaya
  • Svenska
  • Українска
  • Tiếng Việt
  • Winaray
  • 中文
  • Русски
Sunting pranala
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022
Email: pmb@teknokrat.ac.id