Fix Metro bundler refresh issue by preventing unnecessary file writes
- Only write auto-generated.d.ts when actual content changes - Strip timestamp lines when comparing content to detect real changes - Prevents Metro from refreshing when type content is unchanged - Fixes flickering "Refreshing..." issue across all connected devices 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -278,10 +278,25 @@ async function updateGlobalTypes() {
|
|||||||
fs.mkdirSync(typesDir, { recursive: true });
|
fs.mkdirSync(typesDir, { recursive: true });
|
||||||
}
|
}
|
||||||
|
|
||||||
// Write the file
|
// Only write if content has changed (compare without timestamp)
|
||||||
fs.writeFileSync(globalTypesPath, content, 'utf-8');
|
let shouldWrite = true;
|
||||||
|
if (fs.existsSync(globalTypesPath)) {
|
||||||
|
const existingContent = fs.readFileSync(globalTypesPath, 'utf-8');
|
||||||
|
|
||||||
console.log(`[IOR Resolver] Updated auto-generated types: ${globalTypesPath}`);
|
// Remove timestamp lines for comparison
|
||||||
|
const stripTimestamp = (str) => str.replace(/ \* Generated at: .*\n/g, '').replace(/\/\/ Cached: .*\n/g, '');
|
||||||
|
|
||||||
|
if (stripTimestamp(existingContent) === stripTimestamp(content)) {
|
||||||
|
shouldWrite = false;
|
||||||
|
console.log(`[IOR Resolver] Type declarations unchanged, skipping write to prevent Metro refresh`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (shouldWrite) {
|
||||||
|
// Write the file
|
||||||
|
fs.writeFileSync(globalTypesPath, content, 'utf-8');
|
||||||
|
console.log(`[IOR Resolver] Updated auto-generated types: ${globalTypesPath}`);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
5583
package-lock.json
generated
5583
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@metatrom/ior-resolver",
|
"name": "@metatrom/ior-resolver",
|
||||||
"version": "1.0.0",
|
"version": "1.1.0-beta.2",
|
||||||
"description": "Interoperable Object Reference (IOR) resolver for Metro bundler and Node.js with support for local and remote component fetching",
|
"description": "Interoperable Object Reference (IOR) resolver for Metro bundler and Node.js with support for local and remote component fetching",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"types": "index.d.ts",
|
"types": "index.d.ts",
|
||||||
|
|||||||
Reference in New Issue
Block a user