在一个Makefile中包含多个.env文件

约翰·基利

关于在Makefile中加载环境变量,大多数答案都指向这样做:

include .env.dev
export $(shell sed 's/=.*//' .env.dev)

.env.dev包含我的环境变量的文件在哪里,例如:

FOO=bar
SQL_DATABASE=mydb_dev

但是,我有两个.env文件,一个用于生产,一个用于开发。似乎不可能将此include命令放在make命令或变量内。我理想的情况是Makefile

include config/.env.django.dev
export $(shell sed 's/=.*//' config/.env.django.dev)

serve-dev:
    - npm run dev

build-prod:
    - npm run build

在运行时,make serve-dev将首先从文件中加载变量.env.dev,但是在运行时,make build-prod将首先从文件中加载变量.env.prod许多变量具有相同的键但值不同,因此无法将两者一起加载。

什么是这里的好方法?

黑猫

我看到两个选择:

  • 将变量加载代码放在包装在的配方中$(eval ...)

    缺点是,如果出于某种原因需要在配方中输入变量,则无法在输入配方之前对其进行访问。

    serve-dev:
        $(eval include include .env.dev)
        $(eval export $(shell sed 's/=.*//' .env.dev))
    
  • 裹在类似可变加载代码ifneq ($(filter serve-dev,$(MAKECMDGOALS)),)... endif

    这将使变量可在任何地方访问,仅在使用命令行标志指定目标时才起作用,而不是将其构建为其他目标的依赖项。

    ifneq ($(filter serve-dev,$(MAKECMDGOALS)),)
    include config/.env.django.dev
    export $(shell sed 's/=.*//' config/.env.django.dev)
    endif
    

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在一个 JS 文件中包含多个 javascript 文件

Java:一个文件中包含多个类声明

一个Java文件中包含多个枚举类

htaccess-一个文件中包含多个规则

Makefile | 对头文件中包含的另一个头文件的依赖

您如何在一个PHP包含文件中包含多个页面内容?

为什么在我的 Makefile 中包含一个文件会改变我的 Makefile-directory 变量?

如何在另一个 phtml 文件中包含多个 html 文件?

在Makefile中加载.env文件

如何在包含多个点的文本文件中搜索一个点?

如何在Linux上从包含多个分区的映像文件中挂载一个分区?

将包含多个文件的Inputstream放入一个ZipEntry中

.rb文件包含多个类,而每个文件都包含一个类的多个.rb文件

如何在makefile中创建一个包含文本文件名和时间戳的变量?

一个区域文件可以包含多个域吗?

一个项目包含多个package.json文件

Makefile:从另一个列表中删除匹配多个截短文件名的文件列表

是否有一个代码预处理工具可以将多个用户定义的包含项(不包含任何系统)合并到一个文件中?

在一个makefile中编译C ++和C文件

Excel文件中包含多个模块的运行速度是否比一个模块中包含多个子程序的运行速度慢?

无法从ts文件中的env文件读取

在HTML文件中包含一个PHP文件

我需要一个 Makefile.am 规则来更新包含文件

我们可以在一个主App.js文件中包含一个或多个自动关闭组件吗?

如何在一个Docker撰写文件中包含Elastic Search(具有多个节点)和Kibana?

如何将多个文件(包含一列的20,000个文件)粘贴到一个文件中?

当包含多个文件,返回一个数组时,我将第一个包含的数组合并到第二个包含中,为什么?

将一个.hgignore文件包含在另一个文件中的方法

在另一个苗条文件中包含一个苗条文件