使用 NPM 包 gh-pages 时如何将原始提交哈希添加到提交消息中?

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

我有一个 Svelte/TS 项目,其中包含一个名为“deploy”的 NPM 脚本,它使用 gh-pages 将我的 build/dist 文件夹的内容提交到名为 gh-pages 的分支,以便在 Github Pages 上自动部署。

此包默认使用提交消息“Updates”,我想将其更改为包含启动脚本时我所在提交的哈希值。如果可能的话,我不想安装任何其他东西或编写比内联 NPM 脚本更多的内容。

我在 Windows 10 上从 VS Code 运行这些脚本(我不确定这是否相关),但该解决方案也应该适用于 Linux。

我尝试了这些命令,在第一次失败后我尝试向 ChatGPT 寻求帮助,但也没有成功:

脚本:

"deploy": "gh-pages --dist build --dotfiles --message \"$(git rev-parse HEAD)\""

结果:提交消息 =

$(git rev-parse HEAD)
(字面意思)

脚本:

"deploy": "gh-pages --dist build --dotfiles --message $(git rev-parse HEAD)"

结果:提交消息 =

$(git
(也是字面意思)

脚本:

"deploy": "git_commit=$(git rev-parse HEAD) && gh-pages --dist build --dotfiles --message \"Deploying commit $git_commit\""

结果:错误 =

'git_commit' is not recognized as an internal or external command, operable program or batch file.

shell npm github-pages npm-scripts
1个回答
0
投票

最后我在另一个文件中写了一个js脚本。

const ghpages = require('gh-pages');
const { execSync } = require('child_process');

try {
    const commitHash = execSync('git rev-parse HEAD').toString().trim();
    ghpages.publish('build', {
        dotfiles: true,
        message: `Deploying commit ${commitHash}`
    }, (err) => {
        if (err) console.error('Deployment error:', err);
        else console.log('Deployed successfully');
    });
} catch (error) {
    console.error('Error fetching commit hash:', error);
}

从 package.json 调用:

"deploy": "node scripts/deploy.cjs"
© www.soinside.com 2019 - 2024. All rights reserved.