А не спеть ли мне песню? А не спеть.
Хотел написать длинный пост с интригующим названием "Методология использования фреймворка сценариев Gulp в веб-разработке", но на пол-пути, как обычно, махнул рукой "да кому это надо... кому надо - тот сам все знает, а кому не надо - тому и так не надо".
В общем, вместо этого, быстро и кратко расскажу про autoenv.
В некоторых проектах возникает необходимость использовать переменные окружения.
Какие нибудь FTP_USER и FTP_PWD. Например для того, чтобы не светить в конфигах эти данные.
В том-же Gulp-е, делается:
var user = process.env.FTP_USER;
var password = process.env.FTP_PWD;
и можно больше не беспокоиться, что пароль случайно где нибудь засветится.
Неудобство этого метода в том, что эти переменные приходится инициализировать каждую сессию терминала.
Писать export FTP_USER=myftpuser;export FTP_PASSWORD=myftppass .
Или делать отдельный скрипт, которые эти переменные инициализирует.
А если проектов много - делать это каждый раз еще и для текущего проекта.
Но для zsh (и кажется для bash и fish) есть плагин, который называется autoenv.
Принцип его действия крайне прост - при входе в директорию, он вызывает файл .env, находящийся в корне этой директории.
Прямой аналог действия cd dir; source ./env , только автоматически.
Если в .env прописать те самые
export FTP_USER=foo
export FTP_PWD=bar
То они будут подхвачены автоматом, после cd .
И это ну просто очень, очень удобно при работе с большим количеством проектов.
Ставится плаг (в случае с zsh) просто:
$ git clone
https://github.com/Tarrasch/zsh-autoenv ~/.dotfiles/lib/zsh-autoenv
И добавляется к массиву плагинов в ~/.zshrc