在使用nodejs的npm包管理工具中碰到過許多個坑,在網上查了很久才解決,現在加以總結.
兩種安裝方式(本地安裝,全局安裝)
1.全局安裝(npm install -g moduleName/npm install ----global moduleName)
全局安裝,顧名思義是代表安裝到全局環境里面,可通過以下命令查看全局安裝路徑
npm root -g
npm prefix -g
請注意,兩種路徑中,不同的是node_modules目錄
通過以下命令可以設置全局安裝路徑(沒有node_modules,設置好后npm intall -g 會自動在你設置的目錄下生成一個node_modules目錄,你需要全局安裝的模塊會下載到里面),windows默認的全局安裝路徑為 C:\Users\xxx\AppData\Roaming\npm
npm config set prefix "your node global path"
全局安裝后可以在cmd命令窗口直接運行該組件包支持的命令,如下圖全局安裝后目錄結構(如果報錯不是內部或外部命令...,直接將全局安裝路徑添加到path環境變量即可)
2.本地安裝 npm install modulesName
本地安裝,是指在你命令行當前所在路徑下安裝./node_modules,本地安裝后可以直接通過require()的方式引入項目中node_modules目錄下的模塊
引入模塊:在js代碼中引入模塊時,node.js默認會在NODE_PATH和目前js所在項目下的node_modules文件夾下去尋找模塊,因此,如果只是全局安裝,不能直接通過require()的方式去引用模塊,需要手動解決包路徑的配置問題,可將環境變量的NODE_PATH設置為E:\Program Files\nodejs\node_global\node_modules (npm root -g 所得路徑)
本地安裝和全局安裝的優缺點:
首先,本地安裝,那你只能在當前項目中引用,每個項目使用時都需要在當前項目重新安裝一遍,全局安裝可以在任何地方引用(前提是NODE_PATH正確),安裝一次就可多次使用,但是有個問題,模塊也是有版本的,全局安裝的時候一個模塊如果在多個項目中被使用,當全局包被升級更新的時候,就可能會影響到你的多個項目,其中的依賴關系會被破壞,所以本地安裝有利於不同項目之間的獨立性.