mirror of
https://github.com/The-Low-Code-Foundation/OpenNoodl.git
synced 2026-01-12 07:12:54 +01:00
189 lines
4.2 KiB
Markdown
189 lines
4.2 KiB
Markdown
# PREREQ-001: Fix Webpack 5 Persistent Caching
|
|
|
|
## Overview
|
|
|
|
**Priority:** 🔴 CRITICAL - Blocks ALL development
|
|
**Estimate:** 1-2 days
|
|
**Status:** Not started
|
|
|
|
---
|
|
|
|
## The Problem
|
|
|
|
Webpack 5 persistent caching is preventing code changes from loading during development. When you modify a file, the old cached version continues to be served instead of the new code.
|
|
|
|
This was discovered during the ComponentsPanel React migration (TASK-004B) and is documented in:
|
|
`dev-docs/tasks/phase-2/TASK-004B-componentsPanel-react-migration/STATUS-BLOCKED.md`
|
|
|
|
### Symptoms
|
|
|
|
1. You modify a TypeScript/JavaScript file
|
|
2. You rebuild or let hot reload trigger
|
|
3. The browser shows the OLD code, not your changes
|
|
4. Console may show stale behavior
|
|
5. `console.log` statements you add don't appear
|
|
|
|
### Impact
|
|
|
|
Without fixing this, you cannot:
|
|
- Test any code changes reliably
|
|
- Develop any new features
|
|
- Debug existing issues
|
|
- Verify that fixes work
|
|
|
|
---
|
|
|
|
## Investigation Steps
|
|
|
|
### 1. Locate Webpack Configuration
|
|
|
|
```bash
|
|
# Find webpack config files
|
|
find packages -name "webpack*.js" -o -name "webpack*.ts"
|
|
|
|
# Common locations:
|
|
# packages/noodl-editor/webpack.config.js
|
|
# packages/noodl-editor/webpack.renderer.config.js
|
|
```
|
|
|
|
### 2. Check Current Cache Settings
|
|
|
|
Look for:
|
|
```javascript
|
|
module.exports = {
|
|
cache: {
|
|
type: 'filesystem', // This is the culprit
|
|
// ...
|
|
}
|
|
}
|
|
```
|
|
|
|
### 3. Verify It's a Caching Issue
|
|
|
|
```bash
|
|
# Clear all caches and rebuild
|
|
rm -rf node_modules/.cache
|
|
rm -rf packages/noodl-editor/node_modules/.cache
|
|
npm run build -- --no-cache
|
|
```
|
|
|
|
If changes appear after clearing cache, caching is confirmed as the issue.
|
|
|
|
---
|
|
|
|
## Solution Options
|
|
|
|
### Option A: Disable Persistent Caching in Dev (Recommended)
|
|
|
|
```javascript
|
|
// webpack.config.js
|
|
module.exports = (env) => ({
|
|
// Only use filesystem cache in production
|
|
cache: env.production ? {
|
|
type: 'filesystem',
|
|
buildDependencies: {
|
|
config: [__filename],
|
|
},
|
|
} : false, // No caching in development
|
|
|
|
// ... rest of config
|
|
});
|
|
```
|
|
|
|
**Pros:** Simple, guaranteed to work
|
|
**Cons:** Slower dev builds (but correctness > speed)
|
|
|
|
### Option B: Configure Proper Cache Invalidation
|
|
|
|
```javascript
|
|
// webpack.config.js
|
|
module.exports = {
|
|
cache: {
|
|
type: 'filesystem',
|
|
version: `${Date.now()}`, // Force cache bust
|
|
buildDependencies: {
|
|
config: [__filename],
|
|
// Add all config files that should invalidate cache
|
|
},
|
|
// Invalidate on file changes
|
|
managedPaths: [],
|
|
immutablePaths: [],
|
|
},
|
|
};
|
|
```
|
|
|
|
**Pros:** Keeps caching benefits when appropriate
|
|
**Cons:** More complex, may still have edge cases
|
|
|
|
### Option C: Memory Cache Only
|
|
|
|
```javascript
|
|
// webpack.config.js
|
|
module.exports = {
|
|
cache: {
|
|
type: 'memory',
|
|
maxGenerations: 1,
|
|
},
|
|
};
|
|
```
|
|
|
|
**Pros:** Fast rebuilds within session, no persistence bugs
|
|
**Cons:** Every new terminal session starts cold
|
|
|
|
---
|
|
|
|
## Implementation Steps
|
|
|
|
1. **Identify all webpack config files** in the project
|
|
2. **Check if there are separate dev/prod configs**
|
|
3. **Implement Option A** (safest starting point)
|
|
4. **Test the fix:**
|
|
- Make a visible change to a component
|
|
- Rebuild
|
|
- Verify change appears in browser
|
|
5. **Test hot reload:**
|
|
- Start dev server
|
|
- Make change
|
|
- Verify hot reload picks it up
|
|
6. **Document the change** in LEARNINGS.md
|
|
|
|
---
|
|
|
|
## Verification Checklist
|
|
|
|
- [ ] Code changes appear after rebuild
|
|
- [ ] Hot reload reflects changes immediately
|
|
- [ ] Console.log statements added to code appear in browser console
|
|
- [ ] No stale code behavior
|
|
- [ ] Build times acceptable (document before/after if significant)
|
|
- [ ] Works across terminal restarts
|
|
- [ ] Works after system restart
|
|
|
|
---
|
|
|
|
## Files Likely to Modify
|
|
|
|
```
|
|
packages/noodl-editor/webpack.config.js
|
|
packages/noodl-editor/webpack.renderer.config.js
|
|
packages/noodl-editor/webpack.main.config.js (if exists)
|
|
```
|
|
|
|
---
|
|
|
|
## Related Issues
|
|
|
|
- TASK-004B ComponentsPanel migration blocked by this
|
|
- Any future development work blocked by this
|
|
- PREREQ-002, PREREQ-003, PREREQ-004 all blocked by this
|
|
|
|
---
|
|
|
|
## Success Criteria
|
|
|
|
1. Can modify any TypeScript/JavaScript file
|
|
2. Changes appear immediately after rebuild
|
|
3. Hot reload works correctly
|
|
4. No need to manually clear caches
|
|
5. Works consistently across multiple dev sessions
|