npx的使用及原理分析
一、簡(jiǎn)介
npm從5.25.2版開始,增加了 npx 命令。
該命令的誕生主要是方便我在項(xiàng)目中使用全局包。
二、安裝
Node安裝后自帶npm模塊,可以直接使用npx命令。
如果不能使用,就要手動(dòng)安裝一下。
npm install -g npx
三、使用場(chǎng)景
npx想要解決的主要問題,就是調(diào)用項(xiàng)目?jī)?nèi)部安裝的模塊,我們以webpack為例。
首先我們先 npm init 創(chuàng)建一個(gè)node項(xiàng)目,在通過一下命令安裝webpack
(從webpack4開始需要依賴webpack-cli)
npm install webpack webpack-cli -D
如果我們想查看 webpack 版本我們只能通過以下命令 或 在 package.json 中的 scripts 字段里面添加對(duì)應(yīng)指令
<code class="language-plaintext hljs">// node_modules/.bin 中儲(chǔ)存的是安裝的package的可調(diào)用模塊 node_modules/.bin/webpack -v</code>
npx 可以讓項(xiàng)目?jī)?nèi)部安裝的模塊用起來更方便,只要像下面這樣調(diào)用就行了。
npx webpack -v
四、npx的原理
npx 的原理很簡(jiǎn)單,就是運(yùn)行的時(shí)候,會(huì)到先到 node_modules/.bin路徑 中查找命令如果沒有再去 全局環(huán)境變量$PATH 里面,檢查命令是否存在。
由于 npx 會(huì)檢查環(huán)境變量$PATH,所以系統(tǒng)命令也可以調(diào)用。
npx ls // 等同于ls命令
注意:
只要 npx 后面的模塊無法在本地發(fā)現(xiàn),npm就會(huì)詢問我們是否下載該package。
比如,本地沒有安裝webpack,執(zhí)行 npx webpack -v就會(huì)出現(xiàn)如圖的提示。
如果想讓 npx 強(qiáng)制使用本地模塊,不下載遠(yuǎn)程模塊,可以使用--no-install參數(shù)。
如果本地不存在該模塊,就會(huì)報(bào)錯(cuò)。
npx --no-install webpack -v
反過來,如果忽略本地的同名模塊,強(qiáng)制安裝使用遠(yuǎn)程模塊,可以使用--ignore-existing參數(shù)。
比如,本地已經(jīng)全局安裝了create-react-app,但還是想使用遠(yuǎn)程模塊,就用這個(gè)參數(shù)。
npx --ignore-existing create-react-app my-react-app
利用 npx 指定某個(gè)版本的 Node 運(yùn)行腳本。
npx node@14.10.0 -v
上面命令會(huì)使用 14.10.0 版本的 Node 執(zhí)行腳本。
原理是從 npm 下載這個(gè)版本的 node,使用后再刪掉。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
優(yōu)化Node.js Web應(yīng)用運(yùn)行速度的10個(gè)技巧
這篇文章主要介紹了優(yōu)化Node.js Web應(yīng)用運(yùn)行速度的10個(gè)技巧,本文講解了從并行、異步、緩存、gzip 壓縮、客戶端渲染等等技巧,需要的朋友可以參考下2014-09-09Node.js如何自動(dòng)審核團(tuán)隊(duì)的代碼
在項(xiàng)目開發(fā)中,統(tǒng)一團(tuán)隊(duì)的代碼風(fēng)格很重要,本文介紹如何用Node.js來自動(dòng)審核,來提高您的開發(fā)速度。2016-07-07nodejs實(shí)現(xiàn)bigpipe異步加載頁面方案
本文給大家分享的是使用nodejs結(jié)合bigpipe實(shí)現(xiàn)異步加載頁面的方案,非常的實(shí)用,也是以后前端性能優(yōu)化的一個(gè)方向,希望大家能夠喜歡。2016-01-01Node.js自動(dòng)生成API文檔的實(shí)現(xiàn)
本文主要介紹了Node.js自動(dòng)生成API文檔,包含基于swagger-jsdoc+swagger-ui-express快速實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03Node.js學(xué)習(xí)之內(nèi)置模塊fs用法示例
這篇文章主要介紹了Node.js學(xué)習(xí)之內(nèi)置模塊fs用法,結(jié)合實(shí)例形式詳細(xì)分析了node.js內(nèi)置模塊fs的基本功能、用法與相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2020-01-01使用Node.js創(chuàng)建HTTP服務(wù)器并實(shí)現(xiàn)公網(wǎng)訪問本地Server的步驟
Node.js含有一系列內(nèi)置模塊,使得程序可以脫離 Apache HTTP Server 或 IIS,作為獨(dú)立服務(wù)器運(yùn),下面將介紹如何簡(jiǎn)單幾步實(shí)現(xiàn)遠(yuǎn)程公共網(wǎng)絡(luò)下訪問windwos node.js的服務(wù)端,感興趣的朋友一起看看吧2023-11-11淺談Node.js 子進(jìn)程與應(yīng)用場(chǎng)景
這篇文章主要介紹了淺談Node.js 子進(jìn)程與應(yīng)用場(chǎng)景,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-01-01