npx: npm包執行工具

npm  全名爲 Node Package Manage ,是 Node.js 的包管理工具, npm  讓開發者更容易安裝和管理項目中的依賴項,使得它在現代的前端開發工做中成爲了一個得力的工具,而在 npm@5.2.0 版本以後,增長 npx  以提供來一些輔助的功能。本文主要來介紹 npx 的特性與其存在的意義。javascript

尋址調用

若是一個 npm 包配置了 bin ,當這個包被安裝的時候,在項目的 node_modules/.bin 下就有會相應的指令來方便執行。html

例如:在項目中添加了 next 來構建 SSR 項目,那麼node_modules/.bin 下就會有 next 的命令。前端

image.png

若是須要調用 next 相關的命令,好比查詢 next 版本:vue

以往的方式:java

node node_module/.bin/next -v
複製代碼

npm script 方式:node

{
  "script": {
    "next-v": "node node_module/.bin/next -v"
  }
}
複製代碼
npm run next-v
複製代碼

npx 方式:react

npx next -v
複製代碼

在調用一些安裝包的內置命令時,好比在使用 Jest 進行測試單個文件的時候,對於寫 npm script 和 手動調用 node_modules 下的命令就不太友好,使用 npx 會方便不少。

npx 在尋址調用的時候,會到項目的 node_modules/.bin 路徑和系統的 path 中進行查找,檢查命令是否存在。若是不存在則會臨時下載或運行程序包或進行使用。web

執行一次性命令

例如本地不存在 http-server 模塊,則會自動臨時下載安裝,而後在當前目錄進行啓動一個 web 服務,這至關於一次性的命令。vue-cli

image.png

再舉個例子,檢查網站的可訪問性得分:npm

image.png

在這以前你是否有碰見過想要嘗試一些CLI工具建立項目,可是卻要進行全局安裝而後在進行建立,若是這個CLI工具只使用一次呢?好比利用 create-react-app 來建立 React 項目,使用 npx 來建立就能夠避免這個問題,並且不用擔憂使用時的升級問題,由於 npx 確保使用最新的生成器或者軟件包。

npx create-react-app my-react-repo
複製代碼

這樣 npx 會自動從註冊表中安裝 create-react-app 軟件包,並調用它,調用完成後又不會保存在全局文件中沒,所以不會污染全局安裝或須要多個步驟。這個特性很是適合生成器之類的軟件包,好比 create-react-appvue-cliyeoman 等。

# 使用npx建立vue項目
npx -p @vue/cli vue create hello-word
複製代碼

切換node版本

在一些場景下使用npx 切換 Node 版本,比用像 nvmnaven 這樣的 Node 版本管理工具會方便不少。

$ npx node@0.12.8 -v
v0.12.8
複製代碼

執行遠程模塊

npx 從URL執行程序包,但前提是URL上的遠程代碼必須是一個模塊,即必須包含 package.json 和入口腳本。

image.png

經常使用參數

-p

-p or --package <package> 定義要安裝的軟件包,並添加到正在運行的$PATH

--no-install

npx 強制使用本地模塊,不下載遠程模塊,若是本地沒有該模塊則會出錯。

--ignore-existing

--no-install 相反,讓 npx 強制使用遠程模塊。

--cache

設置 npm 緩存的位置,不然爲 npm 默認緩存位置。

-c

npm run-script相似外殼程序的環境中執行,並提供全部經常使用的環境變量。若是 NPX 安裝了多個模塊,只有 <string> 參數的第一個項會被看成命令執行,其餘的就需要加上 -p 選項。

-q, --quiet

禁止npx自己的任何輸出(進度條,錯誤消息,安裝報告),子命令輸出自己不會被禁止。

-n, --node-arg

當二進制是node腳本時,提供給node的額外參數。

-v, --version

查看 npx 版本

文章最後

經過以上咱們知道 npx 是一種執行 npm 包的工具,它很好的提高了使用 npm 包的體驗。 npm 使得在開發中方便的安裝和管理註冊表中託管的依賴項,而 npx  使得更容易使用註冊表中 CLI 工具和託管的其餘可執行文件。解決了以前沒有便捷的方式來交互式地調用本地二進制文件的問題,使得項目的開發管理提高了便捷性。

相關文章:

相關文章
相關標籤/搜索