我想改变这个Makefile:
SHELL := /bin/bash
PATH := node_modules/.bin:$(PATH)
boot:
@supervisor \
--harmony \
--watch etc,lib \
--extensions js,json \
--no-restart-on error \
lib
test:
NODE_ENV=test mocha \
--harmony \
--reporter spec \
test
clean:
@rm -rf node_modules
.PHONY: test clean
至:
SHELL := /bin/bash
PATH := node_modules/.bin:$(PATH)
boot:
@supervisor \
--harmony \
--watch etc,lib \
--extensions js,json \
--no-restart-on error \
lib
test: NODE_ENV=test
test:
mocha \
--harmony \
--reporter spec \
test
clean:
@rm -rf node_modules
.PHONY: test clean
不幸的是,第二个没有工作(节点过程中仍然使用默认NODE_ENV
运行。
我错过了什么?
使变量没有导出到进程的环境使所调用...默认。然而,你可以用make的export
迫使他们这样做。更改:
test: NODE_ENV = test
为此:
test: export NODE_ENV = test
(假设你有GNU化妆的足够现代版)。
作为MadScientist pointed out,您可以导出单个变量有:
export MY_VAR = foo # Available for all targets
或特定目标出口变量(target-specific variables):
my-target: export MY_VAR_1 = foo
my-target: export MY_VAR_2 = bar
my-target: export MY_VAR_3 = baz
my-target: dependency_1 dependency_2
echo do something
您也可以指定.EXPORT_ALL_VARIABLES
目标,你猜对了-EXPORT所有的东西!!!!
.EXPORT_ALL_VARIABLES:
MY_VAR_1 = foo
MY_VAR_2 = bar
MY_VAR_3 = baz
test:
@echo $$MY_VAR_1 $$MY_VAR_2 $$MY_VAR_3
我只需要在环境变量本地调用我的测试命令,这里有一个例子在bash shell设置多个环境瓦尔,并在逃跑的make
美元符号。
SHELL := /bin/bash
.PHONY: test tests
test tests:
PATH=./node_modules/.bin/:$$PATH \
JSCOVERAGE=1 \
nodeunit tests/