受 Yifei Xu 的回应启发,我创建了另一个选项,该选项使用带有 create-react-app 的 es6 module。此选项会创建一个 javascript 文件并将其作为常量导入到构建文件中。虽然将其作为文本文件使其易于更新,但此选项可确保它是打包到 javascript 包中的 js 文件。这个文件的名字是 _git_commit.js
package.json 脚本:
"git-info": "echo export default \"{\\\"logMessage\\\": \\\"$(git log -1 --oneline)\\\"}\" > src/_git_commit.js",
"precommit": "lint-staged",
"start": "yarn git-info; react-scripts start",
"build": "yarn git-info; react-scripts build",
使用此提交消息的示例组件:
import React from 'react';
/**
* This is the commit message of the last commit before building or running this project
* @see ./package.json git-info for how to generate this commit
*/
import GitCommit from './_git_commit';
const VersionComponent = () => (
<div>
<h1>Git Log: {GitCommit.logMessage}</h1>
</div>
);
export default VersionComponent;
请注意,这会自动将您的提交消息放入 javascript 包中,因此请确保没有将安全信息输入到提交消息中。我还将创建的 _git_commit.js 添加到 .gitignore 因此它不会被签入(并创建一个疯狂的 git commit 循环)。