首页 > 其他分享 >react项目在不暴露配置文件的情况下配置环境变量

react项目在不暴露配置文件的情况下配置环境变量

时间:2023-05-23 12:44:14浏览次数:64  
标签:配置文件 react start env dotenv 环境变量

react项目在不暴露配置文件的情况下修改打包配置需要用到 react-app-rewired和customize-cra 包对打包配置文件进行修改。

 

添加自定义环境变量有两种方法:

方法1:使用dotenv-cli

1、运行 yarn global add dotenv-cli 全局安装 dotenv-cli

2、在根目录下添加.env.pre文件,写入变量

REACT_APP_MOCK='true' 

如果是测试环境,则新建 .env.development.pre 文件而不是 .env.pre 文件

注意:变量名称已 REACT_APP_开头,不然业务代码里面没有这个变量

 

3、修改运行命令

- "start": "react-app-rewired start",
+ "start:mock": "dotenv -e .env.development.pre react-app-rewired start",

4、运行 npm run start:mock 命令,则业务代码中就有 process.env.REACT_APP_MOCK 变量了。

 

 

以上方法是不同命令可以配置不同的环境变量,如果配置对应环境的独有环境变量可以新建对应环境的文件,如:

生产环境新建 .env.production 文件,在里面添加环境变量

测试环境新建 .env.development 文件,在里面添加环境变量

所有环境都生效可以配置 .env 文件,在里面添加环境变量

 

---------------------------------------------------

以下是无效方法

 

网上找的其他方法无效,如:https://blog.csdn.net/xiliuhu/article/details/123641929

// config-override.js
 
const webpack = require('webpack')
 
const {
  override,
  addWebpackPlugin,
} = require('customize-cra')
 
module.exports = override(
  addWebpackPlugin(
    new webpack.DefinePlugin({
      "process.env.VERSION": JSON.stringify(333)
    })
  )
)

尝试过,在业务代码中打印 process.env 对象,没有 VERSION 属性。

 

标签:配置文件,react,start,env,dotenv,环境变量
From: https://www.cnblogs.com/ayseeing/p/17423732.html

相关文章

  • Yii2-app-advanced的配置文件优先级
    Yii2高级模板中支持多套环境配置,并且有优先级重写覆盖默认有两种dev和prod,在应用目录environments 下Yii2中的config配置文件(main.php和params.php)具有极大的灵活配置,结合配置文件的加载顺序1、使用约定 -应用目录下有config/main.php和params.php是一个全职全集......
  • 前端框架中加入外部config可配置文件,根据不同的运行、编译环境,加载不同的配置文件
    需求:我们的乾坤vue框架,需要集成给第三方,menu由他们处理(包括菜单权限),我们只负责提供一个去除menu和头部的main即可;这里需要可配置,不能把我们的menu弄丢了。实现方式:1、在src同级目录新建public/plugins/config.js因为是基于webpack打包,会自动过滤public下的文件,复制到打包后的......
  • SpringBoot配置文件
    概述初始化SpringBoot项目时,在resources目录下有一个默认的全局配置文件application.properties。SpringBoot通过配置文件来修改SpringBoot自动配置的默认值SpringBoot支持两种格式的配置文件application.yml和application.propertiesapplication.properties写法appl......
  • Mac下存储环境变量相关文件
    配置bash首先,说明下MacOS系统的环境变量主要由下面几个文件和文件夹所决定,并且他们的加载顺序如下:/etc/profile/etc/paths/etc/bashrc~/.bash_profile 或 ~/.bashrc ~/.bash_login其中,/etc/profile, /etc/paths, /etc/bashrc 是系统级别配置文件,系统启动就会加载......
  • React笔记-Hooks(九)(非常全面)
    React笔记-Hooks(九)Hooks概念ReactHooks的意思是组件尽量写成纯函数如果需要外部功能和副作用就用钩子把外部代码"钩"进来函数组件和类组件区别函数组件没有状态(state)类组件有函数组件没有生命周期类组件有(挂载-更新-销毁)函数组件没有this类组件有函数组......
  • 扩展可能性:发挥React Native与小程序集成的优势
    ReactNative是一个强大的前端跨端框架,可以帮助开发者高效地构建移动应用程序,并充分利用跨平台开发的优势,同时提供接近原生应用程序的性能和用户体验。它具有许多技术上的优势:跨平台开发:使用ReactNative,您可以使用相同的代码库构建同时运行在iOS和Android平台上的应用程序。......
  • [React Typescript] Overriding and Removing Component Props
    UsingOmitimport{ComponentProps}from'react';import{Equal,Expect}from'../helpers/type-utils';exportconstInput=(props:Omit<ComponentProps<'input'>,'onChange'>&{onChange:......
  • [React Typescript] Useful React Prop Type Examples
    RelevantforcomponentsthatacceptotherReactcomponentsasprops.exportdeclareinterfaceAppProps{children?:React.ReactNode;//best,acceptseverythingReactcanrenderchildrenElement:JSX.Element;//AsingleReactelementstyle?:React.C......
  • 【Swift开发】混合开发-React Native集成到原生iOS项目
    一、场景描述针对目前项目需求,部分功能需要动态热部署,因此考虑使用ReactNative。下面有个Demo介绍原生iOS项目是如何与ReactNative集成的。先贴下ReactNative中文网是官方教程:ReactNative嵌入到现有原生应用。对老项目来说,官方推荐使用第三方包管理器CoCoaPods来自动集成,但是考......
  • Flask相关配置参数,加载配置文件
    Flask相关配置参数,加载配置文件#导入Flask类fromflaskimportFlask#Flask函数接收一个参数__name__,它会指向程序所在的包app=Flask(__name__)#装饰器的作用是将路由映射到视图函数[email protected]('/')defindex():return'HelloWorld'#Flask应用程......