npx的使用及原理分析
一、簡介
npm從5.25.2版開始,增加了 npx 命令。
該命令的誕生主要是方便我在項(xiàng)目中使用全局包。
二、安裝
Node安裝后自帶npm模塊,可以直接使用npx命令。
如果不能使用,就要手動(dòng)安裝一下。
npm install -g npx
三、使用場景
npx想要解決的主要問題,就是調(diào)用項(xiàng)目內(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)目內(nèi)部安裝的模塊用起來更方便,只要像下面這樣調(diào)用就行了。
npx webpack -v
四、npx的原理
npx 的原理很簡單,就是運(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)文章
從0-1搭建webpack的前端工程化項(xiàng)目教程
文章系統(tǒng)講解了前端工程化概念及Webpack的核心作用,涵蓋模塊化、組件化、自動(dòng)化開發(fā)流程,重點(diǎn)介紹Webpack配置、插件(如devServer、htmlWebpackPlugin)使用、Loader處理CSS/JS等文件、SourceMap調(diào)試機(jī)制,以及@路徑別名優(yōu)化項(xiàng)目結(jié)構(gòu)的實(shí)踐方法2025-08-08
node.js中的fs.readlinkSync方法使用說明
這篇文章主要介紹了node.js中的fs.readlinkSync方法使用說明,本文介紹了fs.readlinkSync方法說明、語法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下2014-12-12
Node.js?搭建后端服務(wù)器內(nèi)置模塊(?http+url+querystring?的使用)
這篇文章主要介紹了Node.js搭建后端服務(wù)器內(nèi)置模塊(http+url+querystring的使用),文章圍繞主題展開詳細(xì)的內(nèi)容戒殺,具有一定的參考價(jià)值,需要的朋友可以參考一下2022-09-09
npm安裝報(bào)錯(cuò)npm ERR! Error: EPERM: operation&
這篇文章主要為大家介紹了npm安裝報(bào)錯(cuò)npm ERR! Error: EPERM: operation not permitted解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07
在Docker快速部署Node.js應(yīng)用的詳細(xì)步驟
這篇文章的目標(biāo)是為了向大家展示如何在Docker的container里運(yùn)行Node.js程序,文中通過圖文與示例代碼介紹的非常詳細(xì),有需要的朋友們可以參考借鑒。2016-09-09
nodejs對(duì)express中next函數(shù)的一些理解
這篇文章主要介紹了nodejs對(duì)express中next函數(shù)的一些理解,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-09-09
解決node報(bào)錯(cuò)Error: Cannot find module http-e
這篇文章主要介紹了解決node報(bào)錯(cuò)Error: Cannot find module http-errors的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-05-05
Node.js連接數(shù)據(jù)庫實(shí)現(xiàn)過程詳解
這篇文章主要為大家介紹了Node.js連接數(shù)據(jù)庫實(shí)現(xiàn)過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12

