Путь в 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 обеспечивает, и вы не полагаетесь на подпроцессы здесь.

Другие вопросы по тегам