日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

你真的会用 npx 吗❓❓❓

發布時間:2024/1/16 windows 42 coder
生活随笔 收集整理的這篇文章主要介紹了 你真的会用 npx 吗❓❓❓ 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Hello,大家好!

日常開發中大家應該經常使用 npm install xxx 來安裝包依賴,那是否注意到npm升級到 npm@5.2.0 之后,在 npm 二進制命令旁邊安裝了一個 npx 二進制文件呢?

沒有 npx 命令前

在沒有 npx 命令之前,我們想要執行項目中安裝的可執行腳本,以安裝 React 創建項目的腳手架 create-react-app 為例,通常使用下面的做法:

做法一,使用全局安裝然后再創建項目:

npm install create-react-app -g

create-react-app test-react

缺點

  1. create-react-app 安裝項目本身是一個低頻次操作,全局安裝不具備必要性,同時如果其它低頻次工具也全局安裝,勢必會造成全局 path 混亂和冗余。
  2. npm 生態系統越來越傾向于將工具安裝為項目本地?devDependencies?,讓每個項目獨立管理工具的版本,而不是都是用全局安裝的固定版本。

做法二,不全局安裝,需要先進入腳手架目錄,再調用這個命令:

npm install create-react-app -D

cd node-modules/.bin/

create-react-app test-react

或者將 create-react-app 命令添加到 package.jsonscripts

缺點

這樣做每個項目可以安裝不同的腳手架版本,但操作還是略微繁瑣,同時每個項目都安裝一遍腳手架工具也是不必要的。

npx 就是為了解決這些問題,下面我們來了解一下。

npx 基本用法

了解基本用法之前,我們先看看 npx 的安裝。

安裝

在安裝完 node 以及 npm 后,會默認安裝 npm 相同版本號的 npx 工具,當然也可以獨立安裝:

npm install -g npx

執行命令

npx create-react-app

使用 npx 執行一個工具非常簡單,不需要提前安裝 create-react-app ,直接使用 npx 就可以執行這個工具,這源于 npx 的查找流程:

  1. 先自動查找當前項目依賴包中的可執行文件,也就是 node-modules/.bin/
  2. 如果找不到,就會去全局 $PATH 中查找,所以全局安裝的包不會重復安裝;
  3. 如果依然找不到,就會幫你臨時安裝,執行完命令后再刪除包。

擁有 npx 后,當我們開發一個命令,就不用讓用戶先安裝再使用了,給用戶添加負擔。??

常用參數

同時,npx 還有一些常用的參數:

--no-install?和--ignore-existing?參數

如果想讓 npx 強制使用本地模塊,不下載遠程模塊,可以使用--no-install參數。如果本地不存在該模塊,就會報錯。

npx --no-install create-react-app

反過來,如果忽略本地的同名模塊,強制安裝使用遠程模塊,可以使用--ignore-existing參數。比如,本地已經全局安裝了create-react-app,但還是想使用遠程模塊,就用這個參數。

npx --ignore-existing create-react-app my-react-app

-p 參數

-p參數用于指定 npx 所要安裝的模塊版本。

npx -p node@18.16.1 node -v 

上面命令先指定安裝node@18.16.1,然后再執行node -v命令。

-p參數對于需要安裝多個模塊的場景很有用。

npx -p lolcatjs -p cowsay 'cowsay hello'

cowsay 工具會在命令行中生成羊圖案和對象的文字,lolcatjs 工具會將這只羊上色

-c 參數

如果 npx 安裝多個模塊,默認情況下,所執行的命令之中,只有第一個可執行項會使用 npx 安裝的模塊,后面的可執行項還是會交給 Shell 解釋。

npx -p lolcatjs -p cowsay 'cowsay hello | lolcatjs'
# 報錯

上面代碼中,cowsay hello | lolcatjs執行時會報錯,原因是第一項cowsay由 npx 解釋,而第二項命令localcatjs由 Shell 解釋,但是lolcatjs并沒有全局安裝,所以報錯。

-c參數可以將所有命令都用 npx 解釋。有了它,下面代碼就可以正常執行了。

npx -p lolcatjs -p cowsay -c 'cowsay hello | lolcatjs'

-c參數的另一個作用,是將環境變量帶入所要執行的命令。舉例來說,npm 提供當前項目的一些環境變量,可以用下面的命令查看。

npm run env | grep npm_ # 查詢npm的環境變量,并篩選出以 npm_ 開頭的變量

-c參數可以把這些 npm 的環境變量帶入 npx 命令。

npx -c 'echo "$npm_package_name"'

上面代碼會輸出當前項目的項目名。

npx 其它用法

使用不同版本的 node

利用 npx 可以下載模塊這個特點,可以指定某個版本的 Node 運行腳本。它的竅門就是使用 npm 的?node 模塊。

npx node@18.16.1 -v

上面命令會使用 18.16.1 版本的 Node 執行腳本。原理是從 npm 下載這個版本的 node,使用后再刪掉。

使用這個包,可以直接在一個 node 環境下,使用不同版本的 node 測試開發的包是否正常運行,當然也可以使用 nvm 等 node 管理器,但是需要先切換再測試的方式效率明顯不如上面的命令。

執行 GitHub 源碼

npx 還可以執行 GitHub 上面的模塊源碼。

npx https://gist.github.com/zkat/4bc19503fe9e9309e2bfaa2c58074d32
# 執行倉庫代碼
npx github:piuccio/cowsay hello

注意,遠程代碼必須是一個模塊,即必須包含package.json和入口腳本。

本文具體參考了以下文章:

  • Introducing npx: an npm package runner | by Kat Marchán | Medium
  • GitHub - npm/npx: npm package executor
  • npx 使用教程 - 阮一峰的網絡日志

總結

以上是生活随笔為你收集整理的你真的会用 npx 吗❓❓❓的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。