一枚菜鳥,實習不久,一次幫別人的安裝前端項目環境時,遇到不少坑。因爲以前沒有對npm有太多瞭解,因此此次打算整理梳理一下。html
NPM——Node 的模塊管理器前端
NPM 安裝vue
新版的node.js已經集成了npm.,若是安裝了node(node安裝教程),就無需再安裝npm了。node
npm -v //查看npm版本
1、npm install (縮寫 npm i)(PS: 由於我用的是windows,全部有時在git bash下安裝 npm install 時,會好久也不會安裝,建議在windows自帶的命令框安裝比較好)react
npm install <Module Name> //此時爲本地安裝
效果: 將安裝包放在 ./node_modules 下(運行npm命令時所在的目錄),若是沒有node_modules目錄,會在當前執行npm命令的目錄下生成node_modules目錄git
過程:npm install 會先檢查node_modules 目錄之中是否已經存在指定模塊。若是存在,就再也不從新安裝了,即便遠程倉庫已經有了一個新版本,也是如此。github
假設:若是但願,一個模塊不論是否安裝過,npm 都要強制從新安裝, 可使用-f
或--force
參數。npm
npm install –f <Module Name>
或者
npm install <Module Name> --force
全局安裝:json
npm install <Module Name> -g #全局安裝 或者 npm install -g <Module Name>
本地安裝和全局安裝區別:windows
本地安裝 | 全局安裝 |
1.將安裝包放在 ./node_modules 下(運行npm命令時所在的目錄), 若是沒有node_modules 目錄,會在當前執行npm命令的目錄下生成node_modules目錄 |
1.安裝包放在 /user/local下或者 你 node的安裝目錄 |
2.能夠經過require()來引入本地安裝包 | 2.能夠直接在命令行裏使用 |
3. package.json會被下載到當前所在目錄,安裝的模塊會在 node_modules裏面 | 3.package會被下載到特定的系統目錄下,安裝的package可以在所 有目錄下使用。 |
不一樣狀況下的安裝:
1. 安裝當前目錄 package.json文件中配置的devDependencies模塊
npm install
2.安裝本地的模塊文件
npm install ../package.tgz
3. 安裝指定URL的模塊
npm install https://github.com/indexzero/。。。。
4.安裝本地文件系統中指定目錄包含的模塊
npm install <folder>
5.安裝並更新package.json 中的版本配置
npm install <name> [–save|–save-dev|–save-optional]
添加–save 參數安裝的模塊的名字及其版本信息會出如今package.json的dependencies選項中
添加–save-dev 參數安裝的模塊的名字及其版本信息會出如今package.json的devDependencies選項中
添加–save-optional 參數安裝的模塊的名字及其版本信息會出如今package.json的optionalDependencies選項中
6.安裝模塊的指定版本
npm install <name>@<version> npm install underscore@1.5.2
7.安裝模塊指定版本號範圍內的某一個版本
npm install <name>@<version range> npm install async@」>=0.2.0 <0.2.9″
註明: 若是項目路徑中有package.json文件時,直接使用npm install 方法就能夠根據dependecies配置安裝全部的依賴包。
2、 卸載 npm uninstall
卸載某一個模塊,npm uninstall <Module Name>
在安裝環境時,有時會刪除所有的安裝模塊,這是能夠刪去 node_modules 文件夾,而後再 npm install 從新安裝
若輸入命令行的話,能夠以下:
rm -rf node_modules npm install
3、 更新 npm update
若更新已安裝的模塊:
npm update [-g] [<name> [<name> … ]
它會先到遠程倉庫查詢最新版本,而後查詢本地版本。若是本地版本不存在,或者遠程版本較新,就會安裝。
-g 參數會更新全局安裝的模塊。 若是沒有指定name,且不是在某個模塊內,會更新當前目錄依賴的全部包都會更新;若當前目錄在某個模塊內,只更新該模塊依賴的模塊。
原理: npm update 命令怎麼知道每一個模塊最新版本?
npm 模板倉庫提供了一個查詢服務registry。在https://registry.npmjs.org/
後面跟上模塊名,會獲得json對象,裏面是該模塊因此版本信息。
例如:https://registry.npmjs.org/vue
後面加入版本,例如 https://registry.npmjs.org/react/v0.14.6 ,可查看 React 的 0.14.6 版
4、查看安裝信息
npm list -g //查看全部全局安裝的模塊
npm list grunt //查看grunt模塊的版本號
npm ls //列出當前安裝的了全部包 通常是到 /node_modules/目錄下查看包是否還存在
npm ls grunt // 查看特定包具體信息
5、卸載
npm uninstall <Module Name>
6、搜索模塊
npm search <Module Name>
7、建立模塊
package.json 文件是別不可少的,可使用npm生成package.json 文件
npm init //根據提示,輸入,在最後輸入「yes」後會生成package.json文件
8、其餘命令
npm help //可查看全部命令 npm help <command> //可查看某條命令的詳細幫助 npm help install
package.json 說明
npm命令運行時會根據當前目錄的package.json文件進行。相應的關鍵字含義以下所示:
name——應用名稱
description——應用描述
keywords—— 關鍵字
version —— 版本號
config——應用的配置項
homepage——主頁
author——做者
repository——資源倉庫地址
bugs——bug 提交地址
licenses——受權方式
directories——目錄
main——應用入口文件
bin——命令行文件
dependencies——應用依賴模塊
devDependencies ——開發環境依賴模塊
engine——運行引擎
scripts——腳本
本身混淆點——dependencies and devDependencies
1. dependencies 應用依賴模塊 別人要使用這個package,至少須要安裝哪些東西。 它會在安裝時安裝到當前模塊的node_modules 目錄下。
2. devDependencies 開發環境依賴模塊 它主要是在開發環境中用到的依賴模塊。用命令npm的命令install 或 link 加上參數 —dev 安裝到當前模塊的node_modules目錄下。
版本號
npm 採用語義化版本識別
例子:0.4.1
主版本(0)當你作了不兼容的API修改
次版本(4)當你作了向下兼容的功能性新增
修訂版本(1)當你作了向下兼容的問題修正
npm 腳本問題
實習中使用 npm run stage,主要是利用了 npm 腳本
它主要就是指 package.json 文件 使用 script字段 定義腳本命令
{ "name": "Test Project", "devDependencies": { "eslint": "^1.10.3" }, "scripts": { "lint": "eslint ." } }
運行 npm run lint ,會自動執行 ./node_modules/.bin/elint
若是直接運行 npm run 不給出任何參數,就會列出 scripts 屬性下全部的命令