我有一个 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.
最后我在另一个文件中写了一个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"