Я думаю, что основная проблема c в том, что вам нужно ../../node_modules/.bin/
в вашей переменной $PATH
, но точный каталог должен быть вычислен динамически.
На python земле вы можете выполнить скрипт .pythonstartup при source ./venv/bin/activate
. Javascript, однако, не требует явного шага активации.
Если мы имеем дело с чистым CLI, то вы можете создать функцию bash для динамического поиска:
function set-project-path() {
BASH_PATH=${BASH_PATH:-$PATH} # only set variable if unset
for DIR in . .. ../.. ../../.. ../../../.. ; do # set to required lookup depth
DIR=$DIR/node_modules/.bin
if [[ -d $DIR ]]; then
PATH=`pwd $DIR`:$BASH_PATH;
echo "set-project-path(): \$PATH += `pwd $DIR`";
break;
fi;
done;
}
function unset-project-path() {
PATH="${BASH_PATH:-$PATH}" # reset to $BASH_PATH if previously set
}
Для этого потребуется активация вручную путем ручного запуска:
set-project-path
Использование pwd
дает вам абсолютный путь, что означает, что вы можете перемещаться между каталогами внутри вашего проекта. Однако скрипт необходимо будет перезапускать каждый раз, когда вы переходите на другой проект.
Теоретически этот скрипт можно запустить в .bashrc
, но это предполагает, что bash запускается где-то внутри проекта дерево каталогов.
Если вы хотите по-настоящему поумнеть, вы можете попробовать внедрить этот скрипт в переменную $PS1
, которая вызывается перед каждым рендерингом командной строки.
Другой подход будет просто вставьте символическую ссылку tsc
или node_modules
в каждый подкаталог пакета, что является еще одним способом сделать скрипт видимым внутри вашего $PATH
, но без проблем с синхронизацией или файловым пространством.