當你使用npm將一個套件安裝到node_modules資料夾中,或者全域安裝時,你該如何在你的Node程式碼中使用它呢?

假設你使用下列命令安裝了一個常用的JavaScript實用程式庫lodash

npm install lodash

這會將套件安裝到本地的node_modules資料夾中。

要使用它,在你的程式碼中只需要用require將它引入即可:

const _ = require('lodash')

那如果你安裝的套件是可執行的呢?

在這種情況下,它會將可執行檔放在node_modules/.bin/資料夾中。

一個簡單的示例是cowsay,你可以在 cowsay 找到它。

cowsay提供了一個命令列程式,可以讓一頭牛說出你指定的話(還有其他動物的選項 🦊)。

當你使用npm install cowsay安裝這個套件時,它會將自己和一些相依性安裝到node_modules資料夾中:

node_modules資料夾內容

裡面還有一個隱藏的 .bin 資料夾,其中包含指向cowsay可執行檔的符號連結:

可執行檔

那要如何執行這些可執行檔呢?

你當然可以輸入 ./node_modules/.bin/cowsay 來執行它,這是可行的,但是npx是一個更好的選擇。它是自從npm 5.2版本開始包含的工具,你只需要執行:

npx cowsay

npx 將能找到套件的位置,並執行它。

牛說了些什麼