Conversation
… Enhance changelog by linking related PRs for better traceability and credit additional contributors.
|
@nachocodoner pacho we've a problem!!! I'm trying to migrate a project and have attempt to locally fork a meteor package just like we usually do but the build fails like so: │ Adding Gitignore Entries for Meteor Modern-Tools build context directories
└─────────────────────────────────────────────────
The following entries will be added to .gitignore:
• _build
• */build-assets
• */build-chunks
• .rsdoctor
✅ Gitignore entries for Meteor Modern-Tools build context directories added
Rspack plugin error: ENOENT: no such file or directory, open '/home/harry/Projects/just-events/packages/package.json'
packages/core-runtime.js:189
throw error;
^
Error: ENOENT: no such file or directory, open '/home/harry/Projects/just-events/packages/package.json'
at Object.readFileSync (node:fs:441:20)
at getMeteorAppPackageJson (packages/tools-core/lib/meteor.js:18:8)
at getMeteorInitialAppEntrypoints (packages/tools-core/lib/meteor.js:94:24)
at getInitialEntrypoints (packages/rspack/lib/build-context.js:57:30)
at configureMeteorForRspack (packages/rspack/lib/config.js:147:30)
at module.wrapAsync.self (packages/rspack/rspack_plugin.js:140:5)
at processTicksAndRejections (node:internal/process/task_queues:105:5) {
errno: -2,
code: 'ENOENT',
syscall: 'open',
path: '/home/harry/Projects/just-events/packages/package.json'
}
Node.js v22.20.0
just-events/packages migration/3.0 ? ✗
As you can see, Meteor attempts to create |
|
@harryadel: When does it fail? Running tests in the local package, or during Share details in the command. If a script or extra steps are involved, they might affect it. I’ll try to reproduce. I have tests with local packages that don’t hit this issue, so more details will help with reproduction. |
|
I think I am going to discard completely this integration. Not worth it anymore! Just joking, closing this PR in favor of official release 3.4, which already contains all changes from here, #13915 |
|
My thoughts exactly, why do we have to track rspack in two separate PRs? Thank you for your hard work. |
|
It was mainly to give the opportunity for a big change to be reviewed separately, without mixing it with other contributions or core updates. This way, we always have a clear view of the Meteor-Rspack integration changes alone. It can still be reviewed this way, but as we’re close to the official 3.4 release, let’s wrap it up. |

Context: Meteor-RSPack Integration: A Modern Bundler Meets Meteor 3.4 (Check out the forum post for additional information)
This PR adds modern bundler support to Meteor by integrating Rspack alongside the existing bundler. This brings faster rebuilds, smaller bundles, and compatibility with the modern JS ecosystem.
The changes in this PR are significant, but I will keep it open even as we release betas. This way it can continue to be reviewed, with reviews addressed and delivered as part of the beta release plan until the official release. Since this is a major integration, it needs enough time to be properly verified, reviewed, and tested, without being tied to a strict release date. The only requirement for beta releases is to have all checks passing on the PR.
Changes included
rspackpackage: orchestrates Rspack setup, development server, and production buildstools-corepackage: utilities for installing npm dependencies and detecting Meteor runtime to use it for Rspack integration and future tool integration packages (like CapacitorJS).@meteorjs/rspacknpm package: provides a defaultrspack.config.jsfor Meteor. Projects can add their ownrspack.config.jsto extend or override it.📃 New docs for Modern Build Stack (WIP)
📏 Support Rspack for
meteor profileGetting started
Once Meteor
3.4-beta.11is available, enable Rspack with a single command:When you install Rspack and run your app, your project is set up to:
_buildfolder for intermediate files from the Meteor–Rspack process.public/build-assetsandpublic/build-chunksto store Rspack assets, code chuncks from dynamic imports, and so on; and serve them in your app when building them for production..gitignoreto ignore the newbuildfolders.meteor runormeteor buildand the environment.rspack.config.tsso you can customize rules for client/server, development/production, tests, and more.Modern tests
Context: ./tools/modern-tests
We’ve built a new modern test suite to address the limitations of the current self-tests. The old suite relies on limitations on manage npm dependencies, advanced configurations, and mock behaviors that often miss real-world issues.
Modern tests runs across all skeletons, and specific modern app setups, checking key things: server responses, page rendering, dev/prod builds, tests and multiple configurations. Every test now passes as shown in the picture.
We have two kind of tests: skeleton and modern app tests. Skeleton tests are generated at runtime using
meteor create. The modern app tests (eg. react-router.test.js) uses the apps statically described at modern-tests/apps to try configs not covered by skeletons, like dynamic imports, ESM, styling, Babel, swcrc configs, and more advanced setups, also those that will come in the future. As in the legacy suite, we preconfigure some apps for testing.It's important new configs and assertions are incrementally added so that we can ensure we support more apps, and we never add regressions. This will bring stability on releases.
Roadmap
A lot of work has already been done. The remaining tasks include: