18 poin oleh GN⁺ 2024-06-26 | 2 komentar | Bagikan ke WhatsApp
  • Setelah commit pertama dotenv pada Juli 2013, selama 11 tahun ia tumbuh menjadi salah satu paket yang paling banyak diandalkan di seluruh dunia
  • Mencapai posisi yang setara dengan perangkat lunak esensial seperti TypeScript dan ESLint

Masalah pada dotenv

  • Risiko kebocoran file .env
  • Sulit mengelola banyak environment
  • Kurangnya konsistensi lintas platform

Solusi untuk masalah ini: dotenvx

  • Bekerja sama di semua platform
  • Mendukung banyak environment
  • Enkripsi file variabel environment

Dapat dijalankan di mana saja

  • Bekerja dengan cara yang sama di semua bahasa, framework, dan platform
  • Dapat menyuntikkan variabel environment saat runtime dengan dotenvx run -- your-cmd
  • Mesin parsing .env, ekspansi variabel, penggantian perintah, dan lainnya bekerja dengan cara yang sama
  • Dapat diinstal dengan berbagai cara seperti npm, brew, curl, docker, windows, dan lainnya
    $ echo "HELLO=World" > .env  
    $ echo "console.log('Hello ' + process.env.HELLO)" > index.js  
    $ node index.js  # tanpa dotenvx  
    Hello undefined  
    $ dotenvx run -- node index.js  # menggunakan dotenvx  
    Hello World  
    

Dukungan multi-environment

  • Buat file .env.production lalu muat dengan opsi -f
  • Dapat mengonfigurasi banyak environment dengan menggunakan beberapa flag -f
    $ echo "HELLO=production" > .env.production  
    $ dotenvx run -f .env.production -- node index.js  
    [dotenvx][info] loading env (1) from .env.production  
    Hello production  
    

Enkripsi

  • Menambahkan enkripsi ke file .env dengan perintah dotenvx encrypt
  • Menggunakan metode enkripsi kunci publik
  • Meski file .env bocor, file tersebut tidak dapat didekripsi tanpa DOTENV_PRIVATE_KEY
  • Pada proyek open source, konfigurasi baru dapat ditambahkan tanpa mendekripsi rahasia sebelumnya
    $ dotenvx encrypt  
    ✔ encrypted (.env)  
    

Rilis versi 1.0.0

  • Mengumumkan rilis dotenvx versi 1.0.0
  • Banyak developer tampaknya akan dapat memanfaatkannya sebagai alat pengelolaan konfigurasi generasi berikutnya

Pendapat GN⁺

  • dotenvx menyediakan keamanan dan kemudahan sekaligus
  • Berguna bagi developer karena memudahkan pengelolaan berbagai environment
  • Fitur enkripsi sangat berguna terutama untuk proyek yang sensitif terhadap keamanan
  • Fitur dotenvx memberikan konsistensi di berbagai bahasa dan platform sehingga meningkatkan efisiensi pengembangan

2 komentar

 
yangeok 2024-07-05

Di dalam program, tidak perlu memisahkan mode produk dan mode pengembangan; ternyata bisa langsung dideklarasikan di skrip eksekusi ya.

 
GN⁺ 2024-06-26
Komentar Hacker News
  • Sebaiknya jangan menyampaikan rahasia melalui variabel lingkungan. Variabel lingkungan bisa bocor dengan mudah. Sebagai gantinya, lebih baik membaca rahasia dari vault atau file system di dalam proses.

  • Alasan menggunakan file .env adalah karena sederhana dan jelas. Jika ingin memakai metode konfigurasi yang lebih aman dan kuat, orang harus membaca dokumentasinya.

  • Mulai menggunakan Mise untuk pekerjaan. Belum terlalu banyak dipakai, tetapi terlihat menjanjikan. Ia menangani tugas seperti inisialisasi DB pengujian lokal, menjalankan skrip linting, serta juga mengelola variabel lingkungan dan virtual environment.

  • Karena kebocoran rahasia adalah masalah besar, bijak untuk mengenkripsi rahasia saat menggunakan dotenvx. Alat yang tidak mendukung rahasia tanpa enkripsi akan lebih aman.

  • Mirip dengan Sops, tetapi secara bawaan tidak memiliki fitur terenkripsi. Sops mudah terintegrasi dengan AWS dan solusi manajemen kunci yang sudah ada, dan berdasarkan pemakaian di dua tempat kerja selama 5 tahun, hasilnya sangat baik.

  • Mengenkripsi dan melakukan commit terhadap rahasia itu nyaman, tetapi jika akses ke kunci enkripsi didapatkan, semua rahasia bisa terekspos. Menetapkannya di pengelola rahasia cloud dan tidak menyentuhnya lagi lebih aman.

  • Variabel lingkungan dibagikan terlalu luas dan file bergantung pada izin lokal. Diperlukan cara baru untuk mengirim rahasia antarproses. Misalnya, menyampaikan rahasia melalui Unix socket dengan cara yang hanya bisa dibaca sekali.

  • Perlu dokumentasi tentang cara memasukkan file .env ke vault dengan benar. Jika vault dilindungi kata sandi, muncul masalah bahwa kata sandi vault harus ditulis dalam teks biasa agar aplikasi bisa membacanya.

  • Ingin mengelola semua variabel lingkungan dalam satu file dengan format TOML. Dengan begitu, pembaruan, perbandingan, dan berbagi menjadi lebih mudah. Namun, sulit menjaga konsistensi nama environment. Ini sering terjadi karena keputusan cepat atau kebutuhan mendesak, dan orang jadi takut memperbaikinya.