iT邦幫忙

2026 iThome 鐵人賽

DAY 22
0

今天要來講 NPM 與套件管理
Node.js 專案需要別人寫好的功能 → 用 npm 安裝套件 → 記錄在 package.json → 實際程式透過 require() 使用

1.看懂 package.json
它可以理解成 Node.js 專案的「說明書+套件清單」
常見會看到:

{
  "name": "upload-api",
  "version": "1.0.0",
  "scripts": {
    "start": "node server.js",
    "test": "node test.js"
  },
  "dependencies": {
    "dotenv": "^17.0.0",
    "formidable": "^3.5.0"
  }
}
  • scripts:可以下哪些 npm 指令
  • dependencies:正式環境會用到的套件
  • devDependencies:開發階段才需要的套件

所以執行 npm start
其實就是去找:"start": "node server.js"

2.知道 node_modules 怎麼被 require 找到

假設寫:
const formidable = require('formidable');

Node 看到沒有寫:
require('./formidable');

它就知道你不是要找自己專案裡的檔案,而是要找「套件」。

概念上會往 node_modules 資料夾去找。

目前資料夾
  ↓
node_modules/formidable

所以:

package.json
    ↓ npm install
node_modules
    ↓
require('formidable')

3.理解 package-lock.json

假設:"formidable": "^3.5.0"

^3.5.0 不一定代表大家最後都裝到完全一樣的細版本。

所以 npm 會產生:package-lock.json

記住這次實際安裝了哪些版本。

可以先記成:

package.json
= 我想要什麼

package-lock.json
= 我實際裝了什麼

因此一般專案裡 node_modules 是不會被 commit 上去的(工程師最基礎的認知)
然後下載專案在透過 npm install 的方式把套件安裝回來哩

package.json ✅ commit
package-lock.json ✅ commit
node_modules ❌ 不 commit

4.用 dotenv 讀環境變數

有些東西不希望直接寫死:

const uploadDir = './uploads';
const maxSize = 10;

這樣就可以放在 .env

例如:

// .env
UPLOAD_DIR=./uploads
MAX_FILE_SIZE_MB=10

然後直接做引入使用

require('dotenv').config();

console.log(process.env.UPLOAD_DIR);
console.log(process.env.MAX_FILE_SIZE_MB);

心智模型:

.env
  ↓
dotenv
  ↓
process.env
  ↓
Node.js 程式使用

上一篇
Day 21 - Node.js 內建模組概念 -4
下一篇
Day 23 - NPM 與套件管理 -2
系列文
在AI 時代的碰撞下~當前端工程師開始碰上後端又到了雲服務的旅程 共 24 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言