Node.js--npm
阿新 • • 發佈:2020-12-12
一、全域性安裝vs本地安裝:
npm install xxx -g:屬於全域性安裝,將包安裝在C:\Users\admin\AppData\Roaming\npm\node_modules目錄下,同時在node_modules平級目錄生成批處理檔案,這樣可以在任何地方執行xxx的CIL命令。否則需要cd到專案的cmd命令所在目錄再執行/雙引號包含可執行命令的全路徑,很繁瑣。全域性安裝時的包不可以通過 require() 來引入。
npm install xxx –save-dev:屬於本地安裝,將包安裝在專案根目錄下的node_modules目錄下的.bin目錄下,生成對應的cmd命令,在專案根目錄下可以直接執行。可以通過 require() 來引入本地安裝的模組。
如果不安裝全域性包,則在pro目錄下是不能執行對應的命令列命令,必須cd到.bin目錄下,或者通過npm link命令或通過package.json的scripts欄位設定:
require()查詢檔案的順序
當require一個檔案模組時,先從當前執行檔案平級的的node_modules目錄中查詢;然後查詢上一級的node_modules目錄;依次迭代,直到根目錄下的node_modules目錄。如果還沒有查詢到指定模組的話,就會去NODE_PATH註冊的路徑中查詢。
require絕對路徑的檔案,查詢時不用去遍歷每一個node_modules目錄,其速度最快。
為什麼要全域性安裝和本地安裝兩次?
本地安裝可以讓每個專案依賴獨立的包,不受全域性包的影響,保證不同版本的包之間的相互依賴,可以通過require()使用引入的模組。是npm的預設安裝模式。
全域性安裝並不依賴引入的模組。它會在'C:\Users\admin\AppData\Roaming\npm'生成對應的cmd檔案,保證在任何地方都可以通過命令列執行該程式,不用cd到專案目錄執行。如全域性安裝gulp是為了在任何地方都可以執行gulp任務,本地安裝gulp則是為了呼叫gulp外掛的功能。
二、npm常用命令
1.安裝模組
npm install //安裝package.json中定義的所有依賴的包
npm install [<@scope>/]<name>@<version> //安裝指定版本的包,如不指定版本,預設安裝最新的包
alias: npm i
options:
-S|--save //儲存版本資訊到package.json檔案的dep欄位中
-D|--save-dev //儲存版本資訊到package.json檔案的devDep欄位中
npm install --production # 添加了production引數後將僅僅安裝package.json中dependencies 裡面的包,不會安裝devDependencies 裡的模組,否則get
alldependencies&devDependenciesinstalled。一個模組不能同時在兩種環境中安裝。
2.解除安裝模組
npm uninstall <pkg>
aliases: remove, rm, r, un, unlink
options:
-S|--save //刪除package.json中dev欄位對應的資訊
-D|--save-dev //刪除package.json中devDep欄位對應的資訊
3.更新模組
npm outdated [<pkg>] //列出所有過時的包
npm update [-g] [<pkg>...] //更新指定包到最新版本;如果未指定,則更新所有包,包括全域性和本地 a
liases: up, upgrade
options:同上
4.其他命令
npm config set registry https://registry.npm.taobao.org/ //切換映象
npm config get registry //檢視映象
npm config get prefix //獲取全域性模組安裝路徑;
where node //獲取node所在路徑;
npm <command> -h //檢視該命令的所有使用幫助資訊;
npm view [email protected] [version|dependencies] //檢視遠端包內的package.json資訊
npm config ls –l //檢視npm內建的配置引數
npm install 或者 npm install –save-dev //自動將所在目錄的package.json中的模組安裝到node-modules資料夾下,不用一個一個安裝模組。
npm ls xxx [–depth=0] //檢視本地安裝的模組版本資訊,只看當前目錄,不遍歷子目錄。注意:子模組的devdependency依賴包不會被安裝,只安裝dep包。
三、cnpm
因為npm是從國外伺服器下載,經常出現異常,可以使用淘寶團隊開發的映象cnpm,cnpm跟npm用法一樣。
安裝命令:npm install cnpm -g --registry=https://registry.npm.taobao.org
1.create-react-app安裝模組慢,可以設定永久使用cnpm:
$:npm configset registryhttps://registry.npm.taobao.org
$: npm configset registryhttp://registry.npmjs.org #官方地址
2.使用nrm管理registry地址:
1.安裝nrm:npm install -g nrm
2.註冊registry地址:
nrm add npm http://registry.npmjs.org
nrm add cnpm https://registry.npm.taobao.org
3.切換registry地址
nrm use npm/cnmp
3.依賴包版本管理
~匹配最近的小版本依賴包,比如~1.2.3會匹配所有1.2.x的包,但是不包括1.3.0。
^匹配最新的大版本依賴包,比如^1.2.3會匹配所有1.x.x的包,但是不包括2.0.0。
"scripts" : { "build" : "webpack ./entry.js bundle.js", "deploy": "export NODE_ENV=production && `npm bin`/webpack --config webpack.config.production.js && npm start", }然後執行npm run build命令。