# 什麼是 NPM ? npm(全稱 Node Package Manager,即「node包管理器」)是Node.js預設的、用JavaScript編寫的軟體套件管理系統。 ## 功能說明 + npm模組倉庫提供了一個名為「registry」的查詢服務,用戶可通過原生的npm命令下載並安裝指定模組。 + 用戶也可以通過npm把自己設計的模組分發到registry上面。 + 註:npm會隨著Node.js自動安裝。 ## NPM 常用指令 + `npm -v`:觀看 NPM 版本 + `npm init`:新增 package.json + `npm install [模組名稱]`:安裝 NPM 模組 + `npm install [模組名稱] -g`:全域安裝 + `npm list`:顯示安裝的 NPM 列表 + `npm uninstall [模組名稱]`:刪除專案裡的 NPM ## `npm install` 的妙用 通常 node_modules 資料夾不會被加入版本控制裡面 (.gitignore),所以可用 `npm install` 指令將裡面的模組一一安裝回來。 + 又或者 node_modules 資料夾被刪除或遺失的時候。 + 註:最一開始須先使用 `npm init` 新增一個 package.json 檔案。 --- ## NPM scripts ``` json //in package.json { "name": "fortesting", "version": "1.0.0", "description": "", "main": "JSpractice.js", "scripts": { "start": "node JSpractice", "tryEcho": "echo 123", "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC", "dependencies": { "left-pad": "^1.3.0" } } ``` + 每次要執行 JSpractice 這個檔案的時候,都是從終端機輸入:`node JSpractice` 指令,而透過 NPM scripts 可以自己設計腳本來使用。 + 用法: + 使用 npm run [script name] 指令。 + 這邊的範例是使用 `npm run start` 來達成跟 `node JSpractice` 一樣的效果。 + 範例二:使用 `npm run tryEcho` 等於在終端機輸入 `echo 123`。 --- ## NPM 版本號 打開 package.json 裡面的內容如下: ``` //... "dendencies": { "accepts": "~1.3.7", "array-flatten": "1.1.1", "body-parser": "^1.19.0", // ... } ``` 以 `"accepts": "~1.3.7",` 這行為例: + 1 代表主要版本號 + 3 代表次要版本號 + 7 代表修訂號 (bug) + `~` 波浪符號代表指定安裝為不超過**次要**版本號的版本 (指定為 >= 1.3.7 且 < 1.4.0 的版本) 以 `"body-parser": "^1.19.0",` 這行為例: + 1 代表主要版本號 + 19 代表次要版本號 + 0 代表修訂號 (bug) + `^` 符號代表指定安裝為不超過**主要**版本號的版本 (指定為 >= 1.19.0 且 < 2.0.0 的版本) > 參考資料:[npm 維基百科](https://zh.wikipedia.org/wiki/Npm) & [NPM是什麼?了解Node Package Manager套件管理機制](https://tw.alphacamp.co/blog/npm-node-package-manager)