dockerfmt - ตัวจัดรูปแบบ Dockerfile
(github.com/reteps)- เป็นเครื่องมือทางเลือกสมัยใหม่ที่มาแทน
dockfmtเดิม โดยช่วยจัดระเบียบ Dockerfile และปรับสไตล์โค้ดให้อัตโนมัติ - ภายในใช้
buildkitสำหรับวิเคราะห์ไวยากรณ์ Dockerfile และใช้mvdan/shสำหรับจัดรูปแบบสคริปต์เชลล์ภายในคำสั่งRUN - ช่วยรักษาสไตล์โค้ดให้สม่ำเสมอ และมีประโยชน์ในการรีวิวโค้ดและในสภาพแวดล้อม CI
วิธีใช้งาน
dockerfmt [Dockerfile] [flags]
dockerfmt [command]
- คำสั่งหลัก:
- completion: สร้างสคริปต์ shell auto-completion
- help: ดูวิธีใช้คำสั่ง
- version: แสดงเวอร์ชัน
- แฟล็กหลัก:
- -c, --check: ตรวจสอบอย่างเดียวว่ามีการจัดรูปแบบหรือไม่
- -i, --indent: กำหนดจำนวนช่องว่างสำหรับการย่อหน้า (ค่าเริ่มต้น 4)
- -n, --newline: เพิ่มอักขระขึ้นบรรทัดใหม่ที่ท้ายไฟล์
- -s, --space-redirects: เพิ่มช่องว่างหลังตัวดำเนินการ redirect
- -w, --write: เขียนทับไฟล์ต้นฉบับด้วยเนื้อหาที่เปลี่ยนแปลง
การตั้งค่า Pre-commit hook
- สามารถรวมเข้ากับ pre-commit hook ได้
- ตัวอย่างไฟล์ .pre-commit-config.yaml:
repos: - repo: https://github.com/reteps/dockerfmt rev: main hooks: - id: dockerfmt args: - --indent=4
ข้อจำกัดในปัจจุบัน
- ในคำสั่ง RUN ยังไม่รองรับเครื่องหมายอัฒภาค (;) หรือการจัดกลุ่มคำสั่ง
- ยังไม่มีฟังก์ชันตัดบรรทัดอัตโนมัติสำหรับคำสั่ง JSON ที่ยาว
- ไม่รองรับ directive
# escape=X
แนะนำฟีเจอร์
-
ใช้ mvdan/sh ในการจัดรูปแบบคำสั่ง RUN
-
รองรับ heredoc พื้นฐาน:
RUN <<EOF echo "hello" echo "world" EOF -
รองรับคอมเมนต์ภายในคำสั่ง RUN:
RUN echo "hello" \ # this is a comment && echo "world"RUN echo "hello" \ # this is a comment # that spans multiple lines && echo "world" -
พยายามจัดการให้คอมเมนต์แนบอยู่ในตำแหน่งที่ถูกต้องหลังการจัดรูปแบบ แต่ทำได้ยากเนื่องจากคอมเมนต์ถูกลบออกไปในขั้นตอน parser
JS binding
- JS binding รวมอยู่ในไดเรกทอรี js
- วิธีใช้งานดูได้ที่ js/README.md
หมายเหตุอื่น ๆ
- ยังเป็นเวอร์ชันก่อน 1.0.0 จึงยังไม่แนะนำให้ใช้ในโปรดักชัน
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
RUN set -e ;\ export DEBIAN_FRONTEND=noninteractive ;\ etc etc&&เลยสงสัยว่าทำไมถึงต่างกันRUN foo && \ bar && \ :RUN set -e && \ foo ; \ bar ; \ :FROM foo ... FROM bar ...