挂钩基于package.json更新文件

时间:2019-02-25 17:04:56

标签: git githooks package.json

我们需要使Notice.txt文件的更新过程自动化,这目前非常繁琐。

我正在阅读有关git钩子的内容,并开始考虑实现git钩子,该操作可完成以下任务:

  1. package.json dependenciesdevDependencies中查找变化
  2. 每次这些部分存在差异时,请更新相应的Notice.txt文件。

我不清楚该怎么做。过去有没有人尝试解决此问题,或者可以分享指南或资源以在常规文档之外阅读更多有关git hook的信息?

2 个答案:

答案 0 :(得分:1)

我们做了类似的事情,但没有使用githooks。我们正在使用每个npm脚本可用的前处理和后处理。例如,我们使用postinstall脚本在每次安装后生成一个包含所有在package.json中配置的版本的组件内部可访问的常量。我想可以在githook中调用这样的脚本。

要获得版本常量,我们执行了以下操作:

package.json

"postinstall": "node version.js"



version.js

这是与package.json相同级别的文件

const {version} = require('./package.json');
const {resolve, relative} = require('path');
const {writeFileSync} = require('fs-extra');

const gitInfo = {
  version: version
};

const file = resolve(__dirname, 'src', 'environments', 'version.ts');
writeFileSync(file,
  `// IMPORTANT: THIS FILE IS AUTO GENERATED! DO NOT MANUALLY EDIT OR CHECKIN!
/* tslint:disable */
export const VERSION = ${JSON.stringify(gitInfo, null, 4)};
/* tslint:enable */
`, {encoding: 'utf-8'});

console.log(`Wrote version info ${gitInfo.version} to ${relative(resolve(__dirname, '..'), file)}`);



结果:/ environment下的version.ts

上面的代码将带有以下内容的version.ts文件生成到环境文件夹中

// IMPORTANT: THIS FILE IS AUTO GENERATED! DO NOT MANUALLY EDIT OR CHECKIN
/* tslint:disable */
export const VERSION = {
  'version': 'VERSION FROM PACKAGE.JSON'
};
/* tslint:enable */

答案 1 :(得分:0)

您可以从Git Book完全免费下载Apress出版的Pro Git书,其中详细介绍了git。它有一个Git Hooks部分,描述了客户端和服务器端挂钩。它还带有一些示例。结帐时可能值得您做些事情,希望对您有帮助。