脚手架(create-react-app)没有eject情况下,使用react-scripts的时候,动态设置环境变量...

 在实际开发中,例如:有时候打包发布时,需要手动更新版本,比如修改package.json中的version,但是如果有时候忘了修改,那么又得build一次;

如果能动态设置多好,webpack下可以在配置文件中运行一段node.js代码处理这种情况。

如果我们用脚手架搭建的并且没有eject, 如何执行一段node.js代码并把执行的代码设置到环境变量中呢?(react-scripts情况下

我们看到react-scripts文档中有这一段,截图如下

 

但是这个是需要手动创建一个.env的文件,手动修改.env文件, 如果想满足我们动态设置环境变量,好像是不行的。因为每次都要修改.env里面的内容,这和修改package.json没有区别了。

 

怎么解决呢?

既然官方文档已经帮我们提供了读取文件设置环境变量的方法。那我们为什么不实现一个动态创建一个.env的文件,并且在这文件中写入想要的环境变量呢。

想到了一个方法,那么就看看怎么实现了:

(1)怎么创建.env文件呢

新建一个env.config.js文件,并在该文件中写下这段代码:

const fs = require('fs');

/**
 * 根据 当前时间组装版本号,”年月日时“的形式
 * @returns {string}
 */
function getCurrentVersion() {
  const date = new Date();
  const year = date.getFullYear();
  const month = date.getMonth() + 1;
  const day = date.getDate();
  const hour = date.getHours();
  return `${year}${getCompleteVal(month)}${getCompleteVal(day)}${getCompleteVal(hour)}`;
}

/**
 * 补全小于10的数字,例如: 9 =》 09
 * @param val
 * @returns {string}
 */
function getCompleteVal(val) {
  return val < 10 ? `0${val}` : val;
}
const version = getCurrentVersion();

// 写入.env.version文件,提供给env-cmd处理
fs.writeFile('./.env.version', 'REACT_APP_VERSION=' + version + '', function(err) {
  if (err) {
    throw err;
  }
  console.log('Generated version number:', version);
  require('env-cmd').EnvCmd(process.argv.slice(2));
});

这里最重要的代码是最后一行,就是执行env.cmd提供的EnvCmd方法。

(2)命令怎么写呢?

在package.json的script中写法如下:

"scripts": {
   "build": "node env.config.js .env.version react-scripts build",
   "build:dev": "set REACT_APP_ENV=dev& npm run build",
   "build:test": "set REACT_APP_ENV=test& npm run build","build:prod": "set REACT_APP_ENV=prod& npm run build"
}

当执行npm run build:dev或者npm run build:test 或者npm run build:prod时,会自动写入.env.version, 并通过env-cmd解析生成的文件。

(3)怎么使用动态设置的环境变量?

使用方式没有区别,使用如下:

console.log(process.env.REACT_APP_VERSION);

此时打印的结果大概如下:2019021918

这样每次我都不需要手动设置版本号了,每次build,会自动生成一个(最后结尾是小时,因为一般不会一个小时内build一次,如果有,你可以根据自己的实际情况设置

谢谢大家!

转载于:https://www.cnblogs.com/zhangkunweb/p/react-scripts-random-env.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将Create React App项目迁移到Vite,可以按照以下步骤进行操作: 1. 首先,将原来的脚本替换为Vite的脚本。根据引用的内容,将原来的脚本替换为以下内容: ```json "scripts": { "start": "vite", "build": "vite build", "test": "vite test", "eject": "vite eject" } ``` 2. 接下来,需要将Create React App项目的相关文件和依赖迁移到Vite项目。可以通过以下步骤进行操作: - 将src目录下的文件和文件夹复制到Vite项目的src目录下。 - 将public目录下的文件和文件夹复制到Vite项目的public目录下。 - 将package.json的依赖项复制到Vite项目package.json,并运行```npm install```来安装这些依赖。 3. 最后,运行```npm start```命令启动Vite开发服务器,以确保项目能够正常运行。根据Vite的文档,Vite会自动检测你的项目的文件并进行相应的构建和热更新。 通过以上步骤,你就成功将Create React App项目迁移到Vite,并可以使用Vite的优化和快速开发能力来加快你的项目开发过程。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Vite 3.0 vs. Create React App:比较和迁移指南](https://blog.csdn.net/weixin_47967031/article/details/127160448)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值