包管理器 Node Package Manager:html
1類:本地開發使用的包 (devDependencies),如:gulp
2類:項目依賴包 (dependencies),如:jquery
node
升級NodeJS: 這裏使用n來管理node版本,更受歡迎的是使用nvm來管理:http://www.cnblogs.com/fanlinqiang/p/7741217.html
jquery
npm i n -g
n stable //升級到最新版本git
nv0.12.2 //升級到指定版本github
注:n模塊是專門用來管理nodejs版本的 express
注:windows下升級npm: npm install npm@latest -g npm
注:windows下升級node:下載指定版本 .msi 文件,安裝到歷史安裝目錄,即完成版本更新json
(附帶最新版的npm, 可經過命令:where node,查看當前node的安裝目錄)。gulp
初始化(生成package.json ,即npm腳本):windows
npm init
注:參數 -y 初始化過程當中一路綠燈(一路yes)
安裝包:
npm install [包名] //例如:npm install gulp
注:install可簡寫爲 i
注:參數 --global 簡寫 -g ,全局安裝,,默認爲裝在本地
注:參數 --save-dev 簡寫 -D,開發依賴包,寫入package.json中的devDependencies
注:參數 --save 簡寫 -S,項目上線依賴包,寫入package.json中的dependencies
# 只安裝生產環境(dependencies)包: npm i --product # 卸載包: npm remove | uninstall [包名] 注:參數 --global 全局卸載,簡寫 -g #查看包信息: npm info [包名] #安裝具體某個版本包: npm i [包名]@[版本號] -D //例:npm i gulp@3 -D npm i gulp@2.7 -D #查看已安裝的包及其依賴包結構: npm ls #查看指定已安裝包及其依賴 npm list | grep [包名] #查看已過時的包: npm outdated [包名] 注:包名可爲空 #更新已安裝包到最新版本: npm update #登陸npm npm login #發佈包 npm publish
執行package.json中自定義的腳本scripts:
如:
npm run iu
#更新npm至最新版本:
npm install -g npm
#清除緩存:
npm cache clean
注: package.json中的版本號控制中的 ^ 表示保證第一位爲鎖定,其餘位爲最新版本,
如:當package.json,記錄gulp爲^1.7.2而最新版本爲1.8.5,則init時會下載1.8.5
~保證前兩位爲鎖定,如:~1.7.2 (經常使用)
*保證最新版本,如: *
不帶任何符號,只有版本號,如:1.7.2,則構建時只會下載對應的版本號 (經常使用)
注:packge.json中的name是發佈包時的惟一標識,所以不能重複
nrm 是一個管理 npm 源的工具。用過 ruby 和 gem 的同窗會比較熟悉,一般咱們會把 gem 源切到國內的淘寶鏡像,這樣在安裝和更新一些包的時候比較快。nrm 同理,用來切換官方 npm 源和國內的 npm 源(如: cnpm),固然也能夠用來切換官方 npm 源和公司私有 npm 源。
全局安裝 nrm:
npm i nrm -g
查看當前 nrm 內置的幾個 npm 源的地址:
$ nrm ls
* npm ---- https://registry.npmjs.org/ cnpm --- http://r.cnpmjs.org/ eu ----- http://registry.npmjs.eu/ au ----- http://registry.npmjs.org.au/ sl ----- http://npm.strongloop.com/ nj ----- https://registry.nodejitsu.com/
nrm test 測試各個源速度
nrm use cnpm 切換源
使用淘寶鏡像:http://npm.taobao.org/
方案一(推薦):使用cnpm代替npm,並指定其源爲淘寶鏡像
npm install cnpm -g --resgistry=https://resgistry.npm.taobao.org
以後安裝均可使用cnpm代替npm ,如:
cnpm install gulp
方案二:在安裝時能夠手動指定從哪一個鏡像服務器獲取資源,使用阿里巴巴在國內的鏡像服務器
npm install -gd express --registry=http://registry.npm.taobao.org
只須要使用–registry參數指定鏡像服務器地址,爲了不每次安裝都須要--registry
參數,可使用以下命令進行永久設置:
npm config set registry http://registry.npm.taobao.org
注:cnpm與npm仍是有區別的,使用npm安裝會附帶一些其餘信息,如使用 npm ls命令時
npm install 生成的package-lock.json是什麼文件?有什麼用?
package-lock.json is automatically generated for any operations where npm modifies either the node_modules tree, or package.json. It describes the exact tree that was generated, such that subsequent installs are able to generate identical trees, regardless of intermediate dependency updates.
大概意思是:package-lock.json是當 node_modules 或 package.json 發生變化時自動生成的文件。這個文件主要功能是肯定當前安裝的包的依賴,以便後續從新安裝的時候生成相同的依賴,而忽略項目開發過程當中有些依賴已經發生的更新。
錯誤記錄:
1、使用npm安裝sudo npm install weex-toolkit -g報錯,使用chmod -R 777 /Users/linqiang/.nvm/versions/node/v10.8.0/lib/node_modules 無效...
後使用cnpm install weex-toolkit -g
npm ERR! path /Users/linqiang/.nvm/versions/node/v10.8.0/lib/node_modules/weex-toolkit/node_modules/acorn npm ERR! code ENOENT npm ERR! errno -2 npm ERR! syscall access npm ERR! enoent ENOENT: no such file or directory, access '/Users/linqiang/.nvm/versions/node/v10.8.0/lib/node_modules/weex-toolkit/node_modules/acorn' npm ERR! enoent This is related to npm not being able to find a file. npm ERR! enoent npm ERR! A complete log of this run can be found in: npm ERR! /Users/linqiang/.npm/_logs/2018-08-07T02_35_27_880Z-debug.log