2012-05-10 2 views
2

Это мой Makefile:Почему NODE_ENV не задан моим make-файлом?

start: 
    make start-prod 

start-dev: 
    @NODE_ENV=development 
    make start-bare 

start-prod: 
    @NODE_ENV=production 
    make start-bare 

start-bare: 
    node src/bootstrap 

test: 
    @NODE_ENV=test 
    mocha --ignore-leaks $(shell find ./test -name \*test.js) 

.PHONY: start start-dev start-prod start-bare test 

Когда я бегу make start-devprocess.env.NODE_ENV тогда равна undefined. Почему это так?

ответ

9

Внутри мишени makefile каждая строка представляет собой отдельный экземпляр оболочки, поэтому настройка переменной окружения в одном не будет передана другому. Вместо того, чтобы сделать что-то вроде:

start-prod: 
    @NODE_ENV=production \ 
     make start-bare 

или

start-prod: 
    @NODE_ENV=production make start-bare 
+0

ли отдельные экземпляры оболочки работать параллельно? – Tom

+0

Том, нет, они не работают параллельно. Однако, если у вас есть правило, которое зависит от нескольких других правил, и вы используете переключатель '-j' /' --jobs', то эти _will_ работают параллельно. – TooTallNate

+0

Вы должны упомянуть, что вы можете выполнить цель в той же оболочке isntance с 'source' –

Смежные вопросы