แก้ไขทีละบล็อก
การแก้ไขทำงานแบบเดียวกับการแก้คำผิดบน Wikipedia: คุณแก้ย่อหน้าที่กำลังมองอยู่ ไม่ใช่ textarea ยักษ์ที่อุ้มทั้งหน้าไว้ ในโหมดแก้ไข (npm run wiki) ลงชื่อเข้าใช้ เอาเมาส์ชี้ที่บล็อกไหนก็ได้บนบันทึกเรื่องไหนก็ได้ — รวมถึงบล็อกนี้ด้วย — แล้วคลิก ✎
§1.1วงจรการแก้ไข
บล็อกที่เรนเดอร์แล้วจะหลบไป และตัวแก้ไข CodeMirror กางออกมาแทนที่ พร้อมซอร์ส Markdown ของบล็อกนั้น พรีวิวสดเรนเดอร์อยู่ข้างใต้ตามที่คุณพิมพ์ — ผ่านไวยากรณ์เฉพาะของเอนจิน บวกปลั๊กอินที่ไซต์ส่งให้ inkbrush({ markdown }) ซึ่งเป็นกติกาชุดเดียวกับที่ไปป์ไลน์ของหน้าเว็บติดตั้งไว้ พรีวิวกับหน้าเว็บจึงไม่มีวันเห็นไม่ตรงกัน ⌘/Ctrl + Enter เซฟ ส่วน Esc ยกเลิก
frontmatter ก็เป็นบล็อกเช่นกัน: แถบหมวดหมู่ที่หัวของทุกบันทึกในนี้พก ✎ ของตัวเอง คลิกแล้วจะเปิด YAML ของบันทึก — เปลี่ยนสถานะหรือวันที่สักค่า แล้วส่วนหัวจะเรนเดอร์ใหม่จาก frontmatter ที่อัปเดตแล้ว
§1.2ตาข่ายนิรภัยสองผืน
ล็อกแบบมองโลกในแง่ดี (optimistic locking) แต่ละบล็อกพกแฮชของซอร์สที่มันถูกตัดออกมา ถ้ามีคนอื่นแก้ไฟล์ตัดหน้าคุณไปแล้ว การเซฟจะถูกปฏิเสธเป็นข้อขัดแย้ง แทนที่จะเขียนทับงานของเขาเงียบ ๆ — รีเฟรชแล้วลองใหม่
ด่านบิลด์ ก่อนที่อะไรจะถูกเขียนลงดิสก์ ไฟล์ทั้งไฟล์ต้องวิ่งผ่านไปป์ไลน์ Markdown ของไซต์ — ไวยากรณ์เฉพาะ ตัวตรวจเนื้อหา ปลั๊กอินของไซต์เอง และคอมไพเลอร์ MDX สำหรับไฟล์ .mdx การเซฟที่จะทำให้หน้าพัง — ** ที่จับคู่ไม่ได้ แท็กคอมโพเนนต์ที่ไม่ได้ปิด นิพจน์ผิดรูป — จะถูกปฏิเสธพร้อมข้อผิดพลาดระบุชัด และไฟล์บนดิสก์ไม่ถูกแตะต้อง รายการที่ตัวตรวจปัดตกฉบับเต็มสาธิตอยู่ท้ายหน้ารวมทุกองค์ประกอบ
§1.3การเซฟไปลงที่ไหน
การเซฟเขียนไฟล์ Markdown และเมื่อเปิด autocommit ก็กลายเป็น git commit ที่ลงชื่อผู้ใช้ที่ลงชื่อเข้าใช้เป็นผู้เขียน ไม่มีฐานข้อมูลอยู่ที่ไหนเลย: ไฟล์เนื้อหาคือแหล่งความจริงหนึ่งเดียว และ git คือประวัติถาวร ส่วนปูมละเอียดรายบล็อกที่ขับเคลื่อนประวัติการแก้ไขขี่อยู่บนนั้นอีกชั้นหนึ่ง
ตัวไวยากรณ์เฉพาะเอง — GFM บวกกติกาตัวเน้นที่เป็นมิตรกับอักษร CJK และตัวตรวจเนื้อหาที่ปฏิเสธ Markdown ที่บิดรูปเงียบ ๆ — ถูกนิยามครั้งเดียวในเอนจิน แล้วแชร์กันระหว่างตัวเรนเดอร์หน้าเว็บ พรีวิวของตัวแก้ไขตัวนี้ และ CLI check-content (การตรวจสอบห้าด่าน) หนึ่งไวยากรณ์ ถูกใช้ในสามที่ ไม่มีวันเคลื่อนออกจากกัน