小编典典

如何在 Makefile 中设置子进程的环境变量

all

我想改变这个 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.

我错过了什么?


阅读 64

收藏
2022-07-16

共1个答案

小编典典

默认情况下,Make 变量不会导出到进程 make 调用的环境中。但是,您可以使用 make’sexport强制他们这样做。改变:

test: NODE_ENV = test

对此:

test: export NODE_ENV = test

(假设您有足够现代的 GNU make >= 3.77 版本)。

2022-07-16