如何在create-react-app中进行应用程序版本控制?

10

我需要在页脚以 x.y.z 格式显示我的react应用的版本

我需要每次部署应用时,提供选择是否增加 xyz 来使版本号递增。

如何实现这个目标? :)

5个回答

11

要升级您的应用程序版本,您可以使用npm version

例如:

npm version minor

5
这是解决方案的一部分,但没有解释如何使它显示出来。 - Andy

10

一旦你有了在 package.json 中更新版本的方法(例如通过npm version,就像@bertrand-p建议的那样),你就可以将版本号分配给环境变量。例如,在.env文件中设置:

REACT_APP_VERSION=$npm_package_version

然后,您可以通过 process.env.REACT_APP_VERSION 在应用程序内部访问该变量。

另请参阅:https://github.com/facebook/create-react-app/issues/2466#issuecomment-357490359


谢谢,这个也可以在 yarn 中工作。使用 REACT_APP_VERSION=$npm_package_versionyarn 中可以吗? - Sanka Sanjeewa
@SankaSanjeewa 是的,那应该可以。 - mikebridge
@SankaSanjeewa 是的,那应该可以。 - undefined
你知道我是否可以将其链接到git的分支哈希(git rev-parse HEAD)吗? - undefined
1
@Chrysanthemums 我会假设你可以通过shell使用任意值来覆盖它,例如 REACT_APP_VERSION=$(git rev-parse HEAD) npm run build - undefined

2

我认为@Bertrand P和@VulfCompressor的回答没有完整地解释问题。 我使用了genversionhttps://www.npmjs.com/package/genversion。 我所做的步骤如下:

  1. npm install genversion --save-dev
  2. 修改 package.json 中的构建脚本为 genversion --es6 src/autobuild_version.js && react-scripts build(我找不到一种方法来导入生成的模块,并将其放在建议的lib目录中,所以我必须将其放在src目录中)
  3. 在React应用程序中,import { version } from './autobuild_version' 并根据需要使用
  4. src/autobuild_version.js添加到.gitignore(其他源代码控制工具也可以)
  5. npm run build

必须提供整个应用程序的版本,那么我应该将其添加到index.js文件中还是其他地方? - hu7sy
genversion会创建一个仅包含版本号的单独文件,您可以将其导入到任何想要的地方。 - Andy
我们可以从.env文件中导入,那么为什么要使用这个包呢 :-| - hu7sy

1

您可以在不同的情况下使用以下npm命令,这些命令将影响您的React项目中package.json文件中的版本号。您可以通过安装dotenv(npm i dotenvyarn add dotenv)并在根目录中使用.env文件,在整个应用程序中访问版本号REACT_APP_VERSION=$npm_package_version。您可以在npm version documentation页面找到更多命令。以下命令将添加到版本号中,例如:"version":"{major}.{minor}.{patch}"

如果是您的应用程序中的重大更改(修复错误),请使用:

npm version major

如果是应用程序中的小改动(修复漏洞),请使用:
npm version minor 

如果只是补丁升级,例如更改一些样式,请使用:

npm version patch

你可以使用版本控制来实现许多目的,其中之一是确保客户端缓存得到更新并获得最新的内容。


0

create react app 不是 Node.js 代码 - 它是客户端 JavaScript 代码。那个问题的接受答案在客户端执行是危险的。 - Andy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接