根据部署加载不同的CSS

时间:2019-03-26 17:12:03

标签: css reactjs webpack sass web-deployment

我们目前有两个项目的共享后端和前端。项目B本质上只是项目A的一个子集。它具有所有相同的功能,除了我们限制的一些功能。

使用节点中的dotenv模块,我可以限制某些路由的加载,因此后端全部由环境变量处理。但是,前端具有不同的原色方案(蓝色而不是紫色),徽标也不同。

我将如何根据环境/部署来加载这两个差异?我尝试将所有常见的CSS放在一个文件中,然后从其中导入。我猜想前端的主要区别是projA和projB是不同的主题。我可以使用有条件的反应渲染功能隐藏/显示的某些组件。

main.scss:

@import _projA.scss
@import _projB.scss

然后在我的webpack配置中,通过npm构建脚本传递环境变量,并排除_projA或projB.scss。这仍然会加载两者,我猜是因为主scss文件同时导入了这两者。

编辑: https://medium.com/@trekinbami/using-environment-variables-in-react-6b0a99d83cf5

1 个答案:

答案 0 :(得分:1)

自定义环境变量

  

注意:此功能在react-scripts@0.2.3及更高版本中可用。

这些环境变量将在process.env文件中为您定义,并根据您的环境(npm启动,npm运行构建,npm测试)将根据需要呈现。

只需要一次导入,React将为您处理其余的操作,创建您的环境。文件并像这样使用它:

@import REACT_APP_STYLE

.env.development.local文件中npm start的自定义环境变量示例:

REACT_APP_STYLES = _projA.scss

More information about custom environment variables.