|
| 1 | +# ESM Migration Guide: Monorepo Alignment |
| 2 | + |
| 3 | +## Migration Checklist |
| 4 | + |
| 5 | +### Phase 1: Convert Packages to TypeScript |
| 6 | + |
| 7 | +#### Criteria |
| 8 | + |
| 9 | +- No require statements are to be used in `.ts` files |
| 10 | +- Unit tests in package are written in TypeScript |
| 11 | +- Does not include scripts or system test migrations |
| 12 | + |
| 13 | +#### Status |
| 14 | + |
| 15 | +##### NPM Packages |
| 16 | + |
| 17 | +- [x] cli ✅ **COMPLETED** |
| 18 | +- [x] npm/angular ✅ **COMPLETED** |
| 19 | +- [x] npm/cypress-schematic ✅ **COMPLETED** |
| 20 | +- [ ] npm/eslint-plugin-dev |
| 21 | +- [x] npm/grep ✅ **COMPLETED** |
| 22 | +- [x] npm/mount-utils ✅ **COMPLETED** |
| 23 | +- [ ] npm/puppeteer **PARTIAL** |
| 24 | +- [x] npm/react ✅ **COMPLETED** |
| 25 | +- [x] npm/svelte ✅ **COMPLETED** |
| 26 | +- [x] npm/vite-dev-server ✅ **COMPLETED** |
| 27 | +- [x] vite-plugin-cypress-esm ✅ **COMPLETED** |
| 28 | +- [x] npm/vue ✅ **COMPLETED** |
| 29 | +- [ ] npm/webpack-batteries-included-preprocessor |
| 30 | +- [x] npm/webpack-dev-server ✅ **COMPLETED** |
| 31 | +- [ ] npm/webpack-preprocessor **PARTIAL** |
| 32 | + |
| 33 | +##### Binary Packages |
| 34 | + |
| 35 | +- [ ] packages/app **PARTIAL** - low priority: frontend package |
| 36 | +- [ ] packages/config **PARTIAL** - entry point is JS |
| 37 | +- [ ] packages/data-context **PARTIAL** - entry point is JS |
| 38 | +- [x] packages/driver ✅ **COMPLETED** - source complete, cypress tests need migration |
| 39 | +- [x] packages/electron ✅ **COMPLETED** |
| 40 | +- [ ] packages/error **PARTIAL** - entry point is JS |
| 41 | +- [x] packages/eslint-config ✅ **COMPLETED** |
| 42 | +- [ ] packages/example |
| 43 | +- [ ] packages/extension |
| 44 | +- [ ] packages/frontend-shared **PARTIAL** - entry point is JS |
| 45 | +- [ ] packages/graphql **PARTIAL** - entry point is JS |
| 46 | +- [ ] packages/https-proxy - higher priority |
| 47 | +- [x] packages/electron ✅ **COMPLETED** |
| 48 | +- [ ] packages/https-proxy **PARTIAL** - entry point is JS |
| 49 | +- [x] packages/icons ✅ **COMPLETED** |
| 50 | +- [x] packages/launcher ✅ **COMPLETED** |
| 51 | +- [x] packages/launchpad ✅ **COMPLETED** |
| 52 | +- [x] packages/net-stubbing ✅ **COMPLETED** |
| 53 | +- [ ] packages/network **PARTIAL** - entry point is JS |
| 54 | +- [x] packages/packherd-require ✅ **COMPLETED** |
| 55 | +- [ ] packages/proxy **PARTIAL** - entry point is JS |
| 56 | +- [x] packages/reporter ✅ **COMPLETED** |
| 57 | +- [ ] packages/resolve-dist **PARTIAL** - entry point is JS |
| 58 | +- [ ] packages/rewriter **PARTIAL** - entry point is JS |
| 59 | +- [ ] packages/root |
| 60 | +- [x] packages/runner ✅ **COMPLETED** |
| 61 | +- [ ] packages/scaffold-config **PARTIAL** - entry point is JS |
| 62 | +- [ ] packages/server **PARTIAL** - many source/test files in JS. highest priority |
| 63 | +- [ ] packages/socket **PARTIAL** - entry point is JS. Tests are JS |
| 64 | +- [x] packages/stderr-filtering ✅ **COMPLETED** |
| 65 | +- [ ] packages/telemetry **PARTIAL** - entry point is JS |
| 66 | +- [ ] packages/ts **PARTIAL** - ultimate goal is removal and likely not worth the effort to convert |
| 67 | +- [ ] packages/types **PARTIAL** - entry point is JS |
| 68 | +- [x] packages/v8-snapshot-require |
| 69 | +- [x] packages/web-config |
| 70 | + |
| 71 | + |
| 72 | +### Phase 2: Convert Package tests from Mocha to Vitest |
| 73 | + |
| 74 | +#### Status |
| 75 | + |
| 76 | +##### NPM Packages |
| 77 | + |
| 78 | +- [x] cli ✅ **COMPLETED** |
| 79 | +- [x] npm/cypress-schematic ✅ **COMPLETED** |
| 80 | +- [ ] npm/eslint-plugin-dev |
| 81 | +- [x] npm/grep ✅ **COMPLETED** |
| 82 | +- [ ] npm/puppeteer |
| 83 | +- [x] npm/vite-dev-server ✅ **COMPLETED** |
| 84 | +- [ ] npm/webpack-batteries-included-preprocessor |
| 85 | +- [ ] npm/webpack-dev-server |
| 86 | +- [ ] npm/webpack-preprocessor |
| 87 | + |
| 88 | +##### Binary Packages |
| 89 | + |
| 90 | +- [ ] packages/config |
| 91 | +- [ ] packages/data-context |
| 92 | +- [x] packages/driver ✅ **COMPLETED** |
| 93 | +- [x] packages/electron ✅ **COMPLETED** |
| 94 | +- [ ] packages/error |
| 95 | +- [ ] packages/extension |
| 96 | +- [ ] packages/graphql (configured but doesn't have tests) |
| 97 | +- [ ] packages/https-proxy |
| 98 | +- [x] packages/electron ✅ **COMPLETED** |
| 99 | +- [ ] packages/https-proxy |
| 100 | +- [ ] packages/icons |
| 101 | +- [ ] packages/launcher |
| 102 | +- [ ] packages/net-stubbing |
| 103 | +- [ ] packages/network |
| 104 | +- [ ] packages/packherd-require |
| 105 | +- [ ] packages/proxy |
| 106 | +- [ ] packages/rewriter |
| 107 | +- [ ] packages/scaffold-config |
| 108 | +- [ ] packages/server |
| 109 | +- [ ] packages/socket |
| 110 | +- [x] packages/stderr-filtering ✅ **COMPLETED** |
| 111 | +- [ ] packages/telemetry |
| 112 | +- [ ] packages/ts - ultimate goal is removal and likely not worth the effort to convert |
| 113 | +- [x] packages/types ✅ **COMPLETED** |
| 114 | +- [ ] packages/v8-snapshot-require |
| 115 | + |
| 116 | +### Phase 3: Bundle ESM/CJS versions of NPM packages |
| 117 | + |
| 118 | +TBD: details will be clearer at the end of Phase 2 |
| 119 | + |
| 120 | +### Phase 4: Run Cypress server as an ESM package |
| 121 | + |
| 122 | +TBD: details will be clearer at the end of Phase 2 |
0 commit comments