npx 是什麼

原文地址: https://monster1935.com/2019/12/23/what-is-npx/

今天在看到 create-react-app 倉庫時,在其安裝方式上看到這樣一條指令,一臉懵逼,這是什麼?javascript

npx create-react-app my-app
cd my-app
npm start

nvmnrmnpmnpx, 相似的名詞家常便飯,npx 究竟是什麼?html

照例來到 github, 如其官方倉庫的解釋:java

npm package executor

這是 npm 的包執行器,那麼問題來了,這是何時出現的一個這樣的工具,以前一直沒用這個工具豈不也是好好的?node

npx 包執行器

查閱資料得知,npx 是 npm v5.2.0 版本以後一塊兒打包的安裝的一個包執行器,在沒有這個包執行器以前,咱們如何執行一個 npm 包的指令,首先咱們要搞懂執行一個已安裝的npm包的指令的過程。react

  1. 執行一條 npm intall *** 指令後,在當前執行路徑下的 node_module 文件夾下會默認添加該 npm 包對應的文件夾,並在 .bin 文件夾下生成對應的二進制執行指令
  2. 當咱們在執行一條指令時,實際上是在執行 .bin 文件夾下的對應的二進制指令

執行一個 npm 包就有兩種方式:webpack

  1. 直接定位到該二進制文件的路徑,執行。好比: node_modules/.bin/webpack
  2. package.json 中 scripts 字段中定義快捷命令,經過 npm run * 的方式去執行

有了 npx 之後,咱們就能夠直接使用 npx 命令去執行了,去尋找二進制命令文件的重任就交給了它,好比 npx webpack, 不再用去寫 node_modules/.bin/***git

npx 執行過程

如上介紹了 npx 執行指令對於咱們來講一個顯而易見的用處,那麼除此以外,npx 還有一個用途就是沒必要全局安裝一些 npm 包,直接使用 npx 命令去執行一些 npm 指令,若是本地沒有安裝的話會直接拉取最新的版本安裝並執行。 那麼 npx 的執行是一個什麼樣的過程:github

  1. 檢查預執行的 package 是否在本工程中已經安裝,若是有的話直接執行
  2. 若是沒有安裝,則拉取遠端最新版本安裝並執行

注意:第一步中檢查本地是否安裝,npx 會去 node_modules/.bin 以及 $PATH 下需尋找該 package 對應的指令是否被安裝。web

npx 的一些高級用法

下面是 npx 的一些高級用法,平常開發場景下不知道會不會用到這樣的定製方式。npm

  1. 只使用本地模塊,不拉取遠端,--no-install, 本地未安裝時報錯
  2. 忽略本地模塊,只拉取遠端最新的模塊,--ignore-existing
  3. 指定package, -p, 指定多個模塊的時候使用
  4. 多模塊指令執行,-c, 指定多個模塊執行時使用
  5. 執行一個遠程倉庫中的指令, 好比 github,(需包含 package.json 和入口腳本)

參考連接

  1. Yes, it’s npx, not npm — the difference explained
  2. npx 使用教程
相關文章
相關標籤/搜索