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的特定区域似乎很棘手。。。