Traffine I/O

Bahasa Indonesia

2023-02-17

direnv

Apa itu direnv

direnv adalah alat yang memungkinkan Anda untuk mengatur lingkungan yang berbeda untuk direktori yang berbeda. direnv memungkinkan Anda untuk secara otomatis mengatur variabel lingkungan yang ditentukan, alias, perintah, dan fungsi shell untuk direktori setiap kali Anda menavigasinya. Hal ini memudahkan untuk berpindah antar lingkungan sesuai kebutuhan untuk proyek yang berbeda.

direnv menggunakan file .envrc untuk mengatur lingkungan sebuah direktori. File .envrc dibaca oleh direnv ketika dipindahkan dengan perintah cd, dan mengatur lingkungan untuk direktori tersebut.

Berikut ini adalah contoh file .envrc.

.envrc
# environment variable
export MY_VAR=example_value
export PATH=$PWD/bin:$PATH

# alias
alias ll='ls -l'

# shell function
function my_function() {
  echo "Hello, World!"
}

Contoh ini mendefinisikan sebuah variabel lingkungan yang disebut MY_VAR dan menambahkan $PWD/bin ke $PATH. Contoh ini juga mendefinisikan alias ll dan fungsi shell my_function. Dengan cara ini, Anda dapat dengan mudah mengatur lingkungan yang berbeda untuk proyek yang berbeda.

Bagaimana cara menggunakan direnv

Berikut ini adalah cara menggunakan direnv.

Instal

Pada Mac, Anda dapat dengan mudah menginstal direnv dengan perintah brew.

$ brew install direnv

Setelah menginstal direnv, tambahkan hook ke shell Anda; untuk bash, jalankan perintah berikut.

$ echo 'eval "$(direnv hook bash)"' >> ~/.bashrc
$ source ~/.bashrc

allow

Baca berkas .envrc dengan perintah direnv allow.

Sebagai contoh, pada direktori /my-project, buatlah berkas .envrc seperti ini.

.envrc
export TEST=test

Jalankan perintah berikut ini.

$ direnv allow

direnv: loading ~/my-project/.envrc
direnv: export +TEST

Di bawah direktori /my-project, variabel lingkungan TEST akan diatur.

$ echo $TEST

test

Perpindahan dari direktori /my-project akan membongkar direnv.

$ cd ..

direnv: unloading

Anda dapat melihat bahwa variabel lingkungan TEST tidak diset.

$ echo $TEST

Perintah-perintah lain

direnv memiliki beberapa perintah selain perintah allow. Lihat perintah direnv --help untuk informasi lebih lanjut.

$ direnv --help

direnv v2.32.2
Usage: direnv COMMAND [...ARGS]

Available commands
------------------
allow [PATH_TO_RC]:
permit [PATH_TO_RC]:
grant [PATH_TO_RC]:
  Grants direnv permission to load the given .envrc or .env file.
block [PATH_TO_RC]:
deny [PATH_TO_RC]:
revoke [PATH_TO_RC]:
  Revokes the authorization of a given .envrc or .env file.
edit [PATH_TO_RC]:
  Opens PATH_TO_RC or the current .envrc or .env into an $EDITOR and allow
  the file to be loaded afterwards.
exec DIR COMMAND [...ARGS]:
  Executes a command after loading the first .envrc or .env found in DIR
fetchurl <url> [<integrity-hash>]:
  Fetches a given URL into direnv's CAS
help [SHOW_PRIVATE]:
  shows this help
hook SHELL:
  Used to setup the shell hook
prune:
  removes old allowed files
reload:
  triggers an env reload
status:
  prints some debug status information
stdlib:
  Displays the stdlib available in the .envrc execution context
version [VERSION_AT_LEAST]:
  prints the version or checks that direnv is older than VERSION_AT_LEAST.

Gunakan .env dan .envrc secara bersamaan

docker-compose dan dotenv menggunakan berkas .env untuk mengatur variabel lingkungan.

Jika Anda ingin menggunakan .env dan .envrc secara bersamaan, Anda dapat menghindari manajemen ganda variabel lingkungan dengan cara berikut.

Definisi variabel lingkungan ditulis dalam .env.

.env
API_KEY=xxxxxxxxxxxxxxxxxxxx

Anda dapat merujuk ke variabel lingkungan yang didefinisikan dalam .env di .envrc dengan menulis dotenv di .envrc.

.envrc
dotenv

Jika nama file bukan .env, jalur dapat ditentukan sebagai berikut.

.envrc
dotenv ./.env.development

Gunakan venv dan .envrc secara bersamaan

Dengan menggunakan direnv dengan venv Python, Anda dapat mengaktifkan lingkungan virtual ketika Anda berpindah ke direktori proyek dan secara otomatis menonaktifkannya ketika Anda keluar dari direktori tersebut.

Pertama, buatlah lingkungan virtual Python.

$ cd my-project
$ python -m venv venv

Buat sebuah .envrc di bawah direktori proyek sebagai berikut.

.envrc
source venv/bin/activate

export PYTHONPATH=${APP_HOME}
export HOGE='HOGE'
export FUGA='FUGA'

Arahkan ke direktori target untuk mengaktifkan lingkungan virtual.

$ cd my-project

direnv: loading ~/Projects/my-project/.envrc
direnv: export +BAR +FOO ~PYTHONPATH

(venv)$

Setelah keluar dari direktori, lingkungan virtual dinonaktifkan.

(venv)$ cd ..

direnv: unloading

$

Referensi

https://github.com/direnv/direnv

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!