Git 用于基于package.json更新文件的钩子
我们需要自动化更新Git 用于基于package.json更新文件的钩子,git,githooks,package.json,Git,Githooks,Package.json,我们需要自动化更新Notice.txt文件的过程,这目前相当繁琐 我正在阅读git钩子,并开始考虑实现一个git钩子,它可以实现以下功能: 查找package.json中的更改依赖项和devdependency 每当这些部分出现差异时,更新相应的Notice.txt文件 我不清楚怎么做。过去有没有人尝试过解决这个问题,或者可以共享一个指南或资源来阅读一般文档以外的更多关于git钩子的信息?从这里,您可以下载Apress出版的完全免费的专业git书籍,该书详细描述了git。它有一个描述客户端和服务
Notice.txt
文件的过程,这目前相当繁琐
我正在阅读git钩子,并开始考虑实现一个git钩子,它可以实现以下功能:
package.json中的更改
依赖项
和devdependency
Notice.txt
文件我不清楚怎么做。过去有没有人尝试过解决这个问题,或者可以共享一个指南或资源来阅读一般文档以外的更多关于git钩子的信息?从这里,您可以下载Apress出版的完全免费的专业git书籍,该书详细描述了git。它有一个描述客户端和服务器端钩子的
Git钩子
部分。它还附带了一些例子。可能是值得您检查的东西,希望能帮助您解决问题。我们做了类似的事情,但没有使用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 上面的代码在environment文件夹中生成了一个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 */
是的,我也在看,但恐怕这并不能回答我的问题。设法达到了一定程度,但访问package.json的特定区域似乎很棘手。。。