{"id":1457,"date":"2020-08-18T19:14:25","date_gmt":"2020-08-18T17:14:25","guid":{"rendered":"http:\/\/blogperso.union31.fr\/?p=1457"},"modified":"2020-08-19T08:49:00","modified_gmt":"2020-08-19T06:49:00","slug":"node-js-npm-le-gestionnaire-des-modules","status":"publish","type":"post","link":"https:\/\/blogperso.union31.fr\/?p=1457","title":{"rendered":"Node.js : NPM, le gestionnaire des modules"},"content":{"rendered":"\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Sommaire<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/blogperso.union31.fr\/?p=1457\/#Loutil_NPM\" >L&rsquo;outil NPM<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/blogperso.union31.fr\/?p=1457\/#Premiere_utilisation_au_sein_dun_projet\" >Premi\u00e8re utilisation au sein d&rsquo;un projet<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/blogperso.union31.fr\/?p=1457\/#II_Telechargement_de_modules\" >II T\u00e9l\u00e9chargement de modules<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/blogperso.union31.fr\/?p=1457\/#MAJ_des_modules\" >MAJ des modules<\/a><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Loutil_NPM\"><\/span>L&rsquo;outil NPM<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>L&rsquo;outil NPM est l&rsquo;outil de gestion des modules javascript. il permet de les t\u00e9l\u00e9charger ou de les mettre \u00e0 jour. Cet outil est automatiquement install\u00e9 (sous windows) avec node.js. Les modules, une fois t\u00e9l\u00e9charg\u00e9s, seront utilisables dans le projet.<\/p>\n\n\n\n<p>Cet article ne montre que les commandes de bases : initialisation, installation de modules et mise \u00e0 jour.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Premiere_utilisation_au_sein_dun_projet\"><\/span>Premi\u00e8re utilisation au sein d&rsquo;un projet <span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Aller \u00e0 la racine du r\u00e9pertoire local du projet.<\/p>\n\n\n\n<p>Lancer la commande suivante :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npm init<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blogperso.union31.fr\/wp-content\/uploads\/2020\/08\/npm_init.png\" alt=\"\" class=\"wp-image-1458\" width=\"611\" height=\"601\" srcset=\"https:\/\/blogperso.union31.fr\/wp-content\/uploads\/2020\/08\/npm_init.png 761w, https:\/\/blogperso.union31.fr\/wp-content\/uploads\/2020\/08\/npm_init-300x295.png 300w\" sizes=\"auto, (max-width: 611px) 100vw, 611px\" \/><\/figure>\n\n\n\n<p>Npm a initialis\u00e9 un fichier de configuration propre au projet. Ce fichier, nomm\u00e9 \u00ab\u00a0package.json\u00a0\u00bb, est plac\u00e9 \u00e0 la racine du dossier.<\/p>\n\n\n\n<p>Il permet principalement :<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>d&rsquo;int\u00e9grer les futurs mod\u00e8les qu&rsquo;utilisera le projet<\/li><li>l&rsquo;execution du projet en d\u00e9finnissant le fichier js principal<\/li><\/ul>\n\n\n\n<p>Dans notre cas, le projet n&rsquo;est pas lanc\u00e9 par node.js mais pas PM2. Pour cela il faut changer la valeur \u00ab\u00a0Start\u00a0\u00bb comme suivant : \u00ab\u00a0start\u00a0\u00bb: \u00ab\u00a0PM2 start server.js &#8211;watch\u00a0\u00bb<\/p>\n\n\n\n<p>Ainsi en ligne de commande, le projet pourra \u00eatre lanc\u00e9 par la commande :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npm start<\/code><\/pre>\n\n\n\n<p>ce qui produira l&rsquo;effet suivant :<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blogperso.union31.fr\/wp-content\/uploads\/2020\/08\/npm_start.png\" alt=\"\" class=\"wp-image-1461\" width=\"576\" height=\"248\" srcset=\"https:\/\/blogperso.union31.fr\/wp-content\/uploads\/2020\/08\/npm_start.png 789w, https:\/\/blogperso.union31.fr\/wp-content\/uploads\/2020\/08\/npm_start-300x129.png 300w, https:\/\/blogperso.union31.fr\/wp-content\/uploads\/2020\/08\/npm_start-768x331.png 768w\" sizes=\"auto, (max-width: 576px) 100vw, 576px\" \/><figcaption>R\u00e9sultat du npm start<\/figcaption><\/figure>\n\n\n\n<p>Ainsi, le d\u00e9marrage du serveur peut se faire via cette commande.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"II_Telechargement_de_modules\"><\/span>II T\u00e9l\u00e9chargement de modules<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Avant de t\u00e9l\u00e9charger un module, il faut choisir celui qui nous correspond. Pour cela il faut aller sur le site d\u00e9di\u00e9 <a rel=\"noreferrer noopener\" href=\"https:\/\/www.npmjs.com\/\" target=\"_blank\">https:\/\/www.npmjs.com\/<\/a><\/p>\n\n\n\n<p>Comme exemple, nous allons installer le mini framework \u00ab\u00a0express\u00a0\u00bb.<\/p>\n\n\n\n<p>En ligne de commande \u00ab\u00a0node.js\u00a0\u00bb taper la commande suivante :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npm install --save express<\/code><\/pre>\n\n\n\n<p>L&rsquo;option install permet d&rsquo;installer le package.<\/p>\n\n\n\n<p>L&rsquo;option -save est importante car cela permet de modifier le fichier package.json du projet local en y ajoutant le nouveau module. Comme le montre l&rsquo;exemple ci-dessous avec l&rsquo;ajout de la clef \u00ab\u00a0dependencies\u00a0\u00bb :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"name\": \"test4\",\n  \"version\": \"1.0.0\",\n  \"description\": \"\",\n  \"main\": \"Server.js\",\n  \"scripts\": {\n    \"test\": \"echo \\\"Error: no test specified\\\" &amp;&amp; exit 1\",\n    \"start\": \"PM2 start server.js --watch\"\n  },\n  \"author\": \"\",\n  \"license\": \"ISC\",\n  \"dependencies\": {\n    \"express\": \"^4.17.1\"\n  }\n}<\/code><\/pre>\n\n\n\n<p><span style=\"text-decoration: underline;\">pour info : <\/span><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>^<\/strong>4.17.1 signifie que la mise \u00e0 jour s&rsquo;effectuera pour toute les versions jusqu&rsquo;\u00e0 5 non inclus<\/li><\/ul>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>~<\/strong>4.17.1 signifie que la mise \u00e0 jour s&rsquo;effectuera pour toute les versions jusqu&rsquo;\u00e0 4.18 non inclus<\/li><\/ul>\n\n\n\n<p>Ce qui donne le r\u00e9sultat suivant :<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized is-style-default\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blogperso.union31.fr\/wp-content\/uploads\/2020\/08\/npm_install.png\" alt=\"\" class=\"wp-image-1470\" width=\"581\" height=\"135\" srcset=\"https:\/\/blogperso.union31.fr\/wp-content\/uploads\/2020\/08\/npm_install.png 796w, https:\/\/blogperso.union31.fr\/wp-content\/uploads\/2020\/08\/npm_install-300x70.png 300w, https:\/\/blogperso.union31.fr\/wp-content\/uploads\/2020\/08\/npm_install-768x178.png 768w\" sizes=\"auto, (max-width: 581px) 100vw, 581px\" \/><\/figure>\n\n\n\n<p>Les fichiers ont \u00e9t\u00e9 mis dans le r\u00e9pertoire \u00ab\u00a0<strong>node_modules<\/strong>\u00a0\u00bb du projet.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"MAJ_des_modules\"><\/span>MAJ des modules<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Pour mettre \u00e0 jour les modules, il faut taper la commande suivante :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npm upgrade<\/code><\/pre>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>L&rsquo;outil NPM L&rsquo;outil NPM est l&rsquo;outil de gestion des modules javascript. il permet de les t\u00e9l\u00e9charger ou de les mettre \u00e0 jour. Cet outil est automatiquement install\u00e9 (sous windows) avec node.js. Les modules, une fois t\u00e9l\u00e9charg\u00e9s, seront utilisables dans le<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-1457","post","type-post","status-publish","format-standard","hentry","category-_dev"],"_links":{"self":[{"href":"https:\/\/blogperso.union31.fr\/index.php?rest_route=\/wp\/v2\/posts\/1457","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogperso.union31.fr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogperso.union31.fr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogperso.union31.fr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blogperso.union31.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1457"}],"version-history":[{"count":14,"href":"https:\/\/blogperso.union31.fr\/index.php?rest_route=\/wp\/v2\/posts\/1457\/revisions"}],"predecessor-version":[{"id":1475,"href":"https:\/\/blogperso.union31.fr\/index.php?rest_route=\/wp\/v2\/posts\/1457\/revisions\/1475"}],"wp:attachment":[{"href":"https:\/\/blogperso.union31.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1457"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogperso.union31.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1457"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogperso.union31.fr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1457"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}