{"id":93897,"date":"2025-12-30T11:33:17","date_gmt":"2025-12-30T04:33:17","guid":{"rendered":"https:\/\/itviec.com\/blog\/?p=93897"},"modified":"2025-12-30T11:33:20","modified_gmt":"2025-12-30T04:33:20","slug":"npm-la-gi","status":"publish","type":"post","link":"https:\/\/itviec.com\/blog\/npm-la-gi\/","title":{"rendered":"NPM l\u00e0 g\u00ec: Kh\u00e1i ni\u1ec7m, l\u1ec7nh v\u00e0 thao t\u00e1c c\u01a1 b\u1ea3n v\u1edbi NPM"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 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\">N\u1ed9i dung b\u00e0i vi\u1ebft<\/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:\/\/itviec.com\/blog\/npm-la-gi\/#NPM_la_gi_Tai_sao_nen_dung_npm\" >NPM l\u00e0 g\u00ec? T\u1ea1i sao n\u00ean d\u00f9ng 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:\/\/itviec.com\/blog\/npm-la-gi\/#Huong_dan_cai_dat_npm_tren_cac_he_dieu_hanh\" >H\u01b0\u1edbng d\u1eabn c\u00e0i \u0111\u1eb7t npm tr\u00ean c\u00e1c h\u1ec7 \u0111i\u1ec1u h\u00e0nh<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/itviec.com\/blog\/npm-la-gi\/#Cac_buoc_su_dung_npm_co_ban\" >C\u00e1c b\u01b0\u1edbc s\u1eed d\u1ee5ng npm c\u01a1 b\u1ea3n<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/itviec.com\/blog\/npm-la-gi\/#So_sanh_Dependencies_vs_DevDependencies\" >So s\u00e1nh: Dependencies vs DevDependencies<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/itviec.com\/blog\/npm-la-gi\/#Cac_cau_hoi_thuong_gap_ve_npm\" >C\u00e1c c\u00e2u h\u1ecfi th\u01b0\u1eddng g\u1eb7p v\u1ec1 npm<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/itviec.com\/blog\/npm-la-gi\/#Tong_ket\" >T\u1ed5ng k\u1ebft<\/a><\/li><\/ul><\/nav><\/div>\n\n<p><strong><em>Npm l\u00e0 tr\u00ecnh qu\u1ea3n l\u00fd g\u00f3i (package manager) m\u1eb7c \u0111\u1ecbnh \u0111i k\u00e8m v\u1edbi Node.js, \u0111\u01b0\u1ee3c bi\u1ebft \u0111\u1ebfn v\u1edbi kho th\u01b0 vi\u1ec7n kh\u1ed5ng l\u1ed3, kh\u1ea3 n\u0103ng c\u00e0i \u0111\u1eb7t nhanh ch\u00f3ng v\u00e0 h\u1ed7 tr\u1ee3 qu\u1ea3n l\u00fd dependencies hi\u1ec7u qu\u1ea3. C\u00f4ng c\u1ee5 n\u00e0y gi\u00fap l\u1eadp tr\u00ecnh vi\u00ean d\u1ec5 d\u00e0ng chia s\u1ebb, t\u00e1i s\u1eed d\u1ee5ng v\u00e0 c\u1eadp nh\u1eadt c\u00e1c package trong d\u1ef1 \u00e1n.<\/em><\/strong><\/p>\n\n\n\n<p>\u0110\u1ecdc b\u00e0i vi\u1ebft sau \u0111\u1ec3 \u0111\u01b0\u1ee3c gi\u1ea3i \u0111\u00e1p chi ti\u1ebft h\u01a1n v\u1ec1:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u00a0T\u1ed5ng quan v\u1ec1 npm v\u00e0 t\u1ea1i sao n\u00ean s\u1eed d\u1ee5ng package manager n\u00e0y.\u00a0<\/li>\n\n\n\n<li>H\u01b0\u1edbng d\u1eabn chi ti\u1ebft v\u1ec1 c\u00e1c thao t\u00e1c c\u01a1 b\u1ea3n v\u1edbi npm, bao g\u1ed3m c\u00e1ch c\u00e0i \u0111\u1eb7t, s\u1eed d\u1ee5ng v\u1edbi Nodejs v\u00e0 c\u00e1ch x\u1eed l\u00fd cache tr\u00ean c\u00e1c h\u1ec7 \u0111i\u1ec1u h\u00e0nh.\u00a0<\/li>\n\n\n\n<li>So s\u00e1nh gi\u1eefa Dependencies vs DevDependencies.<\/li>\n\n\n\n<li>M\u1ed9t s\u1ed1 c\u00e2u h\u1ecfi th\u01b0\u1eddng g\u1eb7p v\u1ec1 npm.\u00a0<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-npm-la-gi-t\u1ea1i-sao-nen-dung-npm\"><span class=\"ez-toc-section\" id=\"NPM_la_gi_Tai_sao_nen_dung_npm\"><\/span><strong>NPM l\u00e0 g\u00ec? T\u1ea1i sao n\u00ean d\u00f9ng npm?<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Npm (vi\u1ebft t\u1eaft c\u1ee7a Node Package Manager) l\u00e0 tr\u00ecnh qu\u1ea3n l\u00fd g\u00f3i m\u1eb7c \u0111\u1ecbnh \u0111i k\u00e8m v\u1edbi Node.js, \u0111\u01b0\u1ee3c xem nh\u01b0 m\u1ed9t c\u00f4ng c\u1ee5 kh\u00f4ng th\u1ec3 thi\u1ebfu trong h\u1ec7 sinh th\u00e1i <a href=\"https:\/\/itviec.com\/blog\/javascript-la-gi\/\" target=\"_blank\" rel=\"noreferrer noopener\">JavaScript<\/a> hi\u1ec7n nay. Ch\u1ee9c n\u0103ng ch\u00ednh c\u1ee7a NPM l\u00e0 <strong>qu\u1ea3n l\u00fd c\u00e1c g\u00f3i (packages) ho\u1eb7c module<\/strong> &#8211; \u0111\u00e2y l\u00e0 nh\u1eefng \u0111o\u1ea1n m\u00e3 \u0111\u01b0\u1ee3c x\u00e2y d\u1ef1ng s\u1eb5n, d\u00f9ng \u0111\u1ec3 m\u1edf r\u1ed9ng kh\u1ea3 n\u0103ng c\u1ee7a \u1ee9ng d\u1ee5ng Node.js.<\/p>\n\n\n\n<p>V\u1edbi npm, l\u1eadp tr\u00ecnh vi\u00ean c\u00f3 th\u1ec3 d\u1ec5 d\u00e0ng t\u1ea3i v\u1ec1, c\u00e0i \u0111\u1eb7t v\u00e0 qu\u1ea3n l\u00fd h\u00e0ng tri\u1ec7u package m\u00e3 ngu\u1ed3n m\u1edf \u0111\u01b0\u1ee3c chia s\u1ebb t\u1eeb c\u1ed9ng \u0111\u1ed3ng.\u00a0<\/p>\n\n\n\n<p>Npm bao g\u1ed3m ba th\u00e0nh ph\u1ea7n ri\u00eang bi\u1ec7t:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Website: B\u1ea1n c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng website \u0111\u1ec3 t\u00ecm ki\u1ebfm package, thi\u1ebft l\u1eadp h\u1ed3 s\u01a1 c\u00e1 nh\u00e2n v\u00e0 qu\u1ea3n l\u00fd c\u00e1c kh\u00eda c\u1ea1nh kh\u00e1c trong tr\u1ea3i nghi\u1ec7m npm. V\u00ed d\u1ee5, b\u1ea1n c\u00f3 th\u1ec3 t\u1ea1o organization \u0111\u1ec3 qu\u1ea3n l\u00fd quy\u1ec1n truy c\u1eadp v\u00e0o c\u00e1c package c\u00f4ng khai ho\u1eb7c ri\u00eang t\u01b0.<\/li>\n\n\n\n<li>Command Line Interface (CLI): \u0110\u00e2y l\u00e0 c\u00e1ch m\u00e0 h\u1ea7u h\u1ebft l\u1eadp tr\u00ecnh vi\u00ean t\u01b0\u01a1ng t\u00e1c v\u1edbi npm<\/li>\n\n\n\n<li>Registry: C\u01a1 s\u1edf d\u1eef li\u1ec7u c\u00f4ng khai kh\u1ed5ng l\u1ed3 v\u1ec1 ph\u1ea7n m\u1ec1m JavaScript v\u00e0 c\u00e1c th\u00f4ng tin meta li\u00ean quan \u0111\u1ebfn ch\u00fang.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-t\u1ea1i-sao-nen-dung-npm\"><strong>T\u1ea1i sao n\u00ean d\u00f9ng npm?<\/strong><\/h3>\n\n\n\n<p>Npm (Node Package Manager) kh\u00f4ng ch\u1ec9 l\u00e0 m\u1ed9t c\u00f4ng c\u1ee5 qu\u1ea3n l\u00fd package, m\u00e0 c\u00f2n l\u00e0 \u201ctr\u1ee3 th\u1ee7 \u0111\u1eafc l\u1ef1c\u201d cho l\u1eadp tr\u00ecnh vi\u00ean khi ph\u00e1t tri\u1ec3n d\u1ef1 \u00e1n. D\u01b0\u1edbi \u0111\u00e2y l\u00e0 m\u1ed9t s\u1ed1 l\u00fd do t\u1ea1i sao b\u1ea1n n\u00ean s\u1eed d\u1ee5ng npm:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Cho ph\u00e9p b\u1ea1n c\u00e0i \u0111\u1eb7t th\u01b0 vi\u1ec7n, framework v\u00e0 c\u00e1c c\u00f4ng c\u1ee5 ph\u00e1t tri\u1ec3n kh\u00e1c cho d\u1ef1 \u00e1n, t\u01b0\u01a1ng t\u1ef1 nh\u01b0 vi\u1ec7c c\u00e0i \u1ee9ng d\u1ee5ng di \u0111\u1ed9ng t\u1eeb m\u1ed9t c\u1eeda h\u00e0ng \u1ee9ng d\u1ee5ng.<\/li>\n\n\n\n<li>B\u1ea1n c\u00f3 th\u1ec3 truy c\u1eadp v\u00e0o c\u00e1c d\u1ef1 \u00e1n <a href=\"https:\/\/itviec.com\/blog\/nodejs-la-gi\/\" target=\"_blank\" rel=\"noreferrer noopener\">Node.js<\/a> an to\u00e0n \u0111\u1ec3 ph\u1ee5c v\u1ee5 cho ph\u00e1t tri\u1ec3n.<\/li>\n\n\n\n<li>Gi\u00fap r\u00fat ng\u1eafn giai \u0111o\u1ea1n ph\u00e1t tri\u1ec3n b\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng c\u00e1c dependencies \u0111\u00e3 \u0111\u01b0\u1ee3c x\u00e2y d\u1ef1ng s\u1eb5n.<\/li>\n\n\n\n<li>T\u1ea5t c\u1ea3 c\u00e1c package v\u00e0 phi\u00ean b\u1ea3n \u0111\u01b0\u1ee3c l\u01b0u trong package.json v\u00e0 package-lock.json, gi\u00fap d\u1ef1 \u00e1n d\u1ec5 t\u00e1i s\u1eed d\u1ee5ng v\u00e0 tri\u1ec3n khai.<\/li>\n\n\n\n<li>Npm cung c\u1ea5p m\u1ed9t lo\u1ea1t c\u00f4ng c\u1ee5 \u0111a d\u1ea1ng ho\u00e0n to\u00e0n mi\u1ec5n ph\u00ed.<\/li>\n\n\n\n<li>C\u00e1c l\u1ec7nh c\u1ee7a npm r\u1ea5t d\u1ec5 h\u1ecdc v\u00e0 d\u1ec5 s\u1eed d\u1ee5ng, kh\u00f4ng \u0111\u00f2i h\u1ecfi nhi\u1ec1u ki\u1ebfn th\u1ee9c ph\u1ee9c t\u1ea1p.<\/li>\n\n\n\n<li>Npm ho\u00e0n to\u00e0n mi\u1ec5n ph\u00ed v\u00e0 c\u00f3 h\u1ec7 sinh th\u00e1i r\u1ed9ng v\u1edbi s\u1ef1 \u0111\u00f3ng g\u00f3p li\u00ean t\u1ee5c t\u1eeb c\u1ed9ng \u0111\u1ed3ng to\u00e0n c\u1ea7u.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-giao-di\u1ec7n-dong-l\u1ec7nh-c\u1ee7a-npm-cli\"><strong>Giao di\u1ec7n d\u00f2ng l\u1ec7nh c\u1ee7a npm (CLI)<\/strong><\/h3>\n\n\n\n<p>Giao di\u1ec7n d\u00f2ng l\u1ec7nh (Command Line Interface \u2013 CLI) c\u1ee7a npm \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 ch\u1ea1y nhi\u1ec1u l\u1ec7nh kh\u00e1c nhau, nh\u01b0 c\u00e0i \u0111\u1eb7t ho\u1eb7c g\u1ee1 b\u1ecf package, ki\u1ec3m tra phi\u00ean b\u1ea3n npm, ch\u1ea1y c\u00e1c script trong package, t\u1ea1o file package.json, v\u00e0 c\u00f2n nhi\u1ec1u thao t\u00e1c kh\u00e1c n\u1eefa.<\/p>\n\n\n\n<p>Tr\u00ean m\u00e1y t\u00ednh Windows, CLI c\u1ee7a npm c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng th\u00f4ng qua Command Prompt ho\u1eb7c PowerShell. Trong khi \u0111\u00f3, tr\u00ean m\u00e1y t\u00ednh Mac, n\u00f3 \u0111\u01b0\u1ee3c g\u1ecdi l\u00e0 Terminal. Trong b\u00e0i vi\u1ebft n\u00e0y, c\u00e1c v\u00ed d\u1ee5 h\u01b0\u1edbng d\u1eabn s\u1ebd d\u00f9ng npm CLI.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-h\u01b0\u1edbng-d\u1eabn-cai-d\u1eb7t-npm-tren-cac-h\u1ec7-di\u1ec1u-hanh\"><span class=\"ez-toc-section\" id=\"Huong_dan_cai_dat_npm_tren_cac_he_dieu_hanh\"><\/span><strong>H\u01b0\u1edbng d\u1eabn c\u00e0i \u0111\u1eb7t npm tr\u00ean c\u00e1c h\u1ec7 \u0111i\u1ec1u h\u00e0nh<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-cai-d\u1eb7t-npm-\u1edf-linux-ubuntu-nbsp\"><strong>C\u00e0i \u0111\u1eb7t npm \u1edf Linux (Ubuntu)&nbsp;<\/strong><\/h3>\n\n\n\n<p>C\u00e1c b\u01b0\u1edbc t\u1ea3i xu\u1ed1ng v\u00e0 c\u00e0i \u0111\u1eb7t NodeJS v\u00e0 NPM tr\u00ean h\u1ec7 th\u1ed1ng.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-b\u01b0\u1edbc-1-cai-d\u1eb7t-npm-qua-node-js-t\u1eeb-apt\"><strong>B\u01b0\u1edbc 1: C\u00e0i \u0111\u1eb7t npm qua Node.js t\u1eeb apt<\/strong><\/h4>\n\n\n\n<p>Ubuntu th\u01b0\u1eddng c\u00f3 s\u1eb5n Node.js v\u00e0 npm trong kho ph\u1ea7n m\u1ec1m. B\u1ea1n c\u00f3 th\u1ec3 c\u00e0i b\u1eb1ng l\u1ec7nh:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt update\n\nsudo apt install nodejs npm -y<\/code><\/pre>\n\n\n\n<p>Sau khi c\u00e0i, ki\u1ec3m tra phi\u00ean b\u1ea3n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>node -v\n\nnpm -v<\/code><\/pre>\n\n\n\n<p>L\u01b0u \u00fd: Phi\u00ean b\u1ea3n Node.js\/npm trong apt th\u01b0\u1eddng kh\u00e1 c\u0169. N\u1ebfu b\u1ea1n ch\u1ec9 c\u1ea7n d\u00f9ng th\u1eed ho\u1eb7c d\u1ef1 \u00e1n kh\u00f4ng y\u00eau c\u1ea7u m\u1edbi nh\u1ea5t th\u00ec c\u00f3 th\u1ec3 d\u00f9ng c\u00e1ch n\u00e0y.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-b\u01b0\u1edbc-2-cai-d\u1eb7t-nodejs-va-npm\"><strong>B\u01b0\u1edbc 2: C\u00e0i \u0111\u1eb7t NodeJS v\u00e0 NPM<\/strong><\/h4>\n\n\n\n<p>\u0110\u1ec3 c\u00f3 b\u1ea3n m\u1edbi h\u01a1n, b\u1ea1n c\u00f3 th\u1ec3 th\u00eam repo ch\u00ednh th\u1ee9c NodeSource. V\u00ed d\u1ee5 c\u00e0i Node.js 18 (b\u1ea1n c\u00f3 th\u1ec3 \u0111\u1ed5i 18.x th\u00e0nh 20.x n\u1ebfu mu\u1ed1n b\u1ea3n m\u1edbi nh\u1ea5t).<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -fsSL https:\/\/deb.nodesource.com\/setup_18.x | sudo -E bash\u00a0\n\n-sudo apt-get install -y nodejs<\/code><\/pre>\n\n\n\n<p>C\u00e0i xong b\u1ea1n ki\u1ec3m tra b\u1eb1ng c\u00e2u l\u1ec7nh:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>node -v\n\nnpm -v<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-cai-d\u1eb7t-npm-tren-windows\"><strong>C\u00e0i \u0111\u1eb7t npm tr\u00ean Windows<\/strong><\/h3>\n\n\n\n<p>NPM \u0111i k\u00e8m v\u1edbi Node.js, v\u00ec v\u1eady b\u01b0\u1edbc \u0111\u1ea7u ti\u00ean \u0111\u1ec3 c\u00e0i \u0111\u1eb7t NPM tr\u00ean Windows l\u00e0 t\u1ea3i xu\u1ed1ng tr\u00ecnh c\u00e0i \u0111\u1eb7t Node.js.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-b\u01b0\u1edbc-1-t\u1ea3i-node-js\"><strong>B\u01b0\u1edbc 1: T\u1ea3i Node.js<\/strong><\/h4>\n\n\n\n<p>Node.js l\u00e0 m\u1ed9t m\u00f4i tr\u01b0\u1eddng ch\u1ea1y JavaScript cho ph\u00e9p b\u1ea1n th\u1ef1c thi JavaScript ph\u00eda m\u00e1y ch\u1ee7. NPM (Node Package Manager) \u0111\u01b0\u1ee3c t\u00edch h\u1ee3p s\u1eb5n trong m\u1ed7i l\u1ea7n c\u00e0i \u0111\u1eb7t Node.js, v\u00ec v\u1eady b\u1ea1n kh\u00f4ng c\u1ea7n ph\u1ea3i c\u00e0i ri\u00eang.<\/p>\n\n\n\n<p>\u0110\u1ec3 b\u1eaft \u0111\u1ea7u, h\u00e3y truy c\u1eadp trang web ch\u00ednh th\u1ee9c c\u1ee7a Node.js. \u1ede trang ch\u1ee7, b\u1ea1n s\u1ebd th\u1ea5y li\u00ean k\u1ebft t\u1ea3i xu\u1ed1ng phi\u00ean b\u1ea3n m\u1edbi nh\u1ea5t c\u1ee7a Node.js. H\u00e3y ch\u1ecdn tr\u00ecnh c\u00e0i \u0111\u1eb7t ph\u00f9 h\u1ee3p v\u1edbi h\u1ec7 \u0111i\u1ec1u h\u00e0nh c\u1ee7a b\u1ea1n (Windows, macOS ho\u1eb7c Linux). Sau khi t\u1ea3i xu\u1ed1ng t\u1ec7p c\u00e0i \u0111\u1eb7t, b\u1ea1n c\u00f3 th\u1ec3 chuy\u1ec3n sang b\u01b0\u1edbc ti\u1ebfp theo l\u00e0 c\u00e0i \u0111\u1eb7t Node.js v\u00e0 NPM v\u00e0o m\u00e1y t\u00ednh.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-b\u01b0\u1edbc-2-cai-d\u1eb7t-node-js\"><strong>B\u01b0\u1edbc 2: C\u00e0i \u0111\u1eb7t Node.js<\/strong><\/h4>\n\n\n\n<p>Sau khi t\u1ea3i v\u1ec1 tr\u00ecnh c\u00e0i \u0111\u1eb7t Node.js, nh\u1ea5p \u0111\u00fap chu\u1ed9t v\u00e0o t\u1ec7p th\u1ef1c thi \u0111\u1ec3 kh\u1edfi ch\u1ea1y tr\u00ecnh h\u01b0\u1edbng d\u1eabn c\u00e0i \u0111\u1eb7t. Th\u1ef1c hi\u1ec7n theo c\u00e1c b\u01b0\u1edbc sau:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u1ede m\u00e0n h\u00ecnh c\u00e0i \u0111\u1eb7t ban \u0111\u1ea7u, nh\u1ea5p &#8220;Next&#8221; \u0111\u1ec3 ti\u1ebfp t\u1ee5c.<\/li>\n\n\n\n<li>\u0110\u1ecdc v\u00e0 \u0111\u1ed3ng \u00fd v\u1edbi th\u1ecfa thu\u1eadn c\u1ea5p ph\u00e9p, ch\u1ecdn &#8220;I accept the agreement&#8221;, r\u1ed3i nh\u1ea5p &#8220;Next&#8221;.<\/li>\n\n\n\n<li>Gi\u1eef nguy\u00ean th\u01b0 m\u1ee5c c\u00e0i \u0111\u1eb7t m\u1eb7c \u0111\u1ecbnh (tr\u1eeb khi b\u1ea1n c\u00f3 l\u00fd do thay \u0111\u1ed5i), r\u1ed3i nh\u1ea5p &#8220;Next&#8221;.<\/li>\n\n\n\n<li>\u1ede m\u00e0n h\u00ecnh &#8220;Custom Setup&#8221;, b\u1ea1n c\u00f3 th\u1ec3 \u0111\u1ec3 m\u1eb7c \u0111\u1ecbnh ho\u1eb7c t\u00f9y ch\u1ec9nh theo nhu c\u1ea7u. Trong h\u1ea7u h\u1ebft tr\u01b0\u1eddng h\u1ee3p, c\u00e1c t\u00f9y ch\u1ecdn m\u1eb7c \u0111\u1ecbnh l\u00e0 \u0111\u1ee7.<\/li>\n\n\n\n<li>Nh\u1ea5p &#8220;Next&#8221; \u0111\u1ec3 ti\u1ebfn h\u00e0nh c\u00e0i \u0111\u1eb7t.<\/li>\n\n\n\n<li>N\u1ebfu \u0111\u01b0\u1ee3c y\u00eau c\u1ea7u, ch\u1ea5p nh\u1eadn c\u00e1c c\u1ea3nh b\u00e1o b\u1ea3o m\u1eadt ho\u1eb7c y\u00eau c\u1ea7u t\u1eeb tr\u00ecnh c\u00e0i \u0111\u1eb7t.<\/li>\n\n\n\n<li>Sau khi ho\u00e0n t\u1ea5t c\u00e0i \u0111\u1eb7t, nh\u1ea5p &#8220;Finish&#8221; \u0111\u1ec3 tho\u00e1t.<\/li>\n<\/ul>\n\n\n\n<p>Th\u00f4ng th\u01b0\u1eddng n\u00ean gi\u1eef c\u00e1c t\u00f9y ch\u1ecdn m\u1eb7c \u0111\u1ecbnh v\u00ec ch\u00fang \u0111\u00e3 \u0111\u01b0\u1ee3c t\u1ed1i \u01b0u cho \u0111a s\u1ed1 tr\u01b0\u1eddng h\u1ee3p. Tuy nhi\u00ean, b\u1ea1n c\u00f3 th\u1ec3 t\u00f9y ch\u1ec9nh \u0111\u01b0\u1eddng d\u1eabn ho\u1eb7c th\u00e0nh ph\u1ea7n c\u00e0i \u0111\u1eb7t n\u1ebfu c\u1ea7n.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-b\u01b0\u1edbc-3-ki\u1ec3m-tra-cai-d\u1eb7t\"><strong>B\u01b0\u1edbc 3: Ki\u1ec3m tra c\u00e0i \u0111\u1eb7t<\/strong><\/h4>\n\n\n\n<p>Sau khi ho\u00e0n t\u1ea5t c\u00e0i \u0111\u1eb7t Node.js, b\u1ea1n c\u1ea7n ki\u1ec3m tra xem Node.js v\u00e0 NPM \u0111\u00e3 \u0111\u01b0\u1ee3c c\u00e0i th\u00e0nh c\u00f4ng ch\u01b0a. M\u1edf terminal ho\u1eb7c Command Prompt v\u00e0 nh\u1eadp l\u1ec7nh:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>node -v<\/code><\/pre>\n\n\n\n<p>L\u1ec7nh n\u00e0y s\u1ebd hi\u1ec3n th\u1ecb phi\u00ean b\u1ea3n Node.js \u0111\u00e3 c\u00e0i. N\u1ebfu th\u1ea5y hi\u1ec7n s\u1ed1 phi\u00ean b\u1ea3n, ngh\u0129a l\u00e0 Node.js \u0111\u00e3 \u0111\u01b0\u1ee3c c\u00e0i \u0111\u00fang. Ti\u1ebfp theo, ki\u1ec3m tra NPM b\u1eb1ng l\u1ec7nh:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npm -v<\/code><\/pre>\n\n\n\n<p>N\u1ebfu th\u1ea5y s\u1ed1 phi\u00ean b\u1ea3n hi\u1ec3n th\u1ecb, \u0111i\u1ec1u \u0111\u00f3 x\u00e1c nh\u1eadn NPM \u0111\u00e3 \u0111\u01b0\u1ee3c c\u00e0i th\u00e0nh c\u00f4ng c\u00f9ng Node.js.<\/p>\n\n\n\n<p>Trong tr\u01b0\u1eddng h\u1ee3p kh\u00f4ng th\u1ea5y s\u1ed1 phi\u00ean b\u1ea3n, c\u00f3 th\u1ec3 qu\u00e1 tr\u00ecnh c\u00e0i \u0111\u1eb7t ch\u01b0a th\u00e0nh c\u00f4ng ho\u1eb7c Node.js\/NPM ch\u01b0a \u0111\u01b0\u1ee3c th\u00eam v\u00e0o bi\u1ebfn m\u00f4i tr\u01b0\u1eddng PATH. Khi \u0111\u00f3, b\u1ea1n c\u1ea7n ki\u1ec3m tra l\u1ea1i ho\u1eb7c c\u00e0i \u0111\u1eb7t l\u1ea1i.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-b\u01b0\u1edbc-4-c\u1eadp-nh\u1eadt-npm-tuy-ch\u1ecdn\"><strong>B\u01b0\u1edbc 4: C\u1eadp nh\u1eadt npm (t\u00f9y ch\u1ecdn)<\/strong><\/h4>\n\n\n\n<p>M\u1eb7c d\u00f9 NPM \u0111i k\u00e8m Node.js th\u01b0\u1eddng l\u00e0 phi\u00ean b\u1ea3n m\u1edbi, b\u1ea1n v\u1eabn n\u00ean ki\u1ec3m tra v\u00e0 c\u1eadp nh\u1eadt \u0111\u1ec3 c\u00f3 nh\u1eefng t\u00ednh n\u0103ng, b\u1ea3n v\u00e1 l\u1ed7i v\u00e0 b\u1ea3o m\u1eadt m\u1edbi nh\u1ea5t. \u0110\u1ec3 c\u1eadp nh\u1eadt NPM, m\u1edf terminal ho\u1eb7c Command Prompt v\u00e0 nh\u1eadp:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npm install -g npm@latest<\/code><\/pre>\n\n\n\n<p>Trong \u0111\u00f3, -g c\u00f3 ngh\u0129a l\u00e0 c\u00e0i \u0111\u1eb7t to\u00e0n h\u1ec7 th\u1ed1ng (global).<\/p>\n\n\n\n<p>B\u1ea1n n\u00ean c\u1eadp nh\u1eadt NPM th\u01b0\u1eddng xuy\u00ean, \u0111\u1eb7c bi\u1ec7t l\u00e0 tr\u01b0\u1edbc khi b\u1eaft \u0111\u1ea7u d\u1ef1 \u00e1n m\u1edbi ho\u1eb7c khi g\u1eb7p v\u1ea5n \u0111\u1ec1 t\u01b0\u01a1ng th\u00edch. Vi\u1ec7c n\u00e0y gi\u00fap tr\u00e1nh s\u1ef1 c\u1ed1 v\u00e0 mang l\u1ea1i tr\u1ea3i nghi\u1ec7m l\u1eadp tr\u00ecnh m\u01b0\u1ee3t m\u00e0 h\u01a1n.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-b\u01b0\u1edbc-5-b\u1eaft-d\u1ea7u-s\u1eed-d\u1ee5ng-npm\"><strong>B\u01b0\u1edbc 5: B\u1eaft \u0111\u1ea7u s\u1eed d\u1ee5ng npm<\/strong><\/h4>\n\n\n\n<p>Sau khi \u0111\u00e3 c\u00e0i \u0111\u1eb7t v\u00e0 ki\u1ec3m tra th\u00e0nh c\u00f4ng, b\u1ea1n c\u00f3 th\u1ec3 b\u1eaft \u0111\u1ea7u d\u00f9ng NPM! C\u00f4ng c\u1ee5 n\u00e0y gi\u00fap b\u1ea1n c\u00e0i \u0111\u1eb7t v\u00e0 qu\u1ea3n l\u00fd th\u01b0 vi\u1ec7n (package) cho d\u1ef1 \u00e1n JavaScript d\u1ec5 d\u00e0ng. \u0110\u1ec3 c\u00e0i m\u1ed9t g\u00f3i, m\u1edf terminal, \u0111i\u1ec1u h\u01b0\u1edbng \u0111\u1ebfn th\u01b0 m\u1ee5c d\u1ef1 \u00e1n v\u00e0 ch\u1ea1y:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npm install package-name<\/code><\/pre>\n\n\n\n<p>Thay package-name b\u1eb1ng t\u00ean g\u00f3i b\u1ea1n mu\u1ed1n c\u00e0i. V\u00ed d\u1ee5, \u0111\u1ec3 c\u00e0i th\u01b0 vi\u1ec7n React ph\u1ed5 bi\u1ebfn, b\u1ea1n nh\u1eadp:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npm install react<\/code><\/pre>\n\n\n\n<p>NPM s\u1ebd t\u1ea3i g\u00f3i v\u00e0 c\u00e1c ph\u1ee5 thu\u1ed9c t\u1eeb registry tr\u1ef1c tuy\u1ebfn, th\u00eam v\u00e0o th\u01b0 m\u1ee5c node_modules c\u1ee7a d\u1ef1 \u00e1n. Sau \u0111\u00f3 b\u1ea1n c\u00f3 th\u1ec3 import v\u00e0 s\u1eed d\u1ee5ng trong m\u00e3 JavaScript c\u1ee7a m\u00ecnh.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-cach-cai-d\u1eb7t-npm-tren-macos\"><strong>C\u00e1ch c\u00e0i \u0111\u1eb7t npm tr\u00ean MacOS<\/strong><\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-b\u01b0\u1edbc-1-cai-d\u1eb7t-node-js\"><strong>B\u01b0\u1edbc 1: C\u00e0i \u0111\u1eb7t Node.js<\/strong><\/h4>\n\n\n\n<p>\u0110\u1ec3 c\u00e0i \u0111\u1eb7t NPM tr\u00ean macOS, tr\u01b0\u1edbc ti\u00ean b\u1ea1n c\u1ea7n t\u1ea3i v\u00e0 c\u00e0i \u0111\u1eb7t Node.js. V\u00ec NPM \u0111i k\u00e8m s\u1eb5n v\u1edbi Node.js n\u00ean khi c\u00e0i Node.js, b\u1ea1n s\u1ebd c\u00f3 lu\u00f4n NPM.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Truy c\u1eadp trang web ch\u00ednh th\u1ee9c c\u1ee7a Node.js v\u00e0 nh\u1ea5p n\u00fat Download \u0111\u1ec3 t\u1ea3i phi\u00ean b\u1ea3n LTS (Long-Term Support), phi\u00ean b\u1ea3n \u0111\u01b0\u1ee3c khuy\u1ebfn ngh\u1ecb cho \u0111a s\u1ed1 ng\u01b0\u1eddi d\u00f9ng.<\/li>\n\n\n\n<li>Trang web th\u01b0\u1eddng s\u1ebd t\u1ef1 \u0111\u1ed9ng nh\u1eadn di\u1ec7n h\u1ec7 \u0111i\u1ec1u h\u00e0nh c\u1ee7a b\u1ea1n v\u00e0 cung c\u1ea5p tr\u00ecnh c\u00e0i \u0111\u1eb7t ph\u00f9 h\u1ee3p. N\u1ebfu kh\u00f4ng, h\u00e3y ch\u1ecdn macOS Installer.<\/li>\n\n\n\n<li>Sau khi t\u1ea3i xong, nh\u1ea5p \u0111\u00fap v\u00e0o t\u1ec7p .pkg \u0111\u1ec3 ch\u1ea1y tr\u00ecnh c\u00e0i \u0111\u1eb7t.<\/li>\n\n\n\n<li>Th\u1ef1c hi\u1ec7n theo c\u00e1c b\u01b0\u1edbc h\u01b0\u1edbng d\u1eabn, gi\u1eef nguy\u00ean t\u00f9y ch\u1ecdn m\u1eb7c \u0111\u1ecbnh tr\u1eeb khi b\u1ea1n c\u00f3 y\u00eau c\u1ea7u \u0111\u1eb7c bi\u1ec7t.<\/li>\n\n\n\n<li>Khi c\u00e0i \u0111\u1eb7t ho\u00e0n t\u1ea5t, b\u1ea1n s\u1ebd c\u00f3 c\u1ea3 Node.js v\u00e0 NPM tr\u00ean m\u00e1y.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-b\u01b0\u1edbc-2-ki\u1ec3m-tra-cai-d\u1eb7t\"><strong>B\u01b0\u1edbc 2: Ki\u1ec3m tra c\u00e0i \u0111\u1eb7t<\/strong><\/h4>\n\n\n\n<p>Sau khi c\u00e0i \u0111\u1eb7t Node.js, h\u00e3y m\u1edf \u1ee9ng d\u1ee5ng Terminal v\u00e0 nh\u1eadp l\u1ec7nh sau \u0111\u1ec3 ki\u1ec3m tra:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>node -v\n\nnpm -v<\/code><\/pre>\n\n\n\n<p>C\u00e1c l\u1ec7nh n\u00e0y s\u1ebd hi\u1ec3n th\u1ecb phi\u00ean b\u1ea3n Node.js v\u00e0 NPM \u0111\u00e3 \u0111\u01b0\u1ee3c c\u00e0i. N\u1ebfu th\u1ea5y s\u1ed1 phi\u00ean b\u1ea3n xu\u1ea5t hi\u1ec7n, ngh\u0129a l\u00e0 c\u00e0i \u0111\u1eb7t \u0111\u00e3 th\u00e0nh c\u00f4ng.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-b\u01b0\u1edbc-3-c\u1eadp-nh\u1eadt-npm-tuy-ch\u1ecdn\"><strong>B\u01b0\u1edbc 3: C\u1eadp nh\u1eadt NPM (t\u00f9y ch\u1ecdn)<\/strong><\/h4>\n\n\n\n<p>M\u1eb7c d\u00f9 NPM \u0111i k\u00e8m v\u1edbi Node.js th\u01b0\u1eddng \u0111\u00e3 kh\u00e1 m\u1edbi, b\u1ea1n v\u1eabn c\u00f3 th\u1ec3 c\u1eadp nh\u1eadt l\u00ean phi\u00ean b\u1ea3n m\u1edbi nh\u1ea5t b\u1eb1ng c\u00e1ch:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npm install -g npm<\/code><\/pre>\n\n\n\n<p>L\u1ec7nh n\u00e0y s\u1ebd c\u1eadp nh\u1eadt NPM l\u00ean phi\u00ean b\u1ea3n m\u1edbi nh\u1ea5t hi\u1ec7n c\u00f3.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-b\u01b0\u1edbc-4-kh\u1eafc-ph\u1ee5c-s\u1ef1-c\u1ed1-quy\u1ec1n-truy-c\u1eadp-n\u1ebfu-co\"><strong>B\u01b0\u1edbc 4: Kh\u1eafc ph\u1ee5c s\u1ef1 c\u1ed1 quy\u1ec1n truy c\u1eadp (n\u1ebfu c\u00f3)<\/strong><\/h4>\n\n\n\n<p>\u0110\u00f4i khi, khi c\u00e0i \u0111\u1eb7t c\u00e1c g\u00f3i to\u00e0n h\u1ec7 th\u1ed1ng (global) tr\u00ean macOS, b\u1ea1n c\u00f3 th\u1ec3 g\u1eb7p l\u1ed7i li\u00ean quan \u0111\u1ebfn quy\u1ec1n h\u1ea1n v\u00ec macOS qu\u1ea3n l\u00fd nghi\u00eam ng\u1eb7t vi\u1ec7c ghi v\u00e0o th\u01b0 m\u1ee5c h\u1ec7 th\u1ed1ng.<\/p>\n\n\n\n<p>C\u00f3 hai c\u00e1ch x\u1eed l\u00fd ph\u1ed5 bi\u1ebfn l\u00e0<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>D\u00f9ng sudo (\u00edt khuy\u1ebfn ngh\u1ecb):<\/strong> B\u1ea1n c\u00f3 th\u1ec3 th\u00eam sudo tr\u01b0\u1edbc l\u1ec7nh NPM \u0111\u1ec3 ch\u1ea1y v\u1edbi quy\u1ec1n cao h\u01a1n. Tuy nhi\u00ean c\u00e1ch n\u00e0y kh\u00f4ng \u0111\u01b0\u1ee3c khuy\u1ebfn kh\u00edch v\u00ec c\u00f3 th\u1ec3 g\u00e2y l\u1ed7i quy\u1ec1n truy c\u1eadp sau n\u00e0y.<\/li>\n\n\n\n<li><strong>T\u1ea1o th\u01b0 m\u1ee5c NPM ri\u00eang trong user:<\/strong> B\u1ea1n c\u00f3 th\u1ec3 c\u1ea5u h\u00ecnh NPM \u0111\u1ec3 c\u00e0i \u0111\u1eb7t g\u00f3i to\u00e0n c\u1ee5c v\u00e0o m\u1ed9t th\u01b0 m\u1ee5c t\u00f9y ch\u1ec9nh trong th\u01b0 m\u1ee5c ng\u01b0\u1eddi d\u00f9ng, tr\u00e1nh c\u1ea7n quy\u1ec1n sudo.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-b\u01b0\u1edbc-5-b\u1eaft-d\u1ea7u-s\u1eed-d\u1ee5ng-npm-0\"><strong>B\u01b0\u1edbc 5: B\u1eaft \u0111\u1ea7u s\u1eed d\u1ee5ng NPM<\/strong><\/h4>\n\n\n\n<p>Khi \u0111\u00e3 c\u00e0i \u0111\u1eb7t v\u00e0 c\u1ea5u h\u00ecnh xong, b\u1ea1n c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng NPM \u0111\u1ec3 c\u00e0i v\u00e0 qu\u1ea3n l\u00fd c\u00e1c g\u00f3i cho d\u1ef1 \u00e1n JavaScript c\u1ee7a m\u00ecnh. V\u00ed d\u1ee5, \u0111\u1ec3 c\u00e0i m\u1ed9t g\u00f3i:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npm install &lt;package-name&gt;<\/code><\/pre>\n\n\n\n<p>L\u1ec7nh n\u00e0y s\u1ebd c\u00e0i g\u00f3i \u0111\u01b0\u1ee3c ch\u1ec9 \u0111\u1ecbnh v\u00e0o th\u01b0 m\u1ee5c d\u1ef1 \u00e1n hi\u1ec7n t\u1ea1i. Sau \u0111\u00f3, b\u1ea1n c\u00f3 th\u1ec3 import v\u00e0 s\u1eed d\u1ee5ng g\u00f3i \u0111\u00f3 trong m\u00e3 JavaScript.<\/p>\n\n\n\n<p>Ngo\u00e0i ra, NPM c\u00f2n cung c\u1ea5p nhi\u1ec1u l\u1ec7nh v\u00e0 t\u00ednh n\u0103ng kh\u00e1c nh\u01b0 qu\u1ea3n l\u00fd dependencies, ch\u1ea1y scripts, publish package,\u2026 Khi b\u1ea1n l\u00e0m vi\u1ec7c nhi\u1ec1u v\u1edbi JavaScript v\u00e0 Node.js, b\u1ea1n s\u1ebd th\u1ea5y NPM l\u00e0 c\u00f4ng c\u1ee5 v\u00f4 c\u00f9ng h\u1eefu \u00edch gi\u00fap t\u1ed1i \u01b0u quy tr\u00ecnh ph\u00e1t tri\u1ec3n.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-gi\u1edbi-thi\u1ec7u-nvm-nvm-windows-nbsp\"><strong>Gi\u1edbi thi\u1ec7u nvm\/nvm-windows&nbsp;<\/strong><\/h3>\n\n\n\n<p>M\u1ed9t v\u1ea5n \u0111\u1ec1 ph\u1ed5 bi\u1ebfn khi l\u00e0m vi\u1ec7c v\u1edbi Node.js l\u00e0 b\u1ea1n c\u00f3 th\u1ec3 c\u1ea7n nhi\u1ec1u phi\u00ean b\u1ea3n Node.js v\u00e0 npm kh\u00e1c nhau cho t\u1eebng d\u1ef1 \u00e1n (v\u00ed d\u1ee5: d\u1ef1 \u00e1n A y\u00eau c\u1ea7u Node.js 14, d\u1ef1 \u00e1n B c\u1ea7n Node.js 18). \u0110\u1ec3 gi\u1ea3i quy\u1ebft, b\u1ea1n c\u00f3 th\u1ec3 d\u00f9ng NVM (Node Version Manager)<\/p>\n\n\n\n<p>\u0110\u1ed1i v\u1edbi h\u1ec7 \u0111i\u1ec1u h\u00e0nh MacOS ho\u1eb7c Linux, b\u1ea1n c\u00f3 th\u1ec3 c\u00e0i \u0111\u1eb7t nvm b\u1eb1ng c\u00e1ch theo h\u01b0\u1edbng d\u1eabn tr\u00ean Github nh\u01b0 curl -o- https:\/\/raw.githubusercontent.com\/nvm-sh\/nvm\/v0.39.7\/install.sh | bash<\/p>\n\n\n\n<p>\u0110\u1ed1i v\u1edbi Windows, do NVM b\u1ea3n g\u1ed1c kh\u00f4ng h\u1ed7 tr\u1ee3 Windows, b\u1ea1n c\u00f3 th\u1ec3 c\u00e0i nvm-windows t\u1ea1i https:\/\/github.com\/coreybutler\/nvm-windows<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-cac-b\u01b0\u1edbc-s\u1eed-d\u1ee5ng-npm-c\u01a1-b\u1ea3n\"><span class=\"ez-toc-section\" id=\"Cac_buoc_su_dung_npm_co_ban\"><\/span><strong>C\u00e1c b\u01b0\u1edbc s\u1eed d\u1ee5ng npm c\u01a1 b\u1ea3n<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-clear-cache-trong-npm\"><strong>Clear cache trong npm<\/strong><\/h3>\n\n\n\n<p>Vi\u1ec7c x\u00f3a cache c\u1ee7a npm ch\u1ee7 y\u1ebfu c\u1ea7n thi\u1ebft \u0111\u1ec3 gi\u1ea3i ph\u00f3ng dung l\u01b0\u1ee3ng \u1ed5 \u0111\u0129a v\u00e0 \u0111\u1ea3m b\u1ea3o c\u00e1c g\u00f3i \u0111\u01b0\u1ee3c c\u00e0i \u0111\u1eb7t m\u1edbi nh\u1ea5t. K\u1ec3 t\u1eeb npm 7, t\u00ednh to\u00e0n v\u1eb9n d\u1eef li\u1ec7u c\u1ee7a cache \u0111\u00e3 \u0111\u01b0\u1ee3c duy tr\u00ec t\u1ef1 \u0111\u1ed9ng, v\u00ec v\u1eady vi\u1ec7c x\u00f3a th\u1ee7 c\u00f4ng \u00edt khi c\u1ea7n thi\u1ebft, nh\u01b0ng trong m\u1ed9t s\u1ed1 tr\u01b0\u1eddng h\u1ee3p v\u1eabn h\u1eefu \u00edch.<\/p>\n\n\n\n<p>\u0110\u1ec3 x\u00f3a cache c\u1ee7a npm, b\u1ea1n c\u00f3 th\u1ec3 tham kh\u1ea3o quy tr\u00ecnh sau:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0110\u1ea7u ti\u00ean, m\u1edf Terminal ho\u1eb7c Command Prompt.<\/li>\n\n\n\n<li>Ch\u1ea1y l\u1ec7nh x\u00f3a cache: npm cache clean &#8211;force<\/li>\n\n\n\n<li>X\u00e1c minh cache \u0111\u00e3 \u0111\u01b0\u1ee3c x\u00f3a b\u1eb1ng l\u1ec7nh npm cache verify<\/li>\n<\/ul>\n\n\n\n<p>N\u1ebfu th\u1ea5y k\u1ebft qu\u1ea3 x\u00e1c nh\u1eadn, ngh\u0129a l\u00e0 cache c\u1ee7a npm \u0111\u00e3 \u0111\u01b0\u1ee3c x\u00f3a th\u00e0nh c\u00f4ng.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-kh\u1edfi-t\u1ea1o-d\u1ef1-an-v\u1edbi-npm-init\"><strong>Kh\u1edfi t\u1ea1o d\u1ef1 \u00e1n v\u1edbi npm init<\/strong><\/h3>\n\n\n\n<p>L\u1ec7nh npm init gi\u00fap t\u1ea1o ra file package.json, n\u01a1i l\u01b0u tr\u1eef th\u00f4ng tin c\u1ee7a d\u1ef1 \u00e1n v\u00e0 danh s\u00e1ch dependencies (c\u00e1c th\u01b0 vi\u1ec7n c\u1ea7n thi\u1ebft).<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npm init<\/code><\/pre>\n\n\n\n<p>Ho\u1eb7c nhanh h\u01a1n, b\u1ecf qua ph\u1ea7n \u0111i\u1ec1n th\u00f4ng tin th\u1ee7 c\u00f4ng&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npm init-y<\/code><\/pre>\n\n\n\n<p>K\u1ebft qu\u1ea3 l\u00e0 b\u1ea1n s\u1ebd c\u00f3 m\u1ed9t file package.json \u0111\u1ec3 b\u1eaft \u0111\u1ea7u qu\u1ea3n l\u00fd project b\u1eb1ng npm.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-cai-d\u1eb7t-package-v\u1edbi-npm-install\"><strong>C\u00e0i \u0111\u1eb7t package v\u1edbi npm install<\/strong><\/h3>\n\n\n\n<p id=\"h-day-la-l\u1ec7nh-ph\u1ed5-bi\u1ebfn-nh\u1ea5t-khi-dung-npm-d\u1ec3-cai-d\u1eb7t-1-package-c\u1ee5-th\u1ec3-b\u1ea1n-co-th\u1ec3-dung-cau-l\u1ec7nh\">\u0110\u00e2y l\u00e0 l\u1ec7nh ph\u1ed5 bi\u1ebfn nh\u1ea5t khi d\u00f9ng npm. \u0110\u1ec3 c\u00e0i \u0111\u1eb7t 1 package c\u1ee5 th\u1ec3, b\u1ea1n c\u00f3 th\u1ec3 d\u00f9ng c\u00e2u l\u1ec7nh:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npm install express<\/code><\/pre>\n\n\n\n<p>Ho\u1eb7c c\u00e0i \u0111\u1eb7t nhi\u1ec1u package m\u1ed9t l\u00fac c\u00f3 th\u1ec3 d\u00f9ng c\u00e2u l\u1ec7nh<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npm install lodash axios<\/code><\/pre>\n\n\n\n<p>C\u00e0i \u0111\u1eb7t package ch\u1ec9 ph\u1ee5c v\u1ee5 m\u00f4i tr\u01b0\u1eddng ph\u00e1t tri\u1ec3n (devDependencies)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npm install nodemon \u2014save-dev<\/code><\/pre>\n\n\n\n<p>C\u00e0i \u0111\u1eb7t t\u1ea5t c\u1ea3 dependencies \u0111\u00e3 \u0111\u01b0\u1ee3c li\u1ec7t k\u00ea trong package.json<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npm install<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-g\u1ee1-b\u1ecf-package-v\u1edbi-npm-uninstall\"><strong>G\u1ee1 b\u1ecf package v\u1edbi npm uninstall<\/strong><\/h3>\n\n\n\n<p id=\"h-n\u1ebfu-b\u1ea1n-khong-con-c\u1ea7n-m\u1ed9t-package-hay-dung-cau-l\u1ec7nh\">N\u1ebfu b\u1ea1n kh\u00f4ng c\u00f2n c\u1ea7n m\u1ed9t package, h\u00e3y d\u00f9ng c\u00e2u l\u1ec7nh:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npm uninstall &lt;package-name&gt;<\/code><\/pre>\n\n\n\n<p>V\u00ed d\u1ee5 nh\u01b0 sau<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npm uninstall lodash<\/code><\/pre>\n\n\n\n<p>L\u1ec7nh n\u00e0y s\u1ebd g\u1ee1 package kh\u1ecfi th\u01b0 m\u1ee5c node_modules v\u00e0 \u0111\u1ed3ng th\u1eddi c\u1eadp nh\u1eadt l\u1ea1i package.json.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-ch\u1ea1y-script-v\u1edbi-npm-run-lt-script-gt\"><strong>Ch\u1ea1y script v\u1edbi npm run &lt;script&gt;<\/strong><\/h3>\n\n\n\n<p id=\"h-trong-file-package-json-b\u1ea1n-co-th\u1ec3-d\u1ecbnh-nghia-cac-script-d\u1ec3-t\u1ef1-d\u1ed9ng-hoa-cong-vi\u1ec7c-vi-d\u1ee5-ch\u1ea1y-server-ho\u1eb7c-build-project-vi-d\u1ee5-trong-package-json\">Trong file package.json, b\u1ea1n c\u00f3 th\u1ec3 \u0111\u1ecbnh ngh\u0129a c\u00e1c script \u0111\u1ec3 t\u1ef1 \u0111\u1ed9ng h\u00f3a c\u00f4ng vi\u1ec7c, v\u00ed d\u1ee5 ch\u1ea1y server ho\u1eb7c build project. V\u00ed d\u1ee5 trong package.json:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\"scripts\": {\n\n\u00a0\u00a0\"start\": \"node index.js\",\n\n\u00a0\u00a0\"dev\": \"nodemon index.js\"\n\n}<\/code><\/pre>\n\n\n\n<p>B\u1ea1n s\u1ebd ch\u1ea1y script npm run dev. Ho\u1eb7c v\u1edbi script \u0111\u1eb7c bi\u1ec7t l\u00e0 start, b\u1ea1n c\u00f3 th\u1ec3 ch\u1ea1y tr\u1ef1c ti\u1ebfp m\u00e0 kh\u00f4ng c\u1ea7n run.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npm start<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-b\u1ea3ng-t\u1ed5ng-h\u1ee3p-l\u1ec7nh-npm-va-ch\u1ee9c-nang\"><strong>B\u1ea3ng t\u1ed5ng h\u1ee3p l\u1ec7nh npm v\u00e0 ch\u1ee9c n\u0103ng<\/strong><\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>L\u1ec7nh<\/strong><\/td><td><strong>Ch\u1ee9c n\u0103ng<\/strong><\/td><\/tr><tr><td>npm access<\/td><td>Thi\u1ebft l\u1eadp quy\u1ec1n truy c\u1eadp cho c\u00e1c package \u0111\u00e3 publish<\/td><\/tr><tr><td>npm adduser<\/td><td>T\u1ea1o t\u00e0i kho\u1ea3n ng\u01b0\u1eddi d\u00f9ng tr\u00ean npm registry<\/td><\/tr><tr><td>npm audit<\/td><td>Qu\u00e9t v\u00e0 ki\u1ec3m tra l\u1ed7 h\u1ed5ng b\u1ea3o m\u1eadt trong dependencies<\/td><\/tr><tr><td>npm bin<\/td><td>Hi\u1ec3n th\u1ecb th\u01b0 m\u1ee5c ch\u1ee9a c\u00e1c file th\u1ef1c thi npm<\/td><\/tr><tr><td>npm bugs<\/td><td>M\u1edf trang b\u00e1o l\u1ed7i (bugs) c\u1ee7a package tr\u00ean tr\u00ecnh duy\u1ec7t<\/td><\/tr><tr><td>npm build<\/td><td>Bi\u00ean d\u1ecbch ho\u1eb7c d\u1ef1ng package<\/td><\/tr><tr><td>npm bundle<\/td><td>L\u1ec7nh \u0111\u00e3 b\u1ecb lo\u1ea1i b\u1ecf<\/td><\/tr><tr><td>npm cache<\/td><td>Qu\u1ea3n l\u00fd b\u1ed9 nh\u1edb \u0111\u1ec7m (cache) c\u1ee7a npm<\/td><\/tr><tr><td>npm ci<\/td><td>C\u00e0i \u0111\u1eb7t s\u1ea1ch dependencies t\u1eeb package-lock.json (th\u01b0\u1eddng d\u00f9ng trong CI\/CD)<\/td><\/tr><tr><td>npm completion<\/td><td>B\u1eadt t\u00ednh n\u0103ng t\u1ef1 \u0111\u1ed9ng g\u1ee3i \u00fd l\u1ec7nh npm trong terminal<\/td><\/tr><tr><td>npm config<\/td><td>Qu\u1ea3n l\u00fd c\u1ea5u h\u00ecnh npm (config)<\/td><\/tr><tr><td>npm dedupe<\/td><td>X\u00f3a b\u1ecf dependencies tr\u00f9ng l\u1eb7p<\/td><\/tr><tr><td>npm deprecate<\/td><td>\u0110\u00e1nh d\u1ea5u m\u1ed9t phi\u00ean b\u1ea3n package l\u00e0 l\u1ed7i th\u1eddi<\/td><\/tr><tr><td>npm dist-tag<\/td><td>Qu\u1ea3n l\u00fd nh\u00e3n ph\u00e2n ph\u1ed1i (tags) cho package<\/td><\/tr><tr><td>npm docs<\/td><td>M\u1edf t\u00e0i li\u1ec7u h\u01b0\u1edbng d\u1eabn c\u1ee7a package trong tr\u00ecnh duy\u1ec7t<\/td><\/tr><tr><td>npm doctor<\/td><td>Ki\u1ec3m tra m\u00f4i tr\u01b0\u1eddng c\u00e0i \u0111\u1eb7t npm\/Node.js<\/td><\/tr><tr><td>npm edit<\/td><td>M\u1edf v\u00e0 ch\u1ec9nh s\u1eeda tr\u1ef1c ti\u1ebfp code package \u0111\u00e3 c\u00e0i<\/td><\/tr><tr><td>npm explore<\/td><td>Duy\u1ec7t n\u1ed9i dung c\u1ee7a package \u0111\u00e3 c\u00e0i<\/td><\/tr><tr><td>npm fund<\/td><td>Xem th\u00f4ng tin t\u00e0i tr\u1ee3 (n\u1ebfu package c\u00f3 h\u1ed7 tr\u1ee3 funding)<\/td><\/tr><tr><td>npm help<\/td><td>M\u1edf t\u00e0i li\u1ec7u tr\u1ee3 gi\u00fap npm<\/td><\/tr><tr><td>npm help-search<\/td><td>T\u00ecm ki\u1ebfm l\u1ec7nh tr\u1ee3 gi\u00fap npm<\/td><\/tr><tr><td>npm hook<\/td><td>Qu\u1ea3n l\u00fd webhook trong npm registry<\/td><\/tr><tr><td>npm init<\/td><td>Kh\u1edfi t\u1ea1o file package.json m\u1edbi<\/td><\/tr><tr><td>npm install<\/td><td>C\u00e0i \u0111\u1eb7t m\u1ed9t package (ho\u1eb7c t\u1ea5t c\u1ea3 t\u1eeb package.json)<\/td><\/tr><tr><td>npm install-ci-test<\/td><td>C\u00e0i s\u1ea1ch v\u00e0 ch\u1ea1y test (th\u01b0\u1eddng d\u00f9ng CI\/CD)<\/td><\/tr><tr><td>npm install-test<\/td><td>C\u00e0i v\u00e0 ch\u1ea1y test sau \u0111\u00f3<\/td><\/tr><tr><td>npm link<\/td><td>T\u1ea1o li\u00ean k\u1ebft bi\u1ec3u t\u01b0\u1ee3ng (symlink) t\u1edbi package c\u1ee5c b\u1ed9<\/td><\/tr><tr><td>npm logout<\/td><td>\u0110\u0103ng xu\u1ea5t kh\u1ecfi npm registry<\/td><\/tr><tr><td>npm ls<\/td><td>Li\u1ec7t k\u00ea t\u1ea5t c\u1ea3 package \u0111\u00e3 c\u00e0i<\/td><\/tr><tr><td>npm org<\/td><td>Qu\u1ea3n l\u00fd t\u1ed5 ch\u1ee9c (organization) trong npm<\/td><\/tr><tr><td>npm outdated<\/td><td>Ki\u1ec3m tra c\u00e1c package \u0111\u00e3 l\u1ed7i th\u1eddi<\/td><\/tr><tr><td>npm owner<\/td><td>Qu\u1ea3n l\u00fd ch\u1ee7 s\u1edf h\u1eefu c\u1ee7a package<\/td><\/tr><tr><td>npm pack<\/td><td>\u0110\u00f3ng g\u00f3i package th\u00e0nh file .tgz<\/td><\/tr><tr><td>npm ping<\/td><td>Ki\u1ec3m tra k\u1ebft n\u1ed1i v\u1edbi npm registry<\/td><\/tr><tr><td>npm prefix<\/td><td>Hi\u1ec3n th\u1ecb \u0111\u01b0\u1eddng d\u1eabn th\u01b0 m\u1ee5c npm hi\u1ec7n t\u1ea1i<\/td><\/tr><tr><td>npm profile<\/td><td>C\u1eadp nh\u1eadt th\u00f4ng tin h\u1ed3 s\u01a1 ng\u01b0\u1eddi d\u00f9ng npm<\/td><\/tr><tr><td>npm prune<\/td><td>X\u00f3a c\u00e1c package kh\u00f4ng c\u00f2n c\u1ea7n thi\u1ebft<\/td><\/tr><tr><td>npm publish<\/td><td>\u0110\u0103ng t\u1ea3i package l\u00ean npm registry<\/td><\/tr><tr><td>npm rebuild<\/td><td>Bi\u00ean d\u1ecbch l\u1ea1i package \u0111\u00e3 c\u00e0i<\/td><\/tr><tr><td>npm repo<\/td><td>M\u1edf trang repository c\u1ee7a package<\/td><\/tr><tr><td>npm restart<\/td><td>Kh\u1edfi \u0111\u1ed9ng l\u1ea1i package (n\u1ebfu c\u00f3 script)<\/td><\/tr><tr><td>npm root<\/td><td>Hi\u1ec3n th\u1ecb th\u01b0 m\u1ee5c g\u1ed1c c\u1ee7a npm<\/td><\/tr><tr><td>npm run-script<\/td><td>Ch\u1ea1y c\u00e1c script \u0111\u01b0\u1ee3c \u0111\u1ecbnh ngh\u0129a trong package.json<\/td><\/tr><tr><td>npm search<\/td><td>T\u00ecm ki\u1ebfm package tr\u00ean npm registry<\/td><\/tr><tr><td>npm shrinkwrap<\/td><td>C\u1ed1 \u0111\u1ecbnh phi\u00ean b\u1ea3n dependencies khi publish<\/td><\/tr><tr><td>npm star<\/td><td>\u0110\u00e1nh d\u1ea5u package y\u00eau th\u00edch<\/td><\/tr><tr><td>npm stars<\/td><td>Xem danh s\u00e1ch package \u0111\u00e3 \u0111\u00e1nh d\u1ea5u sao<\/td><\/tr><tr><td>npm start<\/td><td>Ch\u1ea1y script kh\u1edfi \u0111\u1ed9ng (th\u01b0\u1eddng l\u00e0 npm run start)<\/td><\/tr><tr><td>npm stop<\/td><td>D\u1eebng script \u0111ang ch\u1ea1y<\/td><\/tr><tr><td>npm team<\/td><td>Qu\u1ea3n l\u00fd nh\u00f3m v\u00e0 th\u00e0nh vi\u00ean trong t\u1ed5 ch\u1ee9c npm<\/td><\/tr><tr><td>npm test<\/td><td>Ch\u1ea1y script ki\u1ec3m th\u1eed (test)<\/td><\/tr><tr><td>npm token<\/td><td>Qu\u1ea3n l\u00fd token x\u00e1c th\u1ef1c npm<\/td><\/tr><tr><td>npm uninstall<\/td><td>G\u1ee1 b\u1ecf m\u1ed9t package kh\u1ecfi d\u1ef1 \u00e1n<\/td><\/tr><tr><td>npm unpublish<\/td><td>G\u1ee1 package kh\u1ecfi npm registry<\/td><\/tr><tr><td>npm update<\/td><td>C\u1eadp nh\u1eadt package l\u00ean phi\u00ean b\u1ea3n m\u1edbi nh\u1ea5t<\/td><\/tr><tr><td>npm version<\/td><td>T\u0103ng phi\u00ean b\u1ea3n package (major\/minor\/patch)<\/td><\/tr><tr><td>npm view<\/td><td>Xem th\u00f4ng tin chi ti\u1ebft package t\u1eeb registry<\/td><\/tr><tr><td>npm whoami<\/td><td>Hi\u1ec3n th\u1ecb t\u00ean ng\u01b0\u1eddi d\u00f9ng npm hi\u1ec7n t\u1ea1i<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-so-sanh-dependencies-vs-devdependencies\"><span class=\"ez-toc-section\" id=\"So_sanh_Dependencies_vs_DevDependencies\"><\/span><strong>So s\u00e1nh: Dependencies vs DevDependencies<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>dependencies v\u00e0 devDependencies \u0111\u1ec1u t\u1ed3n t\u1ea1i d\u01b0\u1edbi d\u1ea1ng c\u00e1c \u0111\u1ed1i t\u01b0\u1ee3ng key-value, trong \u0111\u00f3 t\u00ean th\u01b0 vi\u1ec7n npm l\u00e0 key v\u00e0 phi\u00ean b\u1ea3n theo \u0111\u1ecbnh d\u1ea1ng semantic l\u00e0 value. Hi\u1ec3u r\u00f5 s\u1ef1 kh\u00e1c bi\u1ec7t gi\u1eefa c\u00e1c dependency v\u00e0 devDependencies s\u1ebd gi\u00fap b\u1ea1n qu\u1ea3n l\u00fd c\u00e1c m\u00f4-\u0111un d\u1ef1 \u00e1n m\u1ed9t c\u00e1ch hi\u1ec7u qu\u1ea3.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>dependencies<\/strong><\/td><td><strong>devDependencies<\/strong><\/td><\/tr><tr><td>M\u1ed9t th\u01b0 vi\u1ec7n m\u00e0 d\u1ef1 \u00e1n c\u1ea7n \u0111\u1ec3 ho\u1ea1t \u0111\u1ed9ng hi\u1ec7u qu\u1ea3.<\/td><td>C\u00e1c package m\u00e0 l\u1eadp tr\u00ecnh vi\u00ean c\u1ea7n trong qu\u00e1 tr\u00ecnh ph\u00e1t tri\u1ec3n.<\/td><\/tr><tr><td>N\u1ebfu m\u1ed9t package ch\u01b0a t\u1ed3n t\u1ea1i trong th\u01b0 m\u1ee5c node_modules, th\u00ec n\u00f3 s\u1ebd \u0111\u01b0\u1ee3c t\u1ef1 \u0111\u1ed9ng th\u00eam v\u00e0o.<\/td><td>Khi ch\u1ea1y npm install trong m\u00f4i tr\u01b0\u1eddng development, npm s\u1ebd c\u00e0i c\u1ea3 dependencies v\u00e0 devDependencies; nh\u01b0ng v\u1edbi &#8211;production th\u00ec ch\u1ec9 c\u00e0i dependencies, b\u1ecf qua devDependencies.<\/td><\/tr><tr><td>\u0110\u00e2y l\u00e0 c\u00e1c th\u01b0 vi\u1ec7n b\u1ea1n c\u1ea7n khi ch\u1ea1y code.<\/td><td>C\u00e1c dependencies n\u00e0y c\u00f3 th\u1ec3 c\u1ea7n trong giai \u0111o\u1ea1n ph\u00e1t tri\u1ec3n, nh\u01b0ng kh\u00f4ng c\u1ea7n khi ch\u1ea1y ch\u01b0\u01a1ng tr\u00ecnh.<\/td><\/tr><tr><td>\u0110\u01b0\u1ee3c bao g\u1ed3m trong g\u00f3i code cu\u1ed1i c\u00f9ng.<\/td><td>Kh\u00f4ng n\u1eb1m trong production runtime.<\/td><\/tr><tr><td>C\u00f3 th\u1ec3 th\u00eam dependencies v\u00e0o d\u1ef1 \u00e1n b\u1eb1ng c\u00e1ch ch\u1ea1y:npm i &lt;package_name&gt;<\/td><td>C\u00f3 th\u1ec3 th\u00eam dev dependencies v\u00e0o d\u1ef1 \u00e1n b\u1eb1ng c\u00e1ch ch\u1ea1y:npm i &lt;package_name&gt; &#8211;save-dev<\/td><\/tr><tr><td>V\u00ed d\u1ee5: moment, express<\/td><td>V\u00ed d\u1ee5: webpack, babel, eslint<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-dependencies-th\u01b0-vi\u1ec7n-cac-d\u1ef1-an-d\u1ec1u-c\u1ea7n\"><strong>Dependencies &#8211; Th\u01b0 vi\u1ec7n c\u00e1c d\u1ef1 \u00e1n \u0111\u1ec1u c\u1ea7n<\/strong><\/h3>\n\n\n\n<p>Dependencies l\u00e0 c\u00e1c th\u01b0 vi\u1ec7n m\u00e0 d\u1ef1 \u00e1n c\u1ee7a b\u1ea1n c\u1ea7n \u0111\u1ec3 ch\u1ea1y trong m\u00f4i tr\u01b0\u1eddng production. \u0110\u00e2y l\u00e0 nh\u1eefng th\u00e0nh ph\u1ea7n b\u1eaft bu\u1ed9c cho ch\u1ee9c n\u0103ng c\u1ed1t l\u00f5i c\u1ee7a \u1ee9ng d\u1ee5ng v\u00e0 ph\u1ea3i \u0111\u01b0\u1ee3c c\u00e0i \u0111\u1eb7t \u0111\u1ec3 \u1ee9ng d\u1ee5ng ho\u1ea1t \u0111\u1ed9ng \u0111\u00fang c\u00e1ch.<\/p>\n\n\n\n<p>\u0110\u1ec3 th\u00eam m\u1ed9t package l\u00e0m dependency, b\u1ea1n s\u1eed d\u1ee5ng l\u1ec7nh sau:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npm install &lt;t\u00ean-package&gt;<\/code><\/pre>\n\n\n\n<p>V\u00ed d\u1ee5: C\u00e0i \u0111\u1eb7t module moment \u0111\u1ec3 \u0111\u1ecbnh d\u1ea1ng th\u1eddi gian trong d\u1ef1 \u00e1n b\u1eb1ng l\u1ec7nh:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npm install moment<\/code><\/pre>\n\n\n\n<p>Sau khi module \u0111\u01b0\u1ee3c c\u00e0i \u0111\u1eb7t, n\u1ebfu b\u1ea1n m\u1edf file package.json, b\u1ea1n s\u1ebd th\u1ea5y moment c\u00f9ng v\u1edbi phi\u00ean b\u1ea3n c\u1ee7a n\u00f3 n\u1eb1m trong \u0111\u1ed1i t\u01b0\u1ee3ng dependencies nh\u01b0 sau:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\"dependencies\": {\u00a0\u00a0\u00a0\n\n\u00a0\u00a0\u00a0\"moment\": \"^2.30.1\"\n\n}<\/code><\/pre>\n\n\n\n<p>Trong \u0111\u00f3:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>S\u1eed d\u1ee5ng trong production:<\/strong> \u0110\u00e2y l\u00e0 c\u00e1c th\u01b0 vi\u1ec7n thi\u1ebft y\u1ebfu \u0111\u1ec3 ch\u1ea1y \u1ee9ng d\u1ee5ng trong m\u00f4i tr\u01b0\u1eddng production.<\/li>\n\n\n\n<li><strong>C\u00e0i \u0111\u1eb7t t\u1ef1 \u0111\u1ed9ng:<\/strong> Nh\u1eefng package n\u00e0y s\u1ebd \u0111\u01b0\u1ee3c c\u00e0i \u0111\u1eb7t t\u1ef1 \u0111\u1ed9ng khi b\u1ea1n ch\u1ea1y l\u1ec7nh npm install.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-devdependencies-hi\u1ec7u-qu\u1ea3-h\u01a1n-trong-giai-do\u1ea1n-phat-tri\u1ec3n-d\u1ef1-an\"><strong>devDependencies &#8211; Hi\u1ec7u qu\u1ea3 h\u01a1n trong giai \u0111o\u1ea1n ph\u00e1t tri\u1ec3n d\u1ef1 \u00e1n<\/strong><\/h3>\n\n\n\n<p>Trong file package.json, c\u00f3 m\u1ed9t \u0111\u1ed1i t\u01b0\u1ee3ng g\u1ecdi l\u00e0 devDependencies. \u0110\u1ed1i t\u01b0\u1ee3ng n\u00e0y bao g\u1ed3m t\u1ea5t c\u1ea3 c\u00e1c package \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng trong giai \u0111o\u1ea1n ph\u00e1t tri\u1ec3n d\u1ef1 \u00e1n, ch\u1ee9 kh\u00f4ng ph\u1ea3i trong m\u00f4i tr\u01b0\u1eddng production, k\u00e8m theo s\u1ed1 phi\u00ean b\u1ea3n c\u1ee7a ch\u00fang.&nbsp;<\/p>\n\n\n\n<p>V\u00ec v\u1eady, b\u1ea5t c\u1ee9 khi n\u00e0o b\u1ea1n mu\u1ed1n c\u00e0i \u0111\u1eb7t m\u1ed9t th\u01b0 vi\u1ec7n ch\u1ec9 c\u1ea7n d\u00f9ng trong giai \u0111o\u1ea1n ph\u00e1t tri\u1ec3n, b\u1ea1n s\u1ebd th\u1ea5y n\u00f3 n\u1eb1m trong \u0111\u1ed1i t\u01b0\u1ee3ng devDependencies. \u0110\u1ec3 th\u00eam m\u1ed9t package l\u00e0m development dependency, b\u1ea1n s\u1eed d\u1ee5ng l\u1ec7nh sau.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npm install &lt;t\u00ean-package&gt; --save-dev<\/code><\/pre>\n\n\n\n<p>V\u00ed d\u1ee5: C\u00e0i \u0111\u1eb7t module bootstrap ch\u1ec9 s\u1eed d\u1ee5ng trong giai \u0111o\u1ea1n ph\u00e1t tri\u1ec3n, kh\u00f4ng d\u00f9ng trong production hay testing c\u1ee7a d\u1ef1 \u00e1n, b\u1ea1n ch\u1ea1y l\u1ec7nh:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npm install eslint --save-dev<\/code><\/pre>\n\n\n\n<p>Sau khi c\u00e0i \u0111\u1eb7t, trong file package.json s\u1ebd xu\u1ea5t hi\u1ec7n nh\u01b0 sau:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\"devDependencies\": {\n\n\u00a0\u00a0\u00a0\"eslint\": \"^5.3.5\"\n\n}<\/code><\/pre>\n\n\n\n<p>Trong \u0111\u00f3:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Ch\u1ec9 d\u00f9ng trong ph\u00e1t tri\u1ec3n: <\/strong>Nh\u1eefng package n\u00e0y ch\u1ec9 c\u1ea7n cho vi\u1ec7c ph\u00e1t tri\u1ec3n v\u00e0 ki\u1ec3m th\u1eed, kh\u00f4ng d\u00f9ng trong production.<\/li>\n\n\n\n<li><strong>C\u00e0i \u0111\u1eb7t t\u1ef1 \u0111\u1ed9ng:<\/strong> C\u00e1c package n\u00e0y s\u1ebd \u0111\u01b0\u1ee3c c\u00e0i \u0111\u1eb7t khi b\u1ea1n ch\u1ea1y l\u1ec7nh npm install.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-khi-nao-nen-s\u1eed-d\u1ee5ng-dependencies-hay-devdependencies\"><strong>Khi n\u00e0o n\u00ean s\u1eed d\u1ee5ng Dependencies hay DevDependencies?<\/strong><\/h3>\n\n\n\n<p>B\u1ea1n n\u00ean s\u1eed d\u1ee5ng dependencies cho b\u1ea5t k\u1ef3 package n\u00e0o m\u00e0 d\u1ef1 \u00e1n c\u1ee7a b\u1ea1n c\u1ea7n \u0111\u1ec3 ch\u1ea1y trong m\u00f4i tr\u01b0\u1eddng production ho\u1eb7c testing. \u0110i\u1ec1u n\u00e0y bao g\u1ed3m c\u00e1c package m\u00e0 code c\u1ee7a b\u1ea1n import v\u00e0 s\u1eed d\u1ee5ng \u0111\u1ec3 ho\u1ea1t \u0111\u1ed9ng hi\u1ec7u qu\u1ea3, ch\u1eb3ng h\u1ea1n nh\u01b0:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>C\u00e1c framework (nh\u01b0 <a href=\"https:\/\/itviec.com\/blog\/reactjs-la-gi\/\" target=\"_blank\" rel=\"noreferrer noopener\">React<\/a> ho\u1eb7c <a href=\"https:\/\/itviec.com\/blog\/angularjs-la-gi\/\" target=\"_blank\" rel=\"noreferrer noopener\">Angular<\/a>)<\/li>\n\n\n\n<li>C\u00e1c th\u01b0 vi\u1ec7n (nh\u01b0 Lodash ho\u1eb7c Moment.js)<\/li>\n\n\n\n<li>Ho\u1eb7c b\u1ea5t k\u1ef3 ti\u1ec7n \u00edch n\u00e0o kh\u00e1c l\u00e0 m\u1ed9t ph\u1ea7n c\u1ee7a runtime c\u1ee7a \u1ee9ng d\u1ee5ng.<\/li>\n<\/ul>\n\n\n\n<p>V\u00ed d\u1ee5 th\u00eam m\u1ed9t package nh\u01b0 m\u1ed9t dependency<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npm install axios --save<\/code><\/pre>\n\n\n\n<p>L\u1ec7nh n\u00e0y s\u1ebd th\u00eam Axios (m\u1ed9t HTTP client ph\u1ed5 bi\u1ebfn) v\u00e0o dependencies trong file package.json:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\"dependencies\": {\n\n\u00a0\u00a0\"axios\": \"^0.21.1\"\n\n}<\/code><\/pre>\n\n\n\n<p>Ng\u01b0\u1ee3c l\u1ea1i, devDependencies \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng cho c\u00e1c package h\u1ed7 tr\u1ee3 trong qu\u00e1 tr\u00ecnh ph\u00e1t tri\u1ec3n nh\u01b0ng kh\u00f4ng c\u1ea7n thi\u1ebft \u0111\u1ec3 \u1ee9ng d\u1ee5ng ch\u1ea1y. \u0110i\u1ec1u n\u00e0y bao g\u1ed3m:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>C\u00e1c compiler (nh\u01b0 Babel)<\/li>\n\n\n\n<li>Bundler (nh\u01b0 Webpack)<\/li>\n\n\n\n<li>Testing frameworks (nh\u01b0 Jest)<\/li>\n\n\n\n<li>Linter (nh\u01b0 ESLint)<\/li>\n<\/ul>\n\n\n\n<p>Nh\u1eefng package n\u00e0y ch\u1ec9 \u0111\u01b0\u1ee3c d\u00f9ng trong giai \u0111o\u1ea1n ph\u00e1t tri\u1ec3n v\u00e0 tr\u01b0\u1edbc khi tri\u1ec3n khai, nh\u01b0ng ng\u01b0\u1eddi d\u00f9ng cu\u1ed1i c\u1ee7a \u1ee9ng d\u1ee5ng th\u00ec kh\u00f4ng c\u1ea7n \u0111\u1ebfn.<\/p>\n\n\n\n<p>V\u00ed d\u1ee5: th\u00eam m\u1ed9t package nh\u01b0 m\u1ed9t devDependency:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npm install webpack --save-dev<\/code><\/pre>\n\n\n\n<p>\u0110i\u1ec1u n\u00e0y s\u1ebd th\u00eam Webpack v\u00e0o devDependencies trong file package.json:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\"devDependencies\": {\n\n\u00a0\u00a0\"webpack\": \"^5.11.0\"\n\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-cac-cau-h\u1ecfi-th\u01b0\u1eddng-g\u1eb7p-v\u1ec1-npm\"><span class=\"ez-toc-section\" id=\"Cac_cau_hoi_thuong_gap_ve_npm\"><\/span><strong>C\u00e1c c\u00e2u h\u1ecfi th\u01b0\u1eddng g\u1eb7p v\u1ec1 npm<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-co-th\u1ec3-ch\u1ea1y-l\u1ec7nh-npm-install-\u1edf-dau\"><strong>C\u00f3 th\u1ec3 ch\u1ea1y l\u1ec7nh npm install \u1edf \u0111\u00e2u?<\/strong><\/h3>\n\n\n\n<p>B\u1ea1n c\u00f3 th\u1ec3 ch\u1ea1y l\u1ec7nh <code>npm install<\/code> tr\u1ef1c ti\u1ebfp trong terminal ho\u1eb7c command line t\u1ea1i th\u01b0 m\u1ee5c g\u1ed1c c\u1ee7a d\u1ef1 \u00e1n. L\u1ec7nh n\u00e0y s\u1ebd \u0111\u1ecdc file package.json \u0111\u1ec3 c\u00e0i \u0111\u1eb7t to\u00e0n b\u1ed9 dependencies c\u1ea7n thi\u1ebft cho d\u1ef1 \u00e1n.<\/p>\n\n\n\n<p>N\u1ebfu mu\u1ed1n c\u00e0i m\u1ed9t package ri\u00eang l\u1ebb, b\u1ea1n c\u0169ng c\u00f3 th\u1ec3 ch\u1ea1y <code>npm install &lt;t\u00ean-package><\/code> trong c\u00f9ng th\u01b0 m\u1ee5c d\u1ef1 \u00e1n.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-nen-cai-node-js-hay-npm-tr\u01b0\u1edbc\"><strong>N\u00ean c\u00e0i Node.js hay npm tr\u01b0\u1edbc?<\/strong><\/h3>\n\n\n\n<p>Npm \u0111\u01b0\u1ee3c c\u00e0i \u0111\u1eb7t \u0111i k\u00e8m khi b\u1ea1n c\u00e0i Node.js. V\u00ec v\u1eady, b\u1ea1n ch\u1ec9 c\u1ea7n t\u1ea3i v\u00e0 c\u00e0i \u0111\u1eb7t Node.js th\u00ec npm s\u1ebd t\u1ef1 \u0111\u1ed9ng c\u00f3 s\u1eb5n tr\u00ean m\u00e1y.<\/p>\n\n\n\n<p>Sau khi c\u00e0i \u0111\u1eb7t, b\u1ea1n c\u00f3 th\u1ec3 ki\u1ec3m tra b\u1eb1ng l\u1ec7nh <code>node -v<\/code> v\u00e0 <code>npm -v<\/code> \u0111\u1ec3 ch\u1eafc ch\u1eafn r\u1eb1ng c\u1ea3 Node.js v\u00e0 npm \u0111\u00e3 ho\u1ea1t \u0111\u1ed9ng.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-npm-co-gi\u1ed1ng-pip-khong\"><strong>Npm c\u00f3 gi\u1ed1ng pip kh\u00f4ng?<\/strong><\/h3>\n\n\n\n<p>Npm v\u00e0 pip c\u00f3 ch\u1ee9c n\u0103ng t\u01b0\u01a1ng t\u1ef1 nhau nh\u01b0ng d\u00f9ng cho c\u00e1c ng\u00f4n ng\u1eef kh\u00e1c nhau. C\u1ea3 hai \u0111\u1ec1u gi\u00fap l\u1eadp tr\u00ecnh vi\u00ean d\u1ec5 d\u00e0ng c\u00e0i \u0111\u1eb7t, c\u1eadp nh\u1eadt v\u00e0 qu\u1ea3n l\u00fd dependencies trong d\u1ef1 \u00e1n.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Npm l\u00e0 tr\u00ecnh qu\u1ea3n l\u00fd g\u00f3i d\u00e0nh cho JavaScript ho\u1eb7c Node.js.<\/li>\n\n\n\n<li>Trong khi pip \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 qu\u1ea3n l\u00fd th\u01b0 vi\u1ec7n trong Python.\u00a0<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-package-json-la-gi\"><strong>package.json l\u00e0 g\u00ec?<\/strong><\/h3>\n\n\n\n<p>package.json l\u00e0 \u201ctr\u00e1i tim\u201d c\u1ee7a h\u1ec7 th\u1ed1ng Node.js, \u0111\u00e2y l\u00e0 m\u1ed9t t\u1ec7p manifest ch\u1ee9a to\u00e0n b\u1ed9 th\u00f4ng tin m\u00f4 t\u1ea3 (metadata) c\u1ee7a d\u1ef1 \u00e1n. M\u1ed7i d\u1ef1 \u00e1n Node.js \u0111\u1ec1u c\u1ea7n c\u00f3 file n\u00e0y \u0111\u1ec3 qu\u1ea3n l\u00fd th\u00f4ng tin d\u1ef1 \u00e1n, dependencies, scripts, v\u00e0 c\u00e1c c\u1ea5u h\u00ecnh c\u1ea7n thi\u1ebft. N\u1eafm v\u1eefng c\u1ea5u tr\u00fac v\u00e0 \u00fd ngh\u0129a c\u1ee7a file n\u00e0y l\u00e0 b\u01b0\u1edbc \u0111\u1ea7u ti\u00ean \u0111\u1ec3 hi\u1ec3u v\u00e0 l\u00e0m vi\u1ec7c hi\u1ec7u qu\u1ea3 v\u1edbi Node.js.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-t\u1ed5ng-k\u1ebft\"><span class=\"ez-toc-section\" id=\"Tong_ket\"><\/span><strong>T\u1ed5ng k\u1ebft<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Npm kh\u00f4ng ch\u1ec9 l\u00e0 m\u1ed9t c\u00f4ng c\u1ee5 qu\u1ea3n l\u00fd g\u00f3i \u0111\u01a1n thu\u1ea7n m\u00e0 c\u00f2n l\u00e0 n\u1ec1n t\u1ea3ng m\u1ea1nh m\u1ebd gi\u00fap t\u0103ng t\u1ed1c quy tr\u00ecnh ph\u00e1t tri\u1ec3n v\u00e0 c\u1ed9ng t\u00e1c trong c\u00e1c d\u1ef1 \u00e1n JavaScript. V\u1edbi h\u01b0\u1edbng d\u1eabn to\u00e0n di\u1ec7n trong b\u00e0i vi\u1ebft, b\u1ea1n \u0111\u00e3 c\u00f3 c\u00e1i nh\u00ecn t\u1ed5ng quan v\u00e0 c\u1ee5 th\u1ec3 \u0111\u1ec3 \u00e1p d\u1ee5ng npm hi\u1ec7u qu\u1ea3 v\u00e0o c\u00f4ng vi\u1ec7c.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Npm l\u00e0 tr\u00ecnh qu\u1ea3n l\u00fd g\u00f3i (package manager) m\u1eb7c \u0111\u1ecbnh \u0111i k\u00e8m v\u1edbi Node.js, \u0111\u01b0\u1ee3c bi\u1ebft \u0111\u1ebfn v\u1edbi kho th\u01b0 vi\u1ec7n kh\u1ed5ng l\u1ed3, kh\u1ea3 n\u0103ng c\u00e0i \u0111\u1eb7t nhanh ch\u00f3ng v\u00e0 h\u1ed7 tr\u1ee3 qu\u1ea3n l\u00fd dependencies hi\u1ec7u qu\u1ea3. C\u00f4ng c\u1ee5 n\u00e0y gi\u00fap l\u1eadp tr\u00ecnh vi\u00ean d\u1ec5 d\u00e0ng chia s\u1ebb, t\u00e1i s\u1eed d\u1ee5ng v\u00e0 c\u1eadp nh\u1eadt c\u00e1c [&hellip;]<\/p>\n","protected":false},"author":95,"featured_media":93900,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_gspb_post_css":"","footnotes":""},"categories":[109,10344],"tags":[],"class_list":["post-93897","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-chuyen-mon-it","category-javascript"],"blocksy_meta":[],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.8 (Yoast SEO v27.8) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>NPM l\u00e0 g\u00ec: Kh\u00e1i ni\u1ec7m, l\u1ec7nh v\u00e0 thao t\u00e1c c\u01a1 b\u1ea3n v\u1edbi NPM - ITviec Blog<\/title>\n<meta name=\"description\" content=\"Npm l\u00e0 tr\u00ecnh qu\u1ea3n l\u00fd g\u00f3i (package manager) m\u1eb7c \u0111\u1ecbnh \u0111i k\u00e8m v\u1edbi Node.js, \u0111\u01b0\u1ee3c h\u00e0ng tri\u1ec7u l\u1eadp tr\u00ecnh vi\u00ean tr\u00ean to\u00e0n th\u1ebf gi\u1edbi s\u1eed d\u1ee5ng. Chi ti\u1ebft npm l\u00e0 g\u00ec.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/itviec.com\/blog\/npm-la-gi\/\" \/>\n<meta property=\"og:locale\" content=\"vi_VN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"NPM l\u00e0 g\u00ec: Kh\u00e1i ni\u1ec7m, l\u1ec7nh v\u00e0 thao t\u00e1c c\u01a1 b\u1ea3n v\u1edbi NPM\" \/>\n<meta property=\"og:description\" content=\"Npm l\u00e0 tr\u00ecnh qu\u1ea3n l\u00fd g\u00f3i (package manager) m\u1eb7c \u0111\u1ecbnh \u0111i k\u00e8m v\u1edbi Node.js, \u0111\u01b0\u1ee3c bi\u1ebft \u0111\u1ebfn v\u1edbi kho th\u01b0 vi\u1ec7n kh\u1ed5ng l\u1ed3, kh\u1ea3 n\u0103ng c\u00e0i \u0111\u1eb7t nhanh ch\u00f3ng v\u00e0 h\u1ed7 tr\u1ee3\" \/>\n<meta property=\"og:url\" content=\"https:\/\/itviec.com\/blog\/npm-la-gi\/\" \/>\n<meta property=\"og:site_name\" content=\"ITviec Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/ITviec\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-30T04:33:17+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-12-30T04:33:20+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/12\/npm-la-gi-scaled.png\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"421\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Tuong Uyen\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@ITviec\" \/>\n<meta name=\"twitter:site\" content=\"@ITviec\" \/>\n<meta name=\"twitter:label1\" content=\"\u0110\u01b0\u1ee3c vi\u1ebft b\u1edfi\" \/>\n\t<meta name=\"twitter:data1\" content=\"Tuong Uyen\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u01af\u1edbc t\u00ednh th\u1eddi gian \u0111\u1ecdc\" \/>\n\t<meta name=\"twitter:data2\" content=\"22 ph\u00fat\" \/>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"NPM l\u00e0 g\u00ec: Kh\u00e1i ni\u1ec7m, l\u1ec7nh v\u00e0 thao t\u00e1c c\u01a1 b\u1ea3n v\u1edbi NPM - ITviec Blog","description":"Npm l\u00e0 tr\u00ecnh qu\u1ea3n l\u00fd g\u00f3i (package manager) m\u1eb7c \u0111\u1ecbnh \u0111i k\u00e8m v\u1edbi Node.js, \u0111\u01b0\u1ee3c h\u00e0ng tri\u1ec7u l\u1eadp tr\u00ecnh vi\u00ean tr\u00ean to\u00e0n th\u1ebf gi\u1edbi s\u1eed d\u1ee5ng. Chi ti\u1ebft npm l\u00e0 g\u00ec.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/itviec.com\/blog\/npm-la-gi\/","og_locale":"vi_VN","og_type":"article","og_title":"NPM l\u00e0 g\u00ec: Kh\u00e1i ni\u1ec7m, l\u1ec7nh v\u00e0 thao t\u00e1c c\u01a1 b\u1ea3n v\u1edbi NPM","og_description":"Npm l\u00e0 tr\u00ecnh qu\u1ea3n l\u00fd g\u00f3i (package manager) m\u1eb7c \u0111\u1ecbnh \u0111i k\u00e8m v\u1edbi Node.js, \u0111\u01b0\u1ee3c bi\u1ebft \u0111\u1ebfn v\u1edbi kho th\u01b0 vi\u1ec7n kh\u1ed5ng l\u1ed3, kh\u1ea3 n\u0103ng c\u00e0i \u0111\u1eb7t nhanh ch\u00f3ng v\u00e0 h\u1ed7 tr\u1ee3","og_url":"https:\/\/itviec.com\/blog\/npm-la-gi\/","og_site_name":"ITviec Blog","article_publisher":"https:\/\/www.facebook.com\/ITviec","article_published_time":"2025-12-30T04:33:17+00:00","article_modified_time":"2025-12-30T04:33:20+00:00","og_image":[{"width":800,"height":421,"url":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/12\/npm-la-gi-scaled.png","type":"image\/png"}],"author":"Tuong Uyen","twitter_card":"summary_large_image","twitter_creator":"@ITviec","twitter_site":"@ITviec","twitter_misc":{"\u0110\u01b0\u1ee3c vi\u1ebft b\u1edfi":"Tuong Uyen","\u01af\u1edbc t\u00ednh th\u1eddi gian \u0111\u1ecdc":"22 ph\u00fat"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/itviec.com\/blog\/npm-la-gi\/#article","isPartOf":{"@id":"https:\/\/itviec.com\/blog\/npm-la-gi\/"},"author":{"name":"Tuong Uyen","@id":"https:\/\/itviec.com\/blog\/#\/schema\/person\/e97d0e359f8840eaea7dc3a96006a8d4"},"headline":"NPM l\u00e0 g\u00ec: Kh\u00e1i ni\u1ec7m, l\u1ec7nh v\u00e0 thao t\u00e1c c\u01a1 b\u1ea3n v\u1edbi NPM","datePublished":"2025-12-30T04:33:17+00:00","dateModified":"2025-12-30T04:33:20+00:00","mainEntityOfPage":{"@id":"https:\/\/itviec.com\/blog\/npm-la-gi\/"},"wordCount":5830,"publisher":{"@id":"https:\/\/itviec.com\/blog\/#organization"},"image":{"@id":"https:\/\/itviec.com\/blog\/npm-la-gi\/#primaryimage"},"thumbnailUrl":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/12\/npm-la-gi-scaled.png","articleSection":["Chuy\u00ean m\u00f4n IT","JavaScript"],"inLanguage":"vi"},{"@type":"WebPage","@id":"https:\/\/itviec.com\/blog\/npm-la-gi\/","url":"https:\/\/itviec.com\/blog\/npm-la-gi\/","name":"NPM l\u00e0 g\u00ec: Kh\u00e1i ni\u1ec7m, l\u1ec7nh v\u00e0 thao t\u00e1c c\u01a1 b\u1ea3n v\u1edbi NPM - ITviec Blog","isPartOf":{"@id":"https:\/\/itviec.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/itviec.com\/blog\/npm-la-gi\/#primaryimage"},"image":{"@id":"https:\/\/itviec.com\/blog\/npm-la-gi\/#primaryimage"},"thumbnailUrl":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/12\/npm-la-gi-scaled.png","datePublished":"2025-12-30T04:33:17+00:00","dateModified":"2025-12-30T04:33:20+00:00","description":"Npm l\u00e0 tr\u00ecnh qu\u1ea3n l\u00fd g\u00f3i (package manager) m\u1eb7c \u0111\u1ecbnh \u0111i k\u00e8m v\u1edbi Node.js, \u0111\u01b0\u1ee3c h\u00e0ng tri\u1ec7u l\u1eadp tr\u00ecnh vi\u00ean tr\u00ean to\u00e0n th\u1ebf gi\u1edbi s\u1eed d\u1ee5ng. Chi ti\u1ebft npm l\u00e0 g\u00ec.","breadcrumb":{"@id":"https:\/\/itviec.com\/blog\/npm-la-gi\/#breadcrumb"},"inLanguage":"vi","potentialAction":[{"@type":"ReadAction","target":["https:\/\/itviec.com\/blog\/npm-la-gi\/"]}]},{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/itviec.com\/blog\/npm-la-gi\/#primaryimage","url":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/12\/npm-la-gi-scaled.png","contentUrl":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/12\/npm-la-gi-scaled.png","width":800,"height":421,"caption":"npm l\u00e0 g\u00ec - itviec blog"},{"@type":"BreadcrumbList","@id":"https:\/\/itviec.com\/blog\/npm-la-gi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Chuy\u00ean m\u00f4n IT","item":"https:\/\/itviec.com\/blog\/chuyen-mon-it\/"},{"@type":"ListItem","position":2,"name":"NPM l\u00e0 g\u00ec: Kh\u00e1i ni\u1ec7m, l\u1ec7nh v\u00e0 thao t\u00e1c c\u01a1 b\u1ea3n v\u1edbi NPM"}]},{"@type":"WebSite","@id":"https:\/\/itviec.com\/blog\/#website","url":"https:\/\/itviec.com\/blog\/","name":"ITviec Blog","description":"IT Jobs &amp; People in Vietnam","publisher":{"@id":"https:\/\/itviec.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/itviec.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"vi"},{"@type":"Organization","@id":"https:\/\/itviec.com\/blog\/#organization","name":"ITviec","url":"https:\/\/itviec.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/itviec.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2018\/12\/itviec-black-square-facebook.png","contentUrl":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2018\/12\/itviec-black-square-facebook.png","width":1800,"height":1800,"caption":"ITviec"},"image":{"@id":"https:\/\/itviec.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/ITviec","https:\/\/x.com\/ITviec","https:\/\/www.linkedin.com\/company\/itviec","https:\/\/www.youtube.com\/channel\/UCYthAQ3bcGr57M_ag5gHDvQ"]},{"@type":"Person","@id":"https:\/\/itviec.com\/blog\/#\/schema\/person\/e97d0e359f8840eaea7dc3a96006a8d4","name":"Tuong Uyen","image":{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2022\/10\/tuong-uyen-profile-picture-100x100.jpg","url":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2022\/10\/tuong-uyen-profile-picture-100x100.jpg","contentUrl":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2022\/10\/tuong-uyen-profile-picture-100x100.jpg","caption":"Tuong Uyen"},"url":"https:\/\/itviec.com\/blog\/author\/tuong-uyen-pikachu\/"}]}},"_links":{"self":[{"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/posts\/93897","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/users\/95"}],"replies":[{"embeddable":true,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/comments?post=93897"}],"version-history":[{"count":2,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/posts\/93897\/revisions"}],"predecessor-version":[{"id":93902,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/posts\/93897\/revisions\/93902"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/media\/93900"}],"wp:attachment":[{"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/media?parent=93897"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/categories?post=93897"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/tags?post=93897"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}