npx是一種非常酷的執行Node代碼的方式,提供了許多有用的功能。

在這篇文章中,我想介紹一個非常強大的命令,從2017年7月開始在npm的5.2版本中可用:npx。

如果你不想安裝npm,你可以單獨安裝npx套件

npx讓你執行使用Node編寫並通過npm註冊表發佈的代碼。

輕鬆運行本地命令

Node開發人員習慣將大多數可執行命令作為全局套件發佈,以便它們能夠在路徑中並立即執行。

這很痛苦,因為實際上你不能安裝不同版本的相同命令。

運行npx 命令名稱將自動在項目的node_modules文件夾中找到正確的命令引用,而無需知道確切的路徑,也無需將套件安裝為全局註冊。

無需安裝的命令執行

npm還有另一個很棒的功能,就是允許在不先安裝它們的情況下運行命令。

這非常有用,主要原因是:

  1. 你不需要安裝任何東西
  2. 你可以運行不同版本的相同命令,使用@version語法

使用npx的典型演示是通過cowsay命令。cowsay會打印一頭牛,說出你在命令中輸入的內容。例如:

cowsay "Hello"將打印以下內容:

        ____
      < Hello >
 --------
    \   ^__^
     \  (oo)\_______
        (__)\       )\/\
            ||-----w |
            ||     ||

現在,如果你之前從npm全局安裝了cowsay命令,否則當你嘗試運行該命令時,將會出錯。

使用npx,你可以在本地執行該npm命令,而無需將其安裝:

npx cowsay "Hello"

就能運行了。

現在這只是一個有趣但毫無用處的命令。其他場景包括:

  • 使用vue CLI工具創建新應用程序並運行:npx vue create my-vue-app
  • 使用create-react-app創建新的React應用程序:npx create-react-app my-react-app

等等。

一旦下載完成,下載的代碼將被刪除。

使用不同的Node版本運行代碼

使用@指定版本,並結合node npm套件來達到這個目的:

npx [[email protected]](/cdn-cgi/l/email-protection) -v #v6.14.3
npx [[email protected]](/cdn-cgi/l/email-protection) -v #v8.11.3

這有助於避免像nvm或其他Node版本管理工具這樣的工具。

直接從URL運行任意代碼片段

npx並不限制你只能運行npm註冊表中發佈的套件。

你可以運行存儲在GitHub Gist中的代碼,例如:

npx https://gist.github.com/zkat/4bc19503fe9e9309e2bfaa2c58074d32

當然,運行你無法控制的代碼時,你需要小心,因為偉大的力量伴隨著偉大的責任。