Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >在 React 代码中使用自动更新的 CRA 环境变量

在 React 代码中使用自动更新的 CRA 环境变量

原创
作者头像
猫哥学前班
发布于 2019-02-03 04:36:10
发布于 2019-02-03 04:36:10
1.9K0
举报
文章被收录于专栏:猫哥学前班猫哥学前班

最近写了本《Git 进阶指南》的 Gitbook,但(可能)由于 Gitbook CDN 上的缓存过于顽固,所以需要在访问 Gitbook 时,自动加上清缓存参数 ?v=版本号

React 代码如下,当访问站点 /gb 时,自动跳转外站并带上版本号:

代码语言:txt
AI代码解释
复制
import React from "react";
import { BrowserRouter as Router, Route } from "react-router-dom";
import Home from "./Home";

const App = () => (
  <Router>
    <div>
      <Route exact path="/" component={Home} />
      <Route path="/gb" component={Gitbook} />
    </div>
  </Router>
);

const Gitbook = () => {
  window.location = `https://gb.yekai.net/?v=${process.env.REACT_APP_VERSION}`;
  return (
    <div className="loading-box"></div>
  );
};

export default App;

CRA 文档提到 process.env 必须使用 REACT_APP 的前缀 ,所以我们这里命名为 REACT_APP_VERSION

而 version 的值,则希望能在每次运行发布时自动更新。

具体 package.json 定义如下:

代码语言:txt
AI代码解释
复制
{
  "name": "yekai-net",
  "version": "1.1.2",
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test --env=jsdom",
    "eject": "react-scripts eject",
    "publish": "REACT_APP_VERSION=$(npm version patch) npm run build && rsync -av ./build yekai:/root/centos-config/www/yekai.net/"
  }
}

当运行 npm run publish 时,会先使用 npm version patch 命令自动更新项目版本号(此例是 1.1.2 patch 后为 1.1.3),并设置给环境变量 REACT_APP_VERSION

所以后面的 npm run build 能将 React 代码中的 ${process.env.REACT_APP_VERSION} 变量,编译成具体的 version 值 1.1.3。

最后,使用 rsync 同步到远程主机即可。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
React + Typescript: 开启 HMR/Hot Loader
在项目根目录创建一个 config-overrides.js 文件, 是项目的根目录,不是 src 文件夹, 要放到和 package.json 同级。
szhshp
2022/09/21
4110
【React 实战教程】从0到1 构建 github star管理工具
在日常使用github中,除了利用git进行项目版本控制之外,最多的用处就是游览各式的项目,在看到一些有趣或者有用的项目之后,我们通常就会顺手star,目的是日后再看。但是当我们star了许多项目之后,回过头想找一个的项目就会发现,很难在短时间内找到它,官方也并没有提供很好的管理我们的star项目的功能,因此在市面上也出现了一些对star进行管理的工具,比如说 astralapp,Star Order等等,其实github的接口api都是开放的,我们完全可以自己构建一个属于自己的项目管理工具。公司的前端技术栈是React,而笔者之前使用的是Vue,因此正好想利用github的open api 自己构建个react的github star管理项目来加深react的使用。而大体功能我们就模仿astralapp。
用户2356368
2019/04/03
1.4K0
【React 实战教程】从0到1 构建 github star管理工具
react实战开发|react+web版聊天室
基于react+react-dom+react-router-dom+redux+react-redux+webpack2.0+react-photoswipe+swiper等技术混合开发的web版聊天室reactWebChat项目,实现了发送消息、表情(动图),图片、视频预览等功能。
andy2018
2019/06/29
2.8K0
react实战开发|react+web版聊天室
React+Flask打造前后端分离项目开发环境
OK,预览下效果,顺便调试(没啥可调试的/(ㄒoㄒ)/~~)。npm start。效果如下:
Cloud-Cloudys
2020/07/06
6.8K2
React 项目路径添加指定的访问前缀 - SPA
之前我们讨论了怎么在 Angular 项目路径添加指定的访问前缀,该项目针对 SPA 应用;当然,我们也讨论了 Next 项目路径添加指定的访问前缀,该项目是使用 React 框架完成的 MPA 应用。本文,我们讨论 React 的 SPA 应用,怎么为该应用添加指定的访问前缀呢?
Jimmy_is_jimmy
2023/04/22
2.5K0
React 项目路径添加指定的访问前缀 - SPA
【React 实战教程】从0到1 构建 github star管理工具
在日常使用github中,除了利用git进行项目版本控制之外,最多的用处就是游览各式的项目,在看到一些有趣或者有用的项目之后,我们通常就会顺手star,目的是日后再看。但是当我们star了许多项目之后,回过头想找一个的项目就会发现,很难在短时间内找到它,官方也并没有提供很好的管理我们的star项目的功能,因此在市面上也出现了一些对star进行管理的工具,比如说 astralapp,Star Order等等,其实github的接口api都是开放的,我们完全可以自己构建一个属于自己的项目管理工具。公司的前端技术栈是React,而笔者之前使用的是Vue,因此正好想利用github的open api 自己构建个react的github star管理项目来加深react的使用。而大体功能我们就模仿astralapp。
用户2356368
2024/01/28
2470
【React 实战教程】从0到1 构建 github star管理工具
React目录结构详细解析
每个项目的根目录下面,一般都有一个package.json文件,定义了这个项目所需要的各种模块,以及项目的配置信息(比如名称、版本、许可证等元数据)。npm install命令根据这个配置文件,自动下载所需的模块,也就是配置项目所需的运行和开发环境。
先知先觉
2021/12/06
2.4K0
React目录结构详细解析
1、深入浅出React(一)
npm start启动开发环境,npm run build创建生产环境优化代码,npm test用于测试单元,npm run eject把潜藏在react-scripts中的一序列技术栈“弹射”到 应用的顶端,此命令不可逆且会改变和增加一些文件。
keyWords
2018/09/19
1.7K0
手把手教你全家桶之React(三)--完结篇
前言 本篇主要是讲一些全家桶的优化与完善,基础功能上一篇已经讲得差不多了。直接开始: Source Maps 当javaScript抛出异常时,我们会很想知道它发生在哪个文件的哪一行。但是webpack 总是将文件输出为一个或多个bundle,我们对错误的追踪很不方便。Source maps试图解决这一个问题,我们只需要改变一下配置项即可。 在webpack.dev.config.js中加入: devtool:"inline-source-map" css编译 这里以less-loader为例,先安装 l
用户2145235
2018/06/26
1.1K0
React.js基础知识总结一
React是FaceBook(脸书)公司研发的一款JS框架(MVC) React是一款框架:具备自己开发的独立思想(MVC:Model View Controller) -> 划分组件开发 -> 基于路由的SPA单页面开发 -> 基于ES6来编写代码(最后部署上线的时候,我们需要把ES6编译成ES5 =>基于Babel来完成编译) -> 可能用到Less/Sass等,我们也需要使用对应的插件把他们进行预编译 -> 最后为了优化性能(减少HTTP请求次数),我们需要把JS或者CSS进行合并压缩 -> webpack来完成以上页面组件合并、JS/CSS编译加合并等工作
用户6379025
2022/12/26
2K0
React.js基础知识总结一
从零开始react实战:云书签-1 react环境搭建
本篇是实战系列的第一篇,主要是搭建 react 开发环境,在create-react-app的基础上加上如下功能:
用户2038589
2019/08/01
3.6K2
从零开始react实战:云书签-1 react环境搭建
React环境创建
世间万物皆对象
2024/03/20
1360
React脚手架 create-react-app 快速上手教程Kotlin 开发者社区
You can now view hello-react-demo in the browser.
一个会写诗的程序员
2018/12/12
9800
大前端快闪:package.json文件知多少?
于是打算用后端程序猿的视角记录一些{大前端}的知识快闪,也算是帮助读者构建完整的全栈技能体系。
有态度的马甲
2021/10/14
6550
大前端快闪:package.json文件知多少?
package.json文件知多少?
Version: 当前项目的版本,需要满足以下约定 x.x.x - major.minor.patches
用户7365393
2021/09/26
5710
React + Redux 开启 HMR/Hot Loader
最近在用 React 以及 Redux 写几个项目, 使用的是官方 Create-React-App 的脚手架, 默认没有开启 HMR, 每次都要等他自动刷新浏览器效率非常低, 因此考虑使用 HMR 模式
szhshp
2022/09/21
5130
【react】开发一款城市选择组件
想到做这个,是因为无意中在github上看到了这一个仓库https://github.com/lunlunshiwo/ChooseCity,做的就是一个城市选择控件,是用vue写的,说的是阿里的一道题
糊糊糊糊糊了
2018/07/04
4K0
使用 Electron 和 React 构建桌面应用
Electron 是一个使用 HTML、CSS、JavaScript 构建跨平台桌面应用的框架。
Kindem
2022/08/12
4K0
使用 Electron 和 React 构建桌面应用
常用的package.json,还有这么多你不知道的骚技巧
在每个项目的根目录下面,一般都会有一个 package.json 文件,其定义了运行项目所需要的各种依赖和项目的配置信息(如名称、版本、许可证等元数据)。
刘小夕
2020/07/22
1.7K0
常用的package.json,还有这么多你不知道的骚技巧
[译] 定制 create-react-app:如何制作自己的模版
原文:https://auth0.com/blog/how-to-configure-create-react-app/#Test-Your-Custom-Script
江米小枣
2020/06/15
1.5K0
相关推荐
React + Typescript: 开启 HMR/Hot Loader
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档