Node versioning#
n8n รองรับการทำ node versioning คุณสามารถเปลี่ยนแปลง node ที่มีอยู่โดยไม่ทำให้พฤติกรรมเดิมเสียหาย ด้วยการเพิ่มเวอร์ชันใหม่
โปรดระวังวิธีที่ n8n เลือกโหลด node version:
- ถ้าผู้ใช้สร้างและบันทึก workflow โดยใช้เวอร์ชัน 1 n8n จะยังคงใช้เวอร์ชัน 1 ใน workflow นั้น แม้ว่าคุณจะสร้างและ publish เวอร์ชัน 2 ของ node แล้วก็ตาม
- เมื่อผู้ใช้สร้าง workflow ใหม่และเลือก node n8n จะโหลด node เวอร์ชันล่าสุดเสมอ
Versioning type restricted by node style
ถ้าคุณสร้าง node แบบ declarative จะไม่สามารถใช้ full versioning ได้
Light versioning#
ใช้ได้กับ node ทุกประเภท
node หนึ่งตัวสามารถมีได้หลายเวอร์ชันในไฟล์เดียวกัน เหมาะสำหรับการอัปเดตเล็กๆ โดยไม่ต้อง duplicate code วิธีใช้:
- เปลี่ยนพารามิเตอร์
version
หลักให้เป็น array แล้วใส่หมายเลขเวอร์ชันทั้งหมด รวมถึงเวอร์ชันที่มีอยู่ - คุณสามารถเข้าถึงพารามิเตอร์ version ด้วย
@version
ในdisplayOptions
ของ object ใดๆ (เพื่อควบคุมว่า object ไหนจะแสดงกับเวอร์ชันไหน) หรือ query version จากฟังก์ชันด้วยconst nodeVersion = this.getNode().typeVersion;
ตัวอย่างเช่น ถ้าคุณต้องการเพิ่ม versioning ให้กับ NasaPics node จาก Declarative node tutorial แล้วตั้งค่า resource ให้แสดงเฉพาะในเวอร์ชัน 2 ในไฟล์ NasaPics.node.ts
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
Full versioning#
ใช้ไม่ได้กับ declarative-style nodes
ตัวอย่างดูได้ที่ Mattermost node
สรุป full versioning:
- base node file ควร extend
NodeVersionedType
แทนที่จะเป็นINodeType
- base node file ควรมี description ที่รวม
defaultVersion
(ปกติเป็นเวอร์ชันล่าสุด) ข้อมูล metadata อื่นๆ เช่น name และ list ของเวอร์ชัน ไม่ควรมีฟังก์ชัน node - n8n แนะนำให้ตั้งชื่อโฟลเดอร์เวอร์ชันเป็น
v1
,v2
เป็นต้น