dockerfmt - Pemformat Dockerfile
(github.com/reteps)- Alat pengganti modern untuk
dockfmt, yang secara otomatis merapikan Dockerfile dan menyeragamkan gaya kode - Secara internal menggunakan
buildkituntuk parsing sintaks Dockerfile, danmvdan/shuntuk memformat skrip shell di dalam perintahRUN - Berguna untuk menjaga konsistensi gaya kode serta dapat dimanfaatkan dalam code review dan lingkungan CI
Cara penggunaan
dockerfmt [Dockerfile] [flags]
dockerfmt [command]
- Perintah utama:
- completion: menghasilkan skrip auto-completion shell
- help: bantuan perintah
- version: menampilkan versi
- Flag utama:
- -c, --check: hanya memeriksa apakah sudah terformat
- -i, --indent: mengatur jumlah spasi indentasi (default 4)
- -n, --newline: menambahkan karakter baris baru di akhir file
- -s, --space-redirects: menambahkan spasi setelah operator redirect
- -w, --write: menimpa file asli dengan isi yang sudah diubah
Konfigurasi hook pre-commit
- Dapat diintegrasikan sebagai hook pre-commit
- Contoh file .pre-commit-config.yaml:
repos: - repo: https://github.com/reteps/dockerfmt rev: main hooks: - id: dockerfmt args: - --indent=4
Keterbatasan saat ini
- Titik koma (
;) atau pengelompokan perintah dalam perintah RUN belum didukung - Belum ada fitur pemenggalan baris otomatis untuk perintah JSON yang panjang
- Direktif
# escape=Xtidak didukung
Pengenalan fitur
-
Memanfaatkan mvdan/sh saat memformat perintah RUN
-
Dukungan heredoc dasar:
RUN <<EOF echo "hello" echo "world" EOF -
Mendukung komentar di dalam perintah RUN:
RUN echo "hello" \ # this is a comment && echo "world"RUN echo "hello" \ # this is a comment # that spans multiple lines && echo "world" -
Berupaya agar komentar tetap melekat dengan benar pada posisi yang diformat, tetapi ini sulit karena komentar dihapus pada tahap parser
Binding JS
- Binding JS disertakan di direktori js
- Cara penggunaannya dapat dilihat di js/README.md
Catatan lain
- Karena masih versi sebelum 1.0.0, penggunaan di lingkungan produksi belum direkomendasikan
1 komentar
Komentar Hacker News
RUN set -e ;\ export DEBIAN_FRONTEND=noninteractive ;\ etc etc&&. Saya penasaran kenapa bisa berbedaRUN foo && \ bar && \ :RUN set -e && \ foo ; \ bar ; \ :FROM foo ... FROM bar ...