fix: 当 esbuild 未打包时创建占位文件避免 Tauri 构建失败 (#276)

This commit is contained in:
YHH
2025-12-05 16:24:26 +08:00
committed by GitHub
parent fe96d72ac6
commit d0238add2d

View File

@@ -176,6 +176,7 @@ const platform = process.platform;
const esbuildSrc = esbuildSources[platform];
const esbuildDst = path.join(binDir, platform === 'win32' ? 'esbuild.exe' : 'esbuild');
let esbuildBundled = false;
if (esbuildSrc && fs.existsSync(esbuildSrc)) {
try {
fs.copyFileSync(esbuildSrc, esbuildDst);
@@ -185,6 +186,7 @@ if (esbuildSrc && fs.existsSync(esbuildSrc)) {
}
const stats = fs.statSync(esbuildDst);
console.log(`✓ Bundled esbuild binary (${(stats.size / 1024 / 1024).toFixed(2)} MB)`);
esbuildBundled = true;
} catch (error) {
console.warn(`Failed to bundle esbuild: ${error.message}`);
console.log(' User code compilation will require global esbuild installation');
@@ -194,6 +196,16 @@ if (esbuildSrc && fs.existsSync(esbuildSrc)) {
console.log(' User code compilation will require global esbuild installation');
}
// Create a placeholder file if esbuild was not bundled
// Tauri requires resources patterns to match at least one file
// 如果 esbuild 没有打包,创建占位文件
// Tauri 要求资源模式至少匹配一个文件
if (!esbuildBundled) {
const placeholderPath = path.join(binDir, '.gitkeep');
fs.writeFileSync(placeholderPath, '# Placeholder for Tauri resources\n# esbuild binary will be bundled during release build\n');
console.log('✓ Created placeholder in bin directory');
}
if (!success) {
console.error('Runtime bundling failed');
process.exit(1);