Node.js中npx命令的使用方法及場景分析
npx使用教程
今晚在學習Vue-Cli
時, 由於突發奇想想試試最新的@4.x.x
版本, 但是本地全局安裝的腳手架版本是@2.x.x
的, 因為不想污染全局於是就想到用npx
命令, 一路上踩坑不斷, 為瞭以後能夠更好的使用npx
並區分其跟npm
的指令, 就有瞭本篇筆記
npm 是從5.2版開始, 增加(自帶)瞭 npx 命令。 如果發現沒安裝請手動安裝:
npm i -g npx
npm與npx的概念
- NPM(Node Package Manager) 是Node.js提供的一個包管理器, 可以使用 NPM 來安裝 node.js 包
- NPX(Node Package Excuted) 可以理解為用於臨時安裝並執行某個包的一個工具
總結的來說:
- npm專註於安裝包
- npx專註於執行包, 並且是較特殊的執行
npx的使用場景(對比npm的一些優勢)
從幾個使用場景出發, 希望能夠有對應您當前的場景, 這樣就能直接套用瞭
使用場景1: 想用項目中已經安裝好的某個包, 但是不能直接執行(因為沒有全局安裝, 涉及環境變量的問題)
對於這個場景, 有些笨方法:
- 到項目的根目錄下執行:
node-modules/.bin/包對應的腳本
- 配置
npm script
: 在package.json
的scripts
中將方法1
添加進腳本, 然後就能在需要的時候執行”npm run 自定義指令”以快速執行啦, 本質上隻是對方法1
的改進
更優雅的方法, 就是使用npx命令啦
:
npx <包對應的命令>
# 以less編譯為例:
npx lessc -v # 查看當前項目下less編譯器的版本
使用場景2: 已全局安裝某個包, 項目又已安裝瞭不同版本的某個包, 想用項目的那個版本
以我今晚的踩坑作為第二個使用場景, 我本地已經全局安裝瞭Vue腳手架的@2.x.x
版本, 但是我想用並已經在本地項目文件目錄中安裝瞭最新的@4.x.x
版本, 即:
# 已經執行過 npm i -g vue-cli@2 vue -V # [email protected] # 已經執行過 cd my-project npm i -D @vue/cli@4 vue -V # [email protected]
這時, 如果使用vue -V
會發現使用的是全局的版本, 因為npm默認會執行全局中的包。如果想使用項目已經安裝的那個版本就直接執行如下命令:
npx <包對應的命令> # 以vue-cli為例: npx vue create my-project
使用場景3: 不想全局或在項目中安裝某個包, 隻想臨時使用
對於這種場景, npx
就是必要的選擇。npx
會將要用的下載到一個臨時目錄, 使用完畢後自動刪除, 還是以Vue-Cli
為例: 這次的我突發奇想想看看React腳手架
的項目文件結構, 由於我還沒學, 所以本地和全局都沒有安裝(隻是臨時想用腳手架創建一個React項目)
npx create-react-app my-react-project #react腳手架將會在項目搭建完後自動被刪除掉
使用場景4: 臨時使用特定版本的包(本地沒有安裝)
如題所示, 這裡以我突發奇想想使用Vue腳手架的@3.x.x
版本, 但是我全局已經安裝瞭@2.x.x
版本
cd my-vue-project # 進入我的vue項目 npx @vue/cli@3 create big-project # 利用vue-cli的3.x版本創建一個名為big-project的項目
關於npx的一些參數
- 安裝並使用特定版本:
npx 包@版本號 包對應的命令
--no-install
強制使用本地包, 本地包如果沒安裝就會報錯:npx --no-install vue create my-project
--ignore-existing
強制安裝使用遠程模塊:npx --ignore-existing vue create my-project
-p
對於一次性安裝多個包,使用參數-p
:npx -p @vue/cli -p less
切記: 安裝多個包一定要使用 -p-c
在一次性安裝並使用多個包的場景中: 在低版本下執行npx -p vue-cli -p less lessc -v & vue -V
命令, 有可能隻有第一個命令項能正常執行, 即:隻打印出less編輯器的版本。npx
的參數-c
就是為瞭告訴npx
執行指定的所有命令的范圍:npx -p vue-cli -p less -c "lessc -v & vue -V"
, 這樣就能保證絕對的安全瞭。 註: &代表兩個命令都執行, |代表前面執行成功後面命令就不執行
這一小節中最常用、重要的是第5點, 根據此總結: 不管安裝的包、命令的個數個數是多少(哪怕隻安裝1個包), 嚴格遵守npx -p 包1 -p 包2 -p 包n -c "命令1 & 命令2 & 命令n"
一定沒錯
到此這篇關於Node.js中npx命令的使用方法、場景的文章就介紹到這瞭,更多相關Node.js npx命令使用內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- 使用Vite從零搭建前端項目的詳細過程
- 淺談React 的引入
- React+TypeScript進行項目構建案例講解
- React 源碼調試方式
- React Native項目中使用Lottie動畫的方法