สร้าง Change Log ง่าย ๆ ด้วย Conventional Commit
นอกจากการตั้งชื่อตัวแปรตอนเขียนโปรแกรมแล้ว สิ่งที่ยากพอ ๆ กันคือ การบอกว่ามีอะไรเปลี่ยนแปลงไปบ้าง จากโค้ดเวอร์ชั่นนึง ไปอีกเวอร์ชั่นนึง
บางคนอาจใช้วิธีที่เรียกว่า Semantic Versioning ที่บอกเป็น MAJOR, MINOR หรือ PATCH change ตามการเข้ากันได้ (compatibility) ของเวอร์ชั่นใหม่กับเวอร์ชั่นเก่า แต่จริง ๆ ใครจะจำได้หละว่าสามเดือนที่ผ่านมา มีอะไรเปลี่ยนแปลงไปบ้าง โดยเฉพาะยิ่งโปรเจ็คใหญ่ ๆ หรือที่เป็น Opensource ยิ่งตอบยากมาก
CHANGELOG.md จึงเป็นตัวช่วยในการช่วยตอบคำถาม ว่าเวอร์ชั่นที่จะ release ใหม่นี้ มีการเปลี่ยนแปลงอะไรไปบ้าง
ซึ่งมันก็คงจะดีถ้าเราไม่ต้องจำว่าเรา commit code อะไรไปบ้างในแต่ละ version แล้วก็เอาไปใส่ใน change log ด้วยมือ ซึ่งเป็นอะไรเหน็ดเหนื่อยและยากลำบากมากสำหรับ developer บางคนเช่นผม
แต่จริง ๆ แล้ว สิ่งที่เราสามารถเอามาสร้าง changelog ได้ง่าย ๆ เลย ก็คือ git history นี่แหละ แต่จะทำยังไงให้มันลื่นไหลเข้ากั๊น เข้ากัน กับ developer แบบเรา ๆ นี่แหละ ต้องทำยังไงบ้างล่ะ
Conventional Commits
อะไรคือ conventional commits? มันก็คือ รูปแบบการ commit code นั่นเองงงง ซึ่งเจ้าวิธีการนี้เองจะช่วยให้เราหยิบ commit history ไปสร้างเป็น change log ได้อย่างง่ายดาย
เรามาดูรูปแบบของเจ้าสิ่งนี้กันเลยดีกว่า
<type>[optional scope]: <description>
[optional body]
[optional footer]
หรือถ้าใครถนัด command line เก๋ๆ ก็ย่อมได้ คือ
git commit -a -m”<type>[optional scope]: <description>”
ประเภท หรือ type ของ commit มีหลายอย่างตั้งแต่
- feat — เป็นการบอกว่ามี feature ใหม่ใน commit นี้นะ (คล้ายๆกับ MINOR ของ semantic versioning)
- fix — แก้บัคนั่นแหละ (ประมาณ PATCH )
- BREAKING CHANGE — คือการเปลี่ยนแปลงครั้งใหญ่นั่นเอง สามารถใช้คู่กับ feature ก็ได้เช่น BREAKING CHANGE: feat: <description> (เทียบประมาณกับ MAJOR)
- doc — แก้ไขไฟล์เอกสาร เช่น README
- refactor — การแก้ไขโค้ดเพิ่มให้อ่านง่ายขึ้น หรือเขียนให้ได้ผลเหมือนเดิมแต่วิธีการที่เรียบง่ายขึ้น
scope ใส่เพื่อบอกขอบเขตว่าเรา commit code อะไรไป ควรใส่สั้นๆ สองสามคำ ถ้าได้หนึ่งคำได้ก็ยิ่งดี
ส่วน description เป็นรายละเอียดของ commit เพื่อใช้อธิบาย change
สร้าง Change Log ง่ายๆๆ
เครื่องมือที่จะเสนอนี้ ใช้ conventional commit ที่เราเสนอไปด้านบน หยิบมาสร้าง change log ให้เองเพียงแค่ปลายนิ้วสัมผัสส
นั่นก็คือ standard-version นั่นเองง
วิธีการ install ก็ง่ายๆ เช่นกัน เพียง ( npm install--save-dev standard-version
) จากนั้นก็เพิ่ม script เข้าไปในpackage.json
เป็นอันจบพิธี
หลังจากนี้ เราก็แค่ run script เพื่อรันคำสั่ง standard-version
, เราก็จะได้ทั้ง git tag และ change log สวยๆๆ อย่างอันนี้
ครั้งนี้ผมก็ขอลาไปก่อน หวังว่าโพสนี้จะเป็นประโยชน์ต่อหลายๆคนนะค้าบบบ