針對node_modules目錄下.bin下的可執行文件,如果是項目安裝而非全局安裝,使用時會非常麻煩,npx幫助解決這個問題
npm 從5.2版開始,增加了 npx 命令
如果早起版本不能使用可以自己手動安裝
$ npm install -g npx
比如安裝了sequelize-cli 管理數據庫
使用的時候需要這樣子調用
./node_modules/.bin/sequelize-cli db:seed:all
有了npx 之后可以這樣子就可以了
npx sequelize-cli db:seed:all
npx 的原理很簡單,就是運行的時候,會到node_modules/.bin
路徑和環境變量$PATH
里面,檢查命令是否存在。
由於 npx 會檢查環境變量$PATH
,所以系統命令也可以調用。
# 等同於 ls
$ npx ls
我們把模塊安裝在內部的目的就是為了避免全局安裝模塊,升級不方便,各個項目使用不同版本的原因,全局安裝本身就不合理
當前項目如果不錯在的模塊通過npx執行會幫你下載到一個臨時目錄,使用以后會自動刪除。
通過這一特性,使用不同版本的 node
$ npx node@0.12.8 index.js