Node file structure#
การจัดโครงสร้างไฟล์และ directory ของ node ให้เป็นไปตาม best practices และมาตรฐาน จะช่วยให้ node ของคุณดูแลรักษาง่ายขึ้น และสะดวกถ้ามีคนอื่นต้องมาทำงานกับ code ของคุณ
โครงสร้างไฟล์และ directory ของ node จะขึ้นอยู่กับ:
- ความซับซ้อนของ node ของคุณ
- ว่าคุณใช้ node versioning หรือไม่
- จำนวน node ที่คุณรวมไว้ใน npm package
Required files and directories#
node ของคุณต้องมีไฟล์และ directory เหล่านี้:
- ไฟล์
package.json
ที่ root ของโปรเจกต์ อันนี้จำเป็นสำหรับทุก npm module - directory
nodes
ที่เก็บ code ของ node:- directory นี้ต้องมี base file โดยใช้รูปแบบ
<node-name>.node.ts
เช่นMyNode.node.ts
- n8n แนะนำให้มี codex file ซึ่งเก็บ metadata ของ node โดยชื่อไฟล์ codex ต้องตรงกับชื่อไฟล์ base เช่น ถ้า base file ชื่อ
MyNode.node.ts
codex file ก็ต้องชื่อMyNode.node.json
- directory
nodes
สามารถมีไฟล์และ subdirectory อื่นๆ ได้ เช่น directory สำหรับ version ต่างๆ หรือแยก code node ออกเป็นหลายไฟล์เพื่อให้โครงสร้าง modular มากขึ้น
- directory นี้ต้องมี base file โดยใช้รูปแบบ
- directory
credentials
สำหรับเก็บ code credentials ของคุณ โดย code นี้จะอยู่ใน credentials file ไฟล์เดียว โดยใช้ชื่อไฟล์<node-name>.credentials.ts
เช่นMyNode.credentials.ts
Modular structure#
คุณสามารถเลือกได้ว่าจะใส่ฟังก์ชันทั้งหมดของ node ไว้ในไฟล์เดียว หรือจะแยกออกเป็น base file และ module อื่นๆ แล้วให้ base file import เข้ามา ถ้า node ของคุณไม่ได้เรียบง่ายมาก n8n แนะนำให้แยกออกเป็นหลายไฟล์จะดีกว่า
รูปแบบพื้นฐานคือแยก operation ออกไปดูตัวอย่างได้ที่ HttpBin starter node
ถ้า node ของคุณซับซ้อนมากขึ้น n8n แนะนำให้ใช้โครงสร้าง directory แบบนี้ ดูตัวอย่างได้ที่ Airtable node หรือ Microsoft Outlook node
actions
: directory ที่เก็บ sub-directory สำหรับแต่ละ resource- แต่ละ sub-directory ควรมีไฟล์สองประเภท:
- ไฟล์ index ที่มี resource description (ชื่อไฟล์เป็น
<resourceName>.resource.ts
หรือindex.ts
) - ไฟล์ operation
<operationName>.operation.ts
โดยแต่ละไฟล์ควร export สองอย่างคือdescription
ของ operation และฟังก์ชันexecute
methods
: directory เสริมสำหรับฟังก์ชัน dynamic parameterstransport
: directory ที่เก็บ implementation สำหรับการสื่อสารกับ service
Versioning#
ถ้า node ของคุณมีมากกว่าหนึ่งเวอร์ชัน และคุณใช้ full versioning โครงสร้างไฟล์จะซับซ้อนขึ้น คุณต้องมี directory สำหรับแต่ละเวอร์ชัน พร้อม base file ที่กำหนด default version ดูรายละเอียดเพิ่มเติมได้ที่ Node versioning
Decide how many nodes to include in a package#
เวลาสร้าง node มีสองแบบให้เลือก:
- หนึ่ง node ต่อหนึ่ง npm package
- หลาย node ใน npm package เดียว
n8n รองรับทั้งสองแบบ ถ้าคุณรวมหลาย node ใน package เดียว แต่ละ node ควรมี directory ของตัวเองใน nodes
A best-practice example for programmatic nodes#
Airtable node ที่มากับ n8n ใช้โครงสร้าง modular และ versioning ตาม pattern ที่แนะนำ