如何使用 npm link 進行 node module 測試

  1. 如何避免 node module 重複下載
  2. 如何使用 npm link 來進行 node module 的測試
  3. 什麼是 npm
  4. 什麼是 node module
  5. 什麼是 npm link

如何避免 node module 重複下載

要避免 node module 在每個專案都下載一份的方法就是用 npm link {套件名稱} 來安裝套件,而不要用 npm install {套件名稱},只是說那在 git clone 下來一個 Node.js 的專案之後有沒有一個指令可以完成所有的 npm link 我就不知道了,如果有知道怎麼做的朋友歡迎留言。

如何使用 npm link 來進行 npm module 的測試

其實就是在套件資料夾下輸入指令 npm link 把套件裝到全域上,然後再到使用套件的專案資料夾下輸入 npm link {套件名稱} 去連結,這樣就能正常使用了。

什麼是 npm

npm 是 Node.js 的套件管理工具,負責幫你下載專案當中用到的第三方套件(node module)。假設你想要建立一個新的 Node.js 專案,你在一個名為 npm_test 空資料夾下輸入 npm init 後猛按 enter 後,你會獲得 package.json 內容如下:

什麼是 node module

node module 就是包裝成模組化、設計好重複利用的套件。

如何安裝套件

在有了 package.json 之後,你可以在當中加入 dependencies 來記載你會使用到的第三方套件,像這樣:

  • node_modules 資料夾
  • package-lock.json

如何安裝套件在全域

除了將模組安裝在專案資料夾的 node_modules 資料夾下(本地安裝)之外,你也可以使用 npm install bottender -g 將 Bottender 套件安裝在你安裝 Node.js 的資料夾下(全域安裝),然後再使用 npm link 將專案的本地資料夾連結到全域資料夾。

如何寫套件

以上講的是如何使用別人寫好的 node module,但如果要自己做一個呢?請參考:如何做出一個好的 NodeJS 模組?

什麼是 npm link

npm link 有兩個用法:

  • npm link:將全域對應的模組資料夾連接到目前專案資料夾
  • npm link {套件名稱}:將目前專案資料夾的 node_modules/{套件名稱} 連結到全域對應的模組資料夾

npm link 的使用

npm link 指令會將目前資料夾下的 package.json 當中所記載的 name 作為套件名稱,在 Node.js 安裝資料夾下建立一個捷徑,從全域對應的模組資料夾連結到當前資料夾。

在已經全域安裝的情況下使用 npm link 會怎樣?

若是已經有全域安裝過 Bottender 的情況下,對 Bottender 專案資料夾輸入指令 npm link 會導致全域安裝的內容消失,改用捷徑取代。

在已經使用 npm link 的情況下使用全域安裝會怎樣?

若是已經有全域安裝過 Bottender 的情況下,輸入指令 npm install bottender -g 會導致連結的捷徑消失,改用全域安裝的內容取代。

取消 npm link 的方法

只要輸入 npm unlink 就可以將全域安裝路徑的捷徑移除。

npm link {套件名稱} 的使用

npm link {套件名稱} 其中的 {套件名稱} 代表任意的套件名稱,比方說 npm link bottender 這個指令的功能是安裝 Bottender,但是使用全域安裝的內容,實際上你執行 npm link bottender 之後會看到以下的訊息:

在還沒有全域安裝的情況下執行 npm link bottender 會怎樣?

npm link bottender 會檢查全域安裝是否存在,如果不存在的話就會執行全域安裝後,再建立捷徑。

覺得寫得不錯的話歡迎分享哦~

--

--

在追求真理的道路上

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store