我有一个基于symfony 5和webpack encore的项目。
我在生产中运行了该项目的多个实例,具有不同的内容。我创建了一个docker映像,并在同一映像上运行许多容器,通过通常配置数据库名称的ENV变量设置内容。没有涉及.env.*
文件,只有基于RAM的ENV变量。
所有克隆的样式表都是相同的。但现在我想";调谐";SASS的基本颜色,所有调色板都来自ENV var.
在我的styles/app.scss
中,我现在有这样一行:
$primary: darken(#428bca, 20%);
- 如何使
#428bca
依赖于运行容器时设置的运行时docker环境变量 - 如何从.scs调用env-var值
- 更改后,再次只运行
yarn encore production
是否足够?还是在运行yarn encore
之前必须先运行php bin/console cache:clear
您可以使用sass加载程序的additionalData
选项来执行此操作。看见https://www.npmjs.com/package/sass-loader#additionaldata
您可以将sass加载程序选项传递给Encore.enableSassLoader()
,所以我想webpack.config.js中的以下内容应该从您的环境变量中动态创建一个$main-color
sass变量。
Encore.enableSassLoader({
additionalData: "$main-color: " + process.env.MAIN_COLOR + ";",
})
然后在您的SASS代码中,您应该能够执行$primary: darken($main-color, 20%);