• Время чтения ~1 мин
  • 03.08.2023

При разработке на Laravel мы часто вводим команды, такие как ./vendor/bin/pest запуск команд для конкретного проекта.

Нам это не нужно!

Чтобы помочь здесь, мы можем обновить нашу переменную Mac (или Linux). $PATH

Что ?$PATH

Переменная $PATH задает каталоги, которые ваша система ищет при поиске команд для выполнения.

Например, мы можем набратьwhich <cmd>, чтобы найти путь к любой заданной команде:

$ which git
/usr/local/bin/git

Моя система знала, что нужно найти git /usr/local/bin, потому что /usr/local/bin в моем $PATH

!Вы можете echo указать свой путь прямо сейчас:

# Output the whole path
echo $PATH

# For human-readability, split out each
# directory into a new line:
echo "$PATH" | tr ':' '\n'

Относительные каталоги в PATH

Мы можем отредактировать нашу $PATH переменную, чтобы добавить в нее любые каталоги, которые мы хотим!

Одним из чрезвычайно удобных приемов является установка относительных каталогов в вашей $PATH переменной.

Два примера: добавление ./vendor/bin и :Здесь

# In your ~/.zshrc, ~/.bashrc or, ~/.bash_profile or similar
# Each directory is separated by a colon
PATH=./vendor/bin:./node_modules/.bin:$PATH

мы добавили ./node_modules/.binдва наших новых пути к существующей $PATH переменной. Теперь, независимо от того, в какое приложение Laravel мы попали, мы можем запустить и знать, что мы запускаем , чтобы запустить ./vendor/bin/phpunit pest (и то же самое для любой заданной команды Node в ./node_modules/.bin).

phpunit ./vendor/bin/pestcdМы также можем установить текущий каталог . в нашем $PATH (если он еще не установлен - это может быть):

# In your ~/.zshrc, ~/.bashrc or, ~/.bash_profile or similar
# Each directory is separated by a colon
# Here we also set the current directory in our PATH
PATH=.:./vendor/bin:./node_modules/.bin:$PATH

Таким образом, мы можем ввести artisan вместо ./artisan или php artisan.

Это настройки, которые у меня есть в Chipper CI, чтобы пользователи могли запускать pest или phpunit не беспокоиться о том, где существует команда в их средах CI.

Порядок примечаний

также имеет значение в $PATH. При поиске команды в первую очередь выполняется поиск в более ранних каталогах. Система будет использовать первую найденную команду - это означает, что вы можете переопределить системную команду, поместив ее в каталог ранее в $PATH. Вот почему мы добавляем и ./node_modules/.bin в$PATH, а не добавляем ./vendor/bin его.

Вы можете найти все местоположения такой команды:

$ which -a git

git is /usr/local/bin/git
git is /usr/bin/git
git is /usr/local/bin/git
git is /usr/bin/git

Наконец, во всех случаях здесь команды должны иметь исполняемые разрешения для такой работы. Об этом следует помнить при создании собственных команд, таких как пользовательский сценарий bash.

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

Про мене

Professional Fullstack Developer with extensive experience in website and desktop application development. Proficient in a wide range of tools and technologies, including Bootstrap, Tailwind, HTML5, CSS3, PUG, JavaScript, Alpine.js, jQuery, PHP, MODX, and Node.js. Skilled in website development using Symfony, MODX, and Laravel. Experience: Contributed to the development and translation of MODX3 i...

Об авторе CrazyBoy49z
WORK EXPERIENCE
Контакты
Ukraine, Lutsk
+380979856297