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
.
# 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.
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
.
API_KEY=xxxxxxxxxxxxxxxxxxxx
Anda dapat merujuk ke variabel lingkungan yang didefinisikan dalam .env
di .envrc
dengan menulis dotenv
di .envrc
.
dotenv
Jika nama file bukan .env
, jalur dapat ditentukan sebagai berikut.
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.
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