Путь в make-файле не работает
Я управляю следующим makefile
который должен измениться dir
к конкретной цели и бежать туда npm install
Проблема в том, что я смог увидеть в выводе, что он распечатывает каталог (project/app) в нужный каталог, но установка (npm install) запускается на более высоком уровне (проект), почему?
Например
Когда я запускаю его, я вижу из cd $(DIR)/app/Users/i03432/go/src/project/app
Теперь вторая команда npm install
И я получил ошибку, что id не находит пакет json в пути проекта, который является правильным... это только в app
дорожка. Почему компакт-диск не работает?
это попытаться найти это здесь/Users/i03432/go/src/project/package.json
и вот это package.json
/Users/i03432/go/src/project/app/package.json
Makefile - это
module:
DIR=$(PWD)
@echo $(DIR)
cd $(DIR)/app
npm install
1 ответ
Каждая команда в правиле выполняется в одном процессе (под-оболочке). Следовательно, каждое изменение, которое вы выполняете в среде, связано с этой конкретной линией. Вы хотите изменить свой фрагмент на
cd $(PWD)/app && npm install
Эта команда выполняется в одном подпроцессе и должна давать желаемый результат. Обратите внимание, что эта проблема возникает для определения DIR
тоже, возможно, вы захотите переместить это на несколько строк вверх:
DIR = $(PWD)
module:
cd $(DIR) && npm install
Таким образом, вы имеете в виду переменную, которая make
обеспечивает, и вы не полагаетесь на подпроцессы здесь.