在 makefile 中使用 nvm 切换节点环境
Using nvm in a makefile to switch node environment
我正在尝试使用 Makefile 构建 Node 项目。作为第一步,我想使用 NVM 设置节点版本。我为此尝试了以下代码:
.PHONY: viz-ui
viz-ui:
. ${HOME}/.nvm/nvm.sh && nvm use 14.17.0
node -v
我在 运行 make 之前设置了 nvm use 16
来测试输出。在 运行 make viz-ui
之后,我得到以下输出:
. /home/vijayth2/.nvm/nvm.sh && nvm use 14.17.0
Now using node v14.17.0 (npm v6.14.13)
node -v
v16.14.2
简而言之,节点切换到 14.17.0 没有反映在 makefile 中,我该如何解决?或者我对此的理解有什么差距?
食谱的每一行都是 运行 brand-new shell。因此,当你到达 node -v
行时,它在一个新的 shell 中执行,它对设置不同节点版本的前一个一无所知(这是在单独的 shell 和 long走了)。
你基本上有两个选择:
- 重写配方,以便在一次 shell 调用中全部 运行,例如:
.PHONY: viz-ui
viz-ui:
. ${HOME}/.nvm/nvm.sh && nvm use 14.17.0; \
node -v
或
- 利用
.ONESHELL
指令,以便所有配方在单个 shell. 中执行
我正在尝试使用 Makefile 构建 Node 项目。作为第一步,我想使用 NVM 设置节点版本。我为此尝试了以下代码:
.PHONY: viz-ui
viz-ui:
. ${HOME}/.nvm/nvm.sh && nvm use 14.17.0
node -v
我在 运行 make 之前设置了 nvm use 16
来测试输出。在 运行 make viz-ui
之后,我得到以下输出:
. /home/vijayth2/.nvm/nvm.sh && nvm use 14.17.0
Now using node v14.17.0 (npm v6.14.13)
node -v
v16.14.2
简而言之,节点切换到 14.17.0 没有反映在 makefile 中,我该如何解决?或者我对此的理解有什么差距?
食谱的每一行都是 运行 brand-new shell。因此,当你到达 node -v
行时,它在一个新的 shell 中执行,它对设置不同节点版本的前一个一无所知(这是在单独的 shell 和 long走了)。
你基本上有两个选择:
- 重写配方,以便在一次 shell 调用中全部 运行,例如:
.PHONY: viz-ui
viz-ui:
. ${HOME}/.nvm/nvm.sh && nvm use 14.17.0; \
node -v
或
- 利用
.ONESHELL
指令,以便所有配方在单个 shell. 中执行