?npx是npm5.2之后發(fā)布的一個(gè)命令,官網(wǎng)說它是“execute npm package binaries”,就是執(zhí)行npm依賴包的二進(jìn)制文件,簡(jiǎn)而言之毅舆,就是我們可以使用npx來執(zhí)行各種命令值戳。
npx官網(wǎng):https://www.npmjs.com/package/npx
1议谷、npx解決的問題
在命令行執(zhí)行本地已安裝的依賴包命令
使用npx可以在命令行直接執(zhí)行本地已安裝的依賴包命令,不用在scripts腳本寫入命令堕虹,也不用麻煩的去找本地腳本卧晓。
首先看個(gè)場(chǎng)景
我們直接執(zhí)行某個(gè)命令叶洞,什么都不做時(shí)是不能運(yùn)行這個(gè)命令的,但是npx可以
2、npx的原理?
npx的原理 ,就是在運(yùn)行它時(shí)禀崖,執(zhí)行下列流程:
1衩辟、 去node_modules/.bin路徑檢查npx后的命令是否存在,找到之后執(zhí)行波附;
2艺晴、找不到,就去環(huán)境變量$PATH里面掸屡,檢查npx后的命令是否存在封寞,找到之后執(zhí)行;
3、還是找不到仅财,自動(dòng)下載一個(gè)臨時(shí)的依賴包最新版本在一個(gè)臨時(shí)目錄狈究,然后再運(yùn)行命令,運(yùn)行完之后刪除盏求,不污染全局環(huán)境抖锥。
3、npm 與 npx的區(qū)別
參考:https://blog.csdn.net/weixin_44216637/article/details/130149760
https://blog.csdn.net/qq_45947664/article/details/127856736
分別舉例說明
區(qū)別1.一個(gè)永久存在(npm)碎罚,一個(gè)臨時(shí)安裝(npx)磅废,用完后刪除
例子:用創(chuàng)建一個(gè)react項(xiàng)目的對(duì)比 npm創(chuàng)建
?npm install -g create-react-app
? ?create-react-app test-app
npx創(chuàng)建
?npx create-react-app test-app
區(qū)別:npm他會(huì)在本地全局性的安裝create-react-app,這個(gè)包會(huì)存儲(chǔ)在node目錄下面去荆烈。以后創(chuàng)建react項(xiàng)目直接執(zhí)行create-react-app命令就可以了拯勉。
npx命令他會(huì)把create-react-app安裝包臨時(shí)安裝上,等項(xiàng)目初始化完成以后憔购,他就刪除掉宫峦。
區(qū)別2.npx 會(huì)幫你執(zhí)行依賴包里的二進(jìn)制文件。
例子:執(zhí)行webpack里面的文件 npm執(zhí)行以下玫鸟,結(jié)果是:6.9.0
npm i -D webpack ./node_modules/.bin/webpack -v
或者執(zhí)行
npm i -D webpack`npm bin`/webpack -v
npx執(zhí)行
npm i -D webpack
npx webpack -v
也就是說 npx 會(huì)自動(dòng)查找當(dāng)前依賴包中的可執(zhí)行文件导绷,如果找不到,就會(huì)去環(huán)境變量里面的 PATH 里找鞋邑。如果依然找不到诵次,就會(huì)幫你安裝账蓉!
區(qū)別3.npx可以執(zhí)行文件枚碗,但是npm不可以
npx 甚至支持運(yùn)行遠(yuǎn)程倉(cāng)庫(kù)的可執(zhí)行文件:
npx?github:piuccio/cowsay hello
再比如 npx http-server 可以一句話幫你開啟一個(gè)靜態(tài)服務(wù)器!(第一次運(yùn)行會(huì)稍微慢一些)npx http-server
指定node版本來運(yùn)行npm scripts:
npx -p node@8? npm run build
主要特點(diǎn):
1铸本、臨時(shí)安裝可執(zhí)行依賴包肮雨,不用全局安裝,不用擔(dān)心長(zhǎng)期的污染箱玷。
2怨规、可以執(zhí)行依賴包中的命令陌宿,安裝完成自動(dòng)運(yùn)行。
3波丰、自動(dòng)加載node_modules中依賴包壳坪,不用指定$PATH。
4掰烟、可以指定node版本爽蝴、命令的版本,解決了不同項(xiàng)目使用不同版本的命令的問題
參考:http://www.reibang.com/p/14c813bba544