標籤:

npx: npm 5.2.0 內置的包執行器

npx: npm 5.2.0 內置的包執行器 概括自 Introducing npx: an npm package runner 一文,詳細內容請查看原文。

近日發布的 npm 5.2.0 版本中內置了伴生命令:npx,類似於 npm 簡化了項目開發中的依賴安裝與管理,該工具致力於提升開發者使用包提供的命令行的體驗。npx 允許我們使用本地安裝的命令行工具而不需要再定義 npm run-script,並且允許我們僅執行一次腳本而不需要再將其實際安裝到本地;同時 npx 還允許我們以不同的 node 版本來運行指定命令、允許我們互動式地開發 node 命令行工具以及便捷地安裝來自於 gist 的腳本。

在傳統的命令執行中,我們需要將工具添加到 package.json 的 scripts 配置中,這種方式還需要我們以 -- 方式傳遞參數;我們也可以使用 alias npmx=PATH=$(npm bin):$PATH, 或者 ./node_modules/.bin/mocha 方式來執行命令,雖然都能達到目標,但不免繁雜了許多。而 npx 允許我們以 npx mocha 這樣的方式直接運行本地安裝的 mocha 命令。

完整的 npx 命令提示如下:

從 npm 的可執行包執行命令 npx [選項] <命令>[@版本] [命令的參數]... npx [選項] [-p|--package <包>]... <命令> [命令的參數]... npx [選項] -c "<命令的字元串>" npx --shell-auto-fallback [命令行解釋器]選項: --package, -p 包安裝的路徑 [字元串] --cache npm 緩存路徑 [字元串] --install 如果有包缺失,跳過安裝 [布爾] [默認值: true] --userconfig 當前用戶的 npmrc 路徑 [字元串] --call, -c 像執行 `npm run-script` 一樣執行一個字元串 [字元串] --shell, -s 執行命令用到的解釋器,可選 [字元串] [默認值: false] --shell-auto-fallback 產生「找不到命令」的錯誤碼 [字元串] [可選值: "", "bash", "fish", "zsh"] --ignore-existing 忽略 $PATH 或工程里已有的可執行文件,這會強制使 npx 臨時安裝一次,並且使用其最新的版本 [布爾] --quiet, -q 隱藏 npx 的輸出,子命令不會受到影響 [布爾] --npm 為了執行內部操作的 npm 可執行文件 [字元串] [默認值: "/Users/apple/.nvm/versions/node/v8.1.3/lib/node_modules/npm/bin/npm-cli.js"] --version, -v 顯示版本號 [布爾] --help, -h 顯示幫助信息 [布爾]

npx 還允許我們單次執行命令而不需要安裝;在某些場景下有可能我們安裝了某個全局命令行工具之後一直忘了更新,導致以後使用的時候誤用了老版本。而使用 npx create-react-app my-cool-new-app 來執行 create-react-app 命令時,它會正常地幫我們創建 React 應用而不會實際安裝 create-react-app 命令行。

我們還可以使用類似於 $ npx -p node-bin@6 npm it 的格式來指定 Node 版本,或者使用 npx gist.github.com/zkat/4b 方式直接運行來自於 Gist 的腳本。

推薦閱讀:

npm的應用場景,剛需在何處?簡單的寫寫頁面是否需要npm包管理工具?
npm install 生成的package-lock.json是什麼文件?有什麼用?
為什麼 npm 要為每個項目單獨安裝一遍 node_modules?

TAG:Nodejs | npm |