基于package.json更新文件的钩子

问题描述 投票:1回答:2

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

我正在阅读有关git hooks的内容,并开始考虑实现一个git hook,它执行以下操作:

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

我不清楚该怎么做。有没有人试图在过去解决这个问题,或者可以分享一个指南或资源来阅读更多关于git hooks的更多信息?

git githooks package.json
2个回答
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 */

0
投票

Git Book您可以完全免费下载Apress出版的Pro Git书籍,详细介绍了git。它有一个描述客户端和服务器端钩子的Git Hooks部分。它还附带一些例子。退房时可能值得一试,希望能帮助您解决问题。

© www.soinside.com 2019 - 2024. All rights reserved.