คู่มือการตั้งค่า Node.js แบบแยกโปรเจกต์ด้วย ServBay (macOS)
ServBay คือสภาพแวดล้อมการพัฒนาเว็บบนเครื่องที่ออกแบบมาเพื่อเหล่านักพัฒนาโดยเฉพาะ มาพร้อมโซลูชันครบวงจรที่ผสานภาษาโปรแกรมยอดนิยม เช่น Node.js, ฐานข้อมูล และเว็บเซิร์ฟเวอร์ต่างๆ หนึ่งในจุดเด่นของ ServBay คือความสามารถในการรองรับและจัดการ Node.js หลายเวอร์ชันได้อย่างยืดหยุ่นโดยไม่ต้องพึ่ง nvm, fnm หรือ Containers สลับเวอร์ชันได้ง่ายแค่ปรับไฟล์คอนฟิก ง่ายต่อ workflow ป้องกันปัญหา environment ปนเปื้อนและเวอร์ชันชนกัน
บทความนี้จะอธิบายวิธีใช้ไฟล์ .servbay.config
ในการควบคุม Node.js แต่ละโปรเจกต์ระดับโปรเจกต์อย่างละเอียด
ทำไมต้องเลือก .servbay.config
ของ ServBay จัดการ Node.js เวอร์ชัน?
รูปแบบการจัดการ Node.js แบบเดิม เช่น nvm หรือการติดตั้งเอง อาจทำให้เกิดข้อจำกัดอยู่บ้าง เช่น:
- ปนเปื้อนและชนกันแบบ global: ติดตั้งหรือเปลี่ยนเวอร์ชันที่ระดับ Global ทำให้ Dependency แต่ละโปรเจกต์อาจขัดแย้งกัน
- เสียเวลา compile หรือติดตั้ง: การเปลี่ยนเวอร์ชันหรือสลับสถาปัตยกรรม แพคเกจอาจต้องถูกคอมไพล์ใหม่ ใช้เวลามากและวุ่นวาย
- ใช้งาน Docker เกินความจำเป็น: เพียงแค่ต้องการ Node.js เวอร์ชันใดเวอร์ชันหนึ่ง การให้รันด้วย Docker ทั้งคอนเทนเนอร์ถือว่าหนักเกินไป
ServBay ติดตั้งล่วงหน้า Node.js เวอร์ชันหลัก v12-v23 ครบทุกเวอร์ชัน คุณสามารถดูและจัดการได้ในเมนู “ซอฟต์แวร์แพคเกจ” และใช้ไฟล์ .servbay.config
เพื่อให้ได้โซลูชันที่เหนือกว่า:
- สลับเวอร์ชันทันที: เวอร์ชันถูกติดตั้งไว้แล้ว เปลี่ยนใช้ได้ทันที
- แยกโปรเจกต์อย่างแท้จริง: ตั้งค่าได้เฉพาะแต่ละโปรเจกต์ ไม่มีผลกับโฟลเดอร์อื่น
- ไม่มีปนเปื้อนระบบ: ไม่แก้ไข environment ของระบบ ช่วยให้ macOS คุณสะอาด
- ทำงานร่วมกับ ServBay: ใช้งานร่วมกับซอฟต์แวร์อื่นๆ ใน ServBay เช่น PHP, ฐานข้อมูล, เว็บเซิร์ฟเวอร์ ฯลฯ
ข้อควรมีเบื้องต้น
ก่อนเริ่มต้น กรุณาตรวจสอบว่า:
- คุณได้ติดตั้งและรัน ServBay บน macOS เรียบร้อยแล้ว
- คุณได้เปิดใช้ Node.js เวอร์ชันที่ต้องการในเมนู Packages ของ ServBay แล้ว
- คุณมีโปรเจกต์ที่ต้องการตั้งค่า Node.js เวอร์ชันแยก
หลักการทำงาน
เมื่อเปิดเทอร์มินัลที่บูรณาการกับ ServBay จะมีการตรวจสอบโฟลเดอร์งานปัจจุบัน หากคุณรัน cd
ไปที่ใด ServBay จะค้นหาไฟล์ .servbay.config
ในโฟลเดอร์นั้นหรือต้นทางขึ้นไป เมื่อพบจะอ่านการตั้งค่าและปรับ Environment เช่น PATH ของเทอร์มินัลให้แนบกับเวอร์ชัน Node.js ที่กำหนดในไฟล์ .servbay.config
กลไกนี้จะช่วยให้เทอร์มินัลในแต่ละโปรเจกต์ใช้ Node.js เวอร์ชันที่แตกต่างโดยอัตโนมัติ โดยคุณไม่ต้องสลับเอง
ขั้นตอนการตั้งค่า
ตั้งค่า Node.js แยกโปรเจกต์ง่ายมาก มีแค่ 2 ขั้นตอน:
ขั้นตอนที่ 1: สร้างและแก้ไขไฟล์ .servbay.config
ไปที่โฟลเดอร์รากของโปรเจกต์ (ปกติอยู่ที่เดียวกับ package.json
) สร้างไฟล์ใหม่ชื่อ .servbay.config
เปิดแก้ไขด้วย Text Editor ที่คุณถนัด แล้วใส่เนื้อหาดังนี้:
bash
# ระบุเลขเวอร์ชันหลักของ Node.js สำหรับโปรเจกต์
# ServBay จะเลือกเวอร์ชันล่าสุดของ main version ที่ติดตั้งไว้ให้ใช้อัตโนมัติ
NODE_VERSION=20
# ไม่บังคับ: กำหนด registry ของ npm หรือ pnpm เพื่อเร่งความเร็วการติดตั้งแพคเกจ
# หากคุณอยู่ในประเทศไทย/เอเชีย อาจเลือก registry ท้องถิ่นเพื่อความเร็ว
YARN_CONFIG_REGISTRY=https://npmreg.proxy.ustclug.org/
NPM_CONFIG_REGISTRY=https://registry.npmmirror.com
# ไม่บังคับ: กำหนดโฟลเดอร์แคชของ npm หรือ pnpm
# แนะนำให้ใช้โฟลเดอร์ชั่วคราวของ ServBay เพื่อลดการใช้เนื้อที่ในระบบหรือ user home
NPM_CONFIG_CACHE=/Applications/ServBay/tmp/npm/cache
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
รายละเอียดแต่ละตัวแปร:
NODE_VERSION
: จำเป็น ใส่เลขเวอร์ชันหลักของ Node.js เช่น20
คือให้ใช้ Node.js 20.x* ล่าสุดที่ติดตั้งใน ServBay (ต้อง Enable แล้ว)YARN_CONFIG_REGISTRY
/NPM_CONFIG_REGISTRY
: ไม่บังคับ ตั้งค่า registry สำหรับ Yarn หรือ npm ช่วยให้ลงแพคเกจรวดเร็วโดยเฉพาะกับเน็ตเวิร์คที่ช้าหรือโดนบล็อกNPM_CONFIG_CACHE
: ไม่บังคับ ชี้โฟลเดอร์แคชของ npm/pnpm ไปที่/Applications/ServBay/tmp/npm/cache
จะได้จัดการแคชในจุดเดียว ไม่รกระบบ
เซฟไฟล์ .servbay.config
แล้วปิด editor ได้เลย
ขั้นตอนที่ 2: ตรวจสอบเวอร์ชันในเทอร์มินัลของ ServBay
เปิดหน้าแรกของแอป ServBay
คลิกปุ่ม “เทอร์มินัล” (Terminal) เพื่อเปิด Terminal ที่ผนวกรวมกับ ServBay
ในเทอร์มินัล รันคำสั่ง
cd
ไปยังโฟลเดอร์โปรเจกต์ของคุณbashcd /Applications/ServBay/www/your-project-name
1(เปลี่ยน
/Applications/ServBay/www/your-project-name
ให้เป็น path จริงของคุณ)รันคำสั่ง
node -v
เพื่อเช็คเวอร์ชัน Node.js ที่ใช้งานอยู่bashnode -v
1คำตอบที่ได้ควรเป็นเวอร์ชันเดียวกับที่คุณตั้งค่าไว้ใน
.servbay.config
(เช่นv20.x.x
)คุณสามารถเช็คเวอร์ชัน npm ด้วย
npm -v
(หรือpnpm -v
,yarn -v
) เพื่อดูว่า registry และ node version ตรงกับที่ตั้งค่าหรือไม่
หลังจากนี้ ในทุกคำสั่งเกี่ยวกับ Node.js, npm, pnpm หรือ yarn ที่รันในโฟลเดอร์โปรเจกต์นั้นจะใช้เวอร์ชันและคอนฟิกตามที่ตั้งไว้ใน .servbay.config
ทันที
ตัวอย่างการใช้งาน
ตัวอย่างนี้จะแสดงให้เห็นว่า .servbay.config
สลับ Node.js ให้ต่างกันในแต่ละโปรเจกต์โดยอัตโนมัติได้อย่างไร
สมมติคุณมีสองโปรเจกต์: project-a
ใช้ Node.js v18, project-b
ใช้ Node.js v20
สร้างโฟลเดอร์โปรเจกต์และไฟล์คอนฟิก:
bash# สร้างโฟลเดอร์ตัวอย่างในโฟลเดอร์ www ของ ServBay mkdir /Applications/ServBay/www/project-a mkdir /Applications/ServBay/www/project-b # สร้าง .servbay.config ให้ project-a ใช้ Node.js v18 echo "NODE_VERSION=18" > /Applications/ServBay/www/project-a/.servbay.config # สร้าง .servbay.config ให้ project-b ใช้ Node.js v20 echo "NODE_VERSION=20" > /Applications/ServBay/www/project-b/.servbay.config
1
2
3
4
5
6
7
8
9เปิดเทอร์มินัลของ ServBay และสลับตรวจสอบเวอร์ชัน
เปิดเทอร์มินัล แล้วรันดังนี้:
bash# เข้า project-a cd /Applications/ServBay/www/project-a # ตรวจสอบ Node.js เวอร์ชัน node -v # ควรเห็น v18.x.x # เข้า project-b cd ../project-b # ตรวจสอบ Node.js เวอร์ชัน node -v # ควรเห็น v20.x.x # ย้อนกลับไป project-a cd ../project-a # ตรวจสอบ Node.js เวอร์ชัน node -v # ควรเห็น v18.x.x
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
จะเห็นว่า ServBay จะโหลดและใช้ค่าตัวแปร NODE_VERSION
ใน .servbay.config
อัตโนมัติตามโฟลเดอร์ที่คุณอยู่ ทำให้สลับ Node.js เวอร์ชันระหว่างโปรเจกต์ได้อย่างไร้รอยต่อ
ด้านล่างเป็นภาพอธิบาย ตอนสลับ DK ระหว่างสองโปรเจกต์ Node.js Version จะเปลี่ยนตาม .servbay.config
อัตโนมัติ (ภาพนี้เป็นตัวอย่าง หน้าตาจริงอาจแตกต่างบ้าง):
ข้อควรระวัง
- ไฟล์
.servbay.config
ต้องอยู่ในโปรเจกต์ หรือโฟลเดอร์แม่เท่านั้น ServBay จะค้นหาขึ้นไปทีละชั้นจากตำแหน่งปัจจุบัน แล้วใช้ไฟล์แรกที่พบ (ใกล้กับไฟล์ที่คุณอยู่ที่สุด) - ควรใช้งานในเทอร์มินัลที่ฝังมากับ ServBay หรือหากรันจากเทอร์มินัลนอก ต้องตั้งค่าตัวแปร Environment ของ ServBay ให้ถูกต้องก่อน
- เลขเวอร์ชันที่ใส่ใน
NODE_VERSION
ต้องตรงกับเวอร์ชันที่เคยติดตั้งและ Enable ใน ServBay หากไม่ตรง อาจ fallback ไปเวอร์ชันดีฟอลต์หรือใช้งาน Node.js ไม่ได้ - ค่าคอนฟิกใน
.servbay.config
จะมีผลเฉพาะกับ Terminal session ที่กำลังใช้งาน ไม่กระทบกับ Environment ระบบหรือ Terminal ที่ไม่ได้ใช้งานผ่าน ServBay
คำถามที่พบบ่อย (FAQ)
Q: ถ้าโฟลเดอร์โปรเจกต์ไม่มีไฟล์ .servbay.config
จะเกิดอะไรขึ้น?
A: ถ้า ServBay หาไฟล์ .servbay.config
ไม่เจอในโฟลเดอร์นั้นหรือโฟลเดอร์แม่เลย ServBay จะ revert ไปใช้ node เวอร์ชัน default หรือ global config ที่ตั้งไว้ในแอป
Q: จะดูได้อย่างไรว่า ServBay รองรับ Node.js เวอร์ชันอะไรบ้าง?
A: เปิดแอป ServBay ไปที่เมนู “ซอฟต์แวร์แพคเกจ” (Packages) ทางซ้ายมือ จะเห็นรายชื่อซอฟต์แวร์ทั้งหมดรวมถึง Node.js หลายเวอร์ชัน สามารถติ๊ก Enable/Disable ได้ทันที
Q: ค่าต่างๆ ใน .servbay.config
จะมีผลกับระบบส่วนอื่นหรือไม่?
A: ไม่มีผลกับระบบหลัก! ค่าที่ตั้งไว้ใน .servbay.config
จะมีผลเฉพาะเทอร์มินัล session หรือ process ที่ใช้ environment ของ ServBay โดยไม่เปลี่ยนแปลง environment ของระบบ macOS หรือโปรแกรมอื่น จุดนี้เองที่ช่วยให้ ServBay แยก environment ของแต่ละโปรเจกต์ได้อย่างแท้จริง
Q: .servbay.config
นอกจากตั้งค่าพวก Node.js แล้ว ใช้งาน config อื่นได้ไหม?
A: ได้! ไฟล์ .servbay.config
คือระบบการตั้งค่าสำหรับ environment variables ระดับโปรเจกต์ของ ServBay โดยสามารถเพิ่ม environment variables อื่นได้ตามต้องการ ตัวเลือกใหม่ๆ อาจเพิ่มขึ้นในอนาคต แต่โดยหลักแล้ว จุดประสงค์หลักคือการควบคุม environment ของโปรเจกต์แต่ละอัน
สรุป
ด้วยไฟล์ .servbay.config
ของ ServBay คุณสามารถกำหนดและจัดการ Node.js เวอร์ชันของแต่ละโปรเจกต์ในเครื่องได้อย่างง่ายดายและมีประสิทธิภาพ วิธีนี้เบากว่า สะดวกกว่า nvm หรือ container แถมปลอดภัยจากปัญหาเวอร์ชันปนเปื้อน เหมาะกับงานพัฒนาแบบมืออาชีพใน ServBay อย่าลืมทดลองใช้ .servbay.config
ในโปรเจกต์ของคุณ แล้วจะรู้ว่าการเปลี่ยน Node.js เวอร์ชัน ไม่ใช่เรื่องยากอีกต่อไป!