fix: avoid npm reinstall for empty devDependencies

HA
1d ago
+69-2

Summary

  • Treat a missing devDependencies field and an empty object as equivalent when comparing rendered package manifests.
  • Preserve the npm install cache when a source-only reload produces no meaningful manifest change.
  • Add regression tests for manifest sync and install-cache preservation.

Fixes #7480

Tests

  • uv run pytest tests/units/utils/test_frontend_skeleton.py tests/units/utils/test_js_runtimes.py -q (24 passed)
  • Targeted pre-commit checks passed.
  • Verified locally with REFLEX_USE_NPM=1: a Python source-only hot reload rebuilt the app without rerunning npm install.