[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-meteor-migrate-to-rspack":3,"mdc--njxq81-key":36,"related-org-meteor-migrate-to-rspack":2262,"related-repo-meteor-migrate-to-rspack":2430},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":20,"repoUrl":21,"updatedAt":22,"license":23,"forks":24,"topics":25,"repo":31,"sourceUrl":34,"mdContent":35},"migrate-to-rspack","migrate Meteor applications to Rspack","Use when migrating an existing Meteor 3 app to the Rspack bundler integration (`rspack` Atmosphere package, Meteor 3.4+). Triggers on removing nested imports, defining mainModule entry points, server-only apps, replacing fourseven:scss \u002F meteor\u002Fless \u002F coffeescript \u002F jorgenvatle:vite \u002F zodern:melte build plugins with Rspack loaders, \"Error: 'import' and 'export' cannot be used outside of module code\", CommonJS default-import interop, _build \u002F build-assets \u002F build-chunks folders, module.exports in a client graph, Node built-ins in browser code, .meteorignore hiding mainModule handoff files, dynamic chunks under ROOT_URL, meteor.modules for CSS or HTML, resolve.symlinks in a monorepo, resolve.alias migration, meteor update --npm in CI\u002FDocker. Use this skill when the user asks about converting an app to Rspack, asks about a build plugin's Rspack replacement, or asks about CI\u002FDocker errors after upgrading. For setup and rspack.config.js helpers, use meteor-modern-build-stack instead.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"meteor","Meteor","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fmeteor.png",[12,16,17],{"name":13,"slug":14,"type":15},"Performance","performance","tag",{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},"Migration","migration",4,"https:\u002F\u002Fgithub.com\u002Fmeteor\u002Fagent-skills","2026-08-28T15:09:32.934395","MIT",0,[26,27,28,29,8,30],"agent-skills","ai-agents","claude-code","codex","meteorjs",{"repoUrl":21,"stars":20,"forks":24,"topics":32,"description":33},[26,27,28,29,8,30],"Meteor-maintained Agent Skills for building, migrating, testing, securing, and deploying Meteor 3 applications.","https:\u002F\u002Fgithub.com\u002Fmeteor\u002Fagent-skills\u002Ftree\u002FHEAD\u002Fskills\u002Fmigrate-to-rspack","---\nname: migrate-to-rspack\ndescription: >\n  Use when migrating an existing Meteor 3 app to the Rspack bundler\n  integration (`rspack` Atmosphere package, Meteor 3.4+). Triggers on\n  removing nested imports, defining mainModule entry points, server-only\n  apps, replacing fourseven:scss \u002F meteor\u002Fless \u002F coffeescript \u002F\n  jorgenvatle:vite \u002F zodern:melte build plugins with Rspack loaders,\n  \"Error: 'import' and 'export' cannot be used outside of module code\",\n  CommonJS default-import interop, _build \u002F build-assets \u002F build-chunks\n  folders, module.exports in a client graph, Node built-ins in browser code,\n  .meteorignore hiding mainModule handoff files, dynamic chunks under ROOT_URL,\n  meteor.modules for CSS or HTML, resolve.symlinks in a monorepo,\n  resolve.alias migration, meteor update --npm in CI\u002FDocker.\n  Use this skill when the user asks about converting an app to Rspack,\n  asks about a build plugin's Rspack replacement, or asks about CI\u002FDocker\n  errors after upgrading. For setup and rspack.config.js helpers, use\n  meteor-modern-build-stack instead.\nmetadata:\n  author: meteor\n  kind: knowledge\n  meteor: \">=3.4\"\n  area: migration\n  tagline: \"Migrate an existing Meteor 3 app to the Rspack bundler integration (`mainModule`, replacing legacy build plugins with loaders).\"\n  bundle: [\"migration\"]\n  docs_synced_at: \"2026-08-21\"\nlicense: MIT\n---\n\n# Migrate an existing app to Rspack\n\nRspack compiles app code while Meteor builds Atmosphere packages and assembles\nthe final bundle. Do not rewrite packages merely because Rspack is enabled, but\naudit their architecture declarations and browser-incompatible dependencies.\n\nPrerequisite: Meteor 3.4+. Strongly recommended to enable\n`\"meteor\": { \"modern\": true }` first (Meteor 3.3+) and fix Babel fallbacks,\nthen add Rspack. See the `meteor-modern-build-stack` skill for the\nactivation knobs and `rspack.config.js` shape.\n\nMatch `@meteorjs\u002Frspack` to the Meteor release, not to\n`@rspack\u002Fcore` or `@rspack\u002Fcli`:\n\n| Meteor | `rspack` | `@meteorjs\u002Frspack` | Capability boundary |\n|---|---|---|---|\n| 3.4 | `1.0.0` | `1.0.0` | Base integration and helpers. |\n| 3.4.1 and 3.5 | `1.1.0` | `2.0.1` | Adds v2 helpers and inherited `TOOL_NODE_FLAGS`. |\n| 3.5.1 | `1.2.0` | `2.1.0` | Revised client polyfills and extension discovery. |\n\nThe Atmosphere, Meteor npm integration, and Rspack core package versions are\nindependent. Inspect `.meteor\u002Fversions`, `package.json`, and the lockfile. After\nchanging the Meteor release, run `meteor update --npm`, inspect the npm changes,\nand commit the dependency files. Do not pair a newer integration major with an\nolder Meteor release only to copy a current helper.\n\n## Decision flow\n\n1. Does the app define client and server entry points in `package.json`\n   `meteor.mainModule`? If no, define them. Required.\n2. Trace the client and client-test graphs. Do they reach CommonJS export\n   assignments, Node built-ins, server-only local package entries, or missing\n   generated inputs in a clean checkout? If yes, repair the boundary before\n   activation. See\n   `references\u002Fclient-graph-preflight.md`.\n3. Does the app code contain nested imports (ES `import` inside an `if`,\n   function, or other block)? If yes, move them to top level or convert\n   them to dynamic `import()` \u002F `require`. Required for app code; OK in\n   Atmosphere packages.\n4. Does the app rely on a Meteor build plugin (`less`, `fourseven:scss`,\n   `coffeescript`, `zodern:melte`, `jorgenvatle:vite`)? Plan an Rspack\n   loader replacement and prove capability parity before removal. See\n   `references\u002Fframework-and-css.md`.\n5. Does the app rely on bare default imports from CommonJS packages\n   (`import x from \"some-cjs\"`)? Decide between rewriting to\n   `import * as x` or restoring Meteor-style interop in `.swcrc`. See\n   `references\u002Fcode-migrations.md`.\n6. Is the app server-only? Set only `mainModule.server`. Rspack still\n   bundles the server; client is skipped.\n7. Does the app keep CSS or HTML outside its entry folder, or import app-local\n   symlinks? Preserve the boundary with `meteor.modules` or\n   `resolve.symlinks: false`; see the references.\n8. Run `meteor add rspack` and watch the verbose `[Transpiler]` log for\n   remaining `(app)` failures.\n\n## Required: entry points\n\n```json\n{\n  \"meteor\": {\n    \"mainModule\": {\n      \"client\": \"client\u002Fmain.js\",\n      \"server\": \"server\u002Fmain.js\"\n    },\n    \"testModule\": \"tests.js\"\n  }\n}\n```\n\nWithout `mainModule`, Rspack has no entry. Meteor's eager-loading model\ndoes not apply: Rspack does not auto-discover modules. See\n`references\u002Fframework-and-css.md` for CSS and HTML routing.\n\n## Required: no nested imports in app code\n\n```javascript\n\u002F\u002F app code: NOT allowed under Rspack\nif (condition) {\n  import { a as b } from \".\u002Fc\";\n  console.log(b);\n}\n```\n\nThree fixes:\n\n```javascript\n\u002F\u002F 1. Move to top\nimport { a as b } from \".\u002Fc\";\nif (condition) console.log(b);\n\n\u002F\u002F 2. Dynamic import (standardized, supported)\nif (condition) {\n  const { a: b } = await import(\".\u002Fc\");\n  console.log(b);\n}\n\n\u002F\u002F 3. require (CommonJS interop)\nif (condition) {\n  const { a: b } = require(\".\u002Fc\");\n  console.log(b);\n}\n```\n\nDiagnose with verbose mode and look for `(app)` files failing with\n`Error: 'import' and 'export' cannot be used outside of module code`.\n`(package)` failures are fine; Atmosphere packages are not bundled by Rspack.\n\n## Required: reserve build folders\n\nThe integration writes to `_build\u002F`, `public\u002Fbuild-assets\u002F`,\n`public\u002Fbuild-chunks\u002F`, `private\u002Fbuild-assets\u002F`. Auto-added to `.gitignore`.\nIf the project already uses any of these names, rename in `package.json`:\n\n```json\n{\n  \"meteor\": {\n    \"buildContext\": \"build\",\n    \"assetsContext\": \"assets\",\n    \"chunksContext\": \"chunks\"\n  }\n}\n```\n\nDo not edit any file under those folders. Exclude them from IDE indexing and\nfrom every recursive formatter, linter, typechecker, test-discovery, and\ncoverage scan. `.gitignore` does not configure those tools.\n\nDo not match the active build context in `.meteorignore` or `METEOR_IGNORE`.\nRspack writes Meteor-facing entry modules there, then Meteor reads them to\nassemble the final bundle. Resolve renamed contexts before auditing ignores.\n\n## Replacing build plugins\n\nMost app-file build plugins move to Rspack loaders. Prove capability parity\nbefore removal; make conflicting activation and removal one reversible change.\nSee `references\u002Fframework-and-css.md`.\n\n| Old plugin                | Replacement                                                          |\n|---------------------------|----------------------------------------------------------------------|\n| `meteor\u002Fless`             | `less-loader`. See `references\u002Fframework-and-css.md`.                |\n| `fourseven:scss`          | `sass-loader` + `sass-embedded`. See refs. Skeleton in `meteor create --full`. |\n| `meteor\u002Fcoffeescript`     | `coffee-loader` (optionally chained with `swc-loader`).              |\n| `zodern:melte` (Svelte)   | Official Rspack Svelte loader.                                       |\n| `jorgenvatle:vite` (Vue\u002FSolid) | Native Rspack Vue\u002FSolid loaders.                                |\n| `babel-plugin-react-compiler` | Babel via Rspack loader on `.jsx`\u002F`.tsx`; SWC for everything else. |\n| `zodern:types`            | Still compatible. Keep it.                                           |\n\nPlugins acting only on Atmosphere package files can stay. Plugins acting on\napp-folder files (entry folder excluded) must move to Rspack.\n\n## CommonJS default-import interop\n\nOld Meteor accepted `import x from \"some-cjs-lib\"` for a `module.exports = ...`\npackage. Rspack + SWC do not by default. Two options:\n\n```javascript\n\u002F\u002F preferred: switch to namespace import\nimport * as x from \"some-cjs-lib\";\n```\n\nOr restore interop in `.swcrc`:\n\n```json\n{\n  \"module\": {\n    \"type\": \"commonjs\",\n    \"noInterop\": false,\n    \"importInterop\": \"node\"\n  }\n}\n```\n\nThis emits CommonJS, defeating tree-shaking and static analysis app-wide.\nMigrate imports instead unless you cannot.\n\n## CI and Docker\n\nAfter upgrading Meteor locally, the required npm bumps must be committed.\nIf they are not, CI\u002FDocker builds fail with:\n\n```text\nCould not find rspack.config.js, rspack.config.ts, rspack.config.mjs, or rspack.config.cjs\n```\n\nPreferred reproducible flow:\n\n1. Run `meteor update --npm` locally after changing the Meteor release.\n2. Commit `package.json` and the lockfile.\n3. Run `meteor npm ci` followed by `meteor build` in CI.\n\nSee `references\u002Ftroubleshooting.md` for the recovery-only Docker fallback when\na pipeline intentionally repairs missing npm bumps during the build.\n\n## Anti-patterns\n\n- Add Rspack before fixing Babel fallbacks. Find them with\n  `\"meteor\": { \"modern\": { \"transpiler\": { \"verbose\": true } } }` and fix\n  them while still on the optimization-only stack.\n- Restore CJS interop globally in `.swcrc` to avoid migrating a handful of\n  imports. Trades real bundle-size wins for short-term convenience.\n- Commit `_build\u002F`, `public\u002Fbuild-assets\u002F`, `public\u002Fbuild-chunks\u002F`,\n  `private\u002Fbuild-assets\u002F`. Autogenerated.\n- Change the Meteor release without running `meteor update --npm` and\n  committing its npm dependency changes. A stale lockfile makes clean CI\n  builds fail or pick an incompatible integration major.\n\n## See also\n\n- `references\u002Fcode-migrations.md`\n- `references\u002Fclient-graph-preflight.md`\n- `references\u002Fvalidation-matrix.md`\n- `references\u002Fframework-and-css.md`\n- `references\u002Ftroubleshooting.md`\n- `references\u002Feval-cases.md`\n- For setup, helpers, and `rspack.config.js` API: `meteor-modern-build-stack`.\n",{"data":37,"body":44},{"name":4,"description":6,"metadata":38,"license":23},{"author":8,"kind":39,"meteor":40,"area":19,"tagline":41,"bundle":42,"docs_synced_at":43},"knowledge",">=3.4","Migrate an existing Meteor 3 app to the Rspack bundler integration (`mainModule`, replacing legacy build plugins with loaders).",[19],"2026-08-21",{"type":45,"children":46},"root",[47,56,62,92,121,265,294,301,521,527,742,761,767,904,909,1271,1299,1305,1353,1511,1523,1543,1549,1560,1765,1770,1776,1797,1855,1866,2013,2018,2024,2029,2039,2044,2090,2103,2109,2179,2185,2256],{"type":48,"tag":49,"props":50,"children":52},"element","h1",{"id":51},"migrate-an-existing-app-to-rspack",[53],{"type":54,"value":55},"text","Migrate an existing app to Rspack",{"type":48,"tag":57,"props":58,"children":59},"p",{},[60],{"type":54,"value":61},"Rspack compiles app code while Meteor builds Atmosphere packages and assembles\nthe final bundle. Do not rewrite packages merely because Rspack is enabled, but\naudit their architecture declarations and browser-incompatible dependencies.",{"type":48,"tag":57,"props":63,"children":64},{},[65,67,74,76,82,84,90],{"type":54,"value":66},"Prerequisite: Meteor 3.4+. Strongly recommended to enable\n",{"type":48,"tag":68,"props":69,"children":71},"code",{"className":70},[],[72],{"type":54,"value":73},"\"meteor\": { \"modern\": true }",{"type":54,"value":75}," first (Meteor 3.3+) and fix Babel fallbacks,\nthen add Rspack. See the ",{"type":48,"tag":68,"props":77,"children":79},{"className":78},[],[80],{"type":54,"value":81},"meteor-modern-build-stack",{"type":54,"value":83}," skill for the\nactivation knobs and ",{"type":48,"tag":68,"props":85,"children":87},{"className":86},[],[88],{"type":54,"value":89},"rspack.config.js",{"type":54,"value":91}," shape.",{"type":48,"tag":57,"props":93,"children":94},{},[95,97,103,105,111,113,119],{"type":54,"value":96},"Match ",{"type":48,"tag":68,"props":98,"children":100},{"className":99},[],[101],{"type":54,"value":102},"@meteorjs\u002Frspack",{"type":54,"value":104}," to the Meteor release, not to\n",{"type":48,"tag":68,"props":106,"children":108},{"className":107},[],[109],{"type":54,"value":110},"@rspack\u002Fcore",{"type":54,"value":112}," or ",{"type":48,"tag":68,"props":114,"children":116},{"className":115},[],[117],{"type":54,"value":118},"@rspack\u002Fcli",{"type":54,"value":120},":",{"type":48,"tag":122,"props":123,"children":124},"table",{},[125,160],{"type":48,"tag":126,"props":127,"children":128},"thead",{},[129],{"type":48,"tag":130,"props":131,"children":132},"tr",{},[133,138,147,155],{"type":48,"tag":134,"props":135,"children":136},"th",{},[137],{"type":54,"value":9},{"type":48,"tag":134,"props":139,"children":140},{},[141],{"type":48,"tag":68,"props":142,"children":144},{"className":143},[],[145],{"type":54,"value":146},"rspack",{"type":48,"tag":134,"props":148,"children":149},{},[150],{"type":48,"tag":68,"props":151,"children":153},{"className":152},[],[154],{"type":54,"value":102},{"type":48,"tag":134,"props":156,"children":157},{},[158],{"type":54,"value":159},"Capability boundary",{"type":48,"tag":161,"props":162,"children":163},"tbody",{},[164,195,234],{"type":48,"tag":130,"props":165,"children":166},{},[167,173,182,190],{"type":48,"tag":168,"props":169,"children":170},"td",{},[171],{"type":54,"value":172},"3.4",{"type":48,"tag":168,"props":174,"children":175},{},[176],{"type":48,"tag":68,"props":177,"children":179},{"className":178},[],[180],{"type":54,"value":181},"1.0.0",{"type":48,"tag":168,"props":183,"children":184},{},[185],{"type":48,"tag":68,"props":186,"children":188},{"className":187},[],[189],{"type":54,"value":181},{"type":48,"tag":168,"props":191,"children":192},{},[193],{"type":54,"value":194},"Base integration and helpers.",{"type":48,"tag":130,"props":196,"children":197},{},[198,203,212,221],{"type":48,"tag":168,"props":199,"children":200},{},[201],{"type":54,"value":202},"3.4.1 and 3.5",{"type":48,"tag":168,"props":204,"children":205},{},[206],{"type":48,"tag":68,"props":207,"children":209},{"className":208},[],[210],{"type":54,"value":211},"1.1.0",{"type":48,"tag":168,"props":213,"children":214},{},[215],{"type":48,"tag":68,"props":216,"children":218},{"className":217},[],[219],{"type":54,"value":220},"2.0.1",{"type":48,"tag":168,"props":222,"children":223},{},[224,226,232],{"type":54,"value":225},"Adds v2 helpers and inherited ",{"type":48,"tag":68,"props":227,"children":229},{"className":228},[],[230],{"type":54,"value":231},"TOOL_NODE_FLAGS",{"type":54,"value":233},".",{"type":48,"tag":130,"props":235,"children":236},{},[237,242,251,260],{"type":48,"tag":168,"props":238,"children":239},{},[240],{"type":54,"value":241},"3.5.1",{"type":48,"tag":168,"props":243,"children":244},{},[245],{"type":48,"tag":68,"props":246,"children":248},{"className":247},[],[249],{"type":54,"value":250},"1.2.0",{"type":48,"tag":168,"props":252,"children":253},{},[254],{"type":48,"tag":68,"props":255,"children":257},{"className":256},[],[258],{"type":54,"value":259},"2.1.0",{"type":48,"tag":168,"props":261,"children":262},{},[263],{"type":54,"value":264},"Revised client polyfills and extension discovery.",{"type":48,"tag":57,"props":266,"children":267},{},[268,270,276,278,284,286,292],{"type":54,"value":269},"The Atmosphere, Meteor npm integration, and Rspack core package versions are\nindependent. Inspect ",{"type":48,"tag":68,"props":271,"children":273},{"className":272},[],[274],{"type":54,"value":275},".meteor\u002Fversions",{"type":54,"value":277},", ",{"type":48,"tag":68,"props":279,"children":281},{"className":280},[],[282],{"type":54,"value":283},"package.json",{"type":54,"value":285},", and the lockfile. After\nchanging the Meteor release, run ",{"type":48,"tag":68,"props":287,"children":289},{"className":288},[],[290],{"type":54,"value":291},"meteor update --npm",{"type":54,"value":293},", inspect the npm changes,\nand commit the dependency files. Do not pair a newer integration major with an\nolder Meteor release only to copy a current helper.",{"type":48,"tag":295,"props":296,"children":298},"h2",{"id":297},"decision-flow",[299],{"type":54,"value":300},"Decision flow",{"type":48,"tag":302,"props":303,"children":304},"ol",{},[305,324,336,373,422,458,471,492],{"type":48,"tag":306,"props":307,"children":308},"li",{},[309,311,316,322],{"type":54,"value":310},"Does the app define client and server entry points in ",{"type":48,"tag":68,"props":312,"children":314},{"className":313},[],[315],{"type":54,"value":283},{"type":48,"tag":68,"props":317,"children":319},{"className":318},[],[320],{"type":54,"value":321},"meteor.mainModule",{"type":54,"value":323},"? If no, define them. Required.",{"type":48,"tag":306,"props":325,"children":326},{},[327,329,335],{"type":54,"value":328},"Trace the client and client-test graphs. Do they reach CommonJS export\nassignments, Node built-ins, server-only local package entries, or missing\ngenerated inputs in a clean checkout? If yes, repair the boundary before\nactivation. See\n",{"type":48,"tag":68,"props":330,"children":332},{"className":331},[],[333],{"type":54,"value":334},"references\u002Fclient-graph-preflight.md",{"type":54,"value":233},{"type":48,"tag":306,"props":337,"children":338},{},[339,341,347,349,355,357,363,365,371],{"type":54,"value":340},"Does the app code contain nested imports (ES ",{"type":48,"tag":68,"props":342,"children":344},{"className":343},[],[345],{"type":54,"value":346},"import",{"type":54,"value":348}," inside an ",{"type":48,"tag":68,"props":350,"children":352},{"className":351},[],[353],{"type":54,"value":354},"if",{"type":54,"value":356},",\nfunction, or other block)? If yes, move them to top level or convert\nthem to dynamic ",{"type":48,"tag":68,"props":358,"children":360},{"className":359},[],[361],{"type":54,"value":362},"import()",{"type":54,"value":364}," \u002F ",{"type":48,"tag":68,"props":366,"children":368},{"className":367},[],[369],{"type":54,"value":370},"require",{"type":54,"value":372},". Required for app code; OK in\nAtmosphere packages.",{"type":48,"tag":306,"props":374,"children":375},{},[376,378,384,385,391,393,399,400,406,407,413,415,421],{"type":54,"value":377},"Does the app rely on a Meteor build plugin (",{"type":48,"tag":68,"props":379,"children":381},{"className":380},[],[382],{"type":54,"value":383},"less",{"type":54,"value":277},{"type":48,"tag":68,"props":386,"children":388},{"className":387},[],[389],{"type":54,"value":390},"fourseven:scss",{"type":54,"value":392},",\n",{"type":48,"tag":68,"props":394,"children":396},{"className":395},[],[397],{"type":54,"value":398},"coffeescript",{"type":54,"value":277},{"type":48,"tag":68,"props":401,"children":403},{"className":402},[],[404],{"type":54,"value":405},"zodern:melte",{"type":54,"value":277},{"type":48,"tag":68,"props":408,"children":410},{"className":409},[],[411],{"type":54,"value":412},"jorgenvatle:vite",{"type":54,"value":414},")? Plan an Rspack\nloader replacement and prove capability parity before removal. See\n",{"type":48,"tag":68,"props":416,"children":418},{"className":417},[],[419],{"type":54,"value":420},"references\u002Fframework-and-css.md",{"type":54,"value":233},{"type":48,"tag":306,"props":423,"children":424},{},[425,427,433,435,441,443,449,451,457],{"type":54,"value":426},"Does the app rely on bare default imports from CommonJS packages\n(",{"type":48,"tag":68,"props":428,"children":430},{"className":429},[],[431],{"type":54,"value":432},"import x from \"some-cjs\"",{"type":54,"value":434},")? Decide between rewriting to\n",{"type":48,"tag":68,"props":436,"children":438},{"className":437},[],[439],{"type":54,"value":440},"import * as x",{"type":54,"value":442}," or restoring Meteor-style interop in ",{"type":48,"tag":68,"props":444,"children":446},{"className":445},[],[447],{"type":54,"value":448},".swcrc",{"type":54,"value":450},". See\n",{"type":48,"tag":68,"props":452,"children":454},{"className":453},[],[455],{"type":54,"value":456},"references\u002Fcode-migrations.md",{"type":54,"value":233},{"type":48,"tag":306,"props":459,"children":460},{},[461,463,469],{"type":54,"value":462},"Is the app server-only? Set only ",{"type":48,"tag":68,"props":464,"children":466},{"className":465},[],[467],{"type":54,"value":468},"mainModule.server",{"type":54,"value":470},". Rspack still\nbundles the server; client is skipped.",{"type":48,"tag":306,"props":472,"children":473},{},[474,476,482,484,490],{"type":54,"value":475},"Does the app keep CSS or HTML outside its entry folder, or import app-local\nsymlinks? Preserve the boundary with ",{"type":48,"tag":68,"props":477,"children":479},{"className":478},[],[480],{"type":54,"value":481},"meteor.modules",{"type":54,"value":483}," or\n",{"type":48,"tag":68,"props":485,"children":487},{"className":486},[],[488],{"type":54,"value":489},"resolve.symlinks: false",{"type":54,"value":491},"; see the references.",{"type":48,"tag":306,"props":493,"children":494},{},[495,497,503,505,511,513,519],{"type":54,"value":496},"Run ",{"type":48,"tag":68,"props":498,"children":500},{"className":499},[],[501],{"type":54,"value":502},"meteor add rspack",{"type":54,"value":504}," and watch the verbose ",{"type":48,"tag":68,"props":506,"children":508},{"className":507},[],[509],{"type":54,"value":510},"[Transpiler]",{"type":54,"value":512}," log for\nremaining ",{"type":48,"tag":68,"props":514,"children":516},{"className":515},[],[517],{"type":54,"value":518},"(app)",{"type":54,"value":520}," failures.",{"type":48,"tag":295,"props":522,"children":524},{"id":523},"required-entry-points",[525],{"type":54,"value":526},"Required: entry points",{"type":48,"tag":528,"props":529,"children":534},"pre",{"className":530,"code":531,"language":532,"meta":533,"style":533},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"meteor\": {\n    \"mainModule\": {\n      \"client\": \"client\u002Fmain.js\",\n      \"server\": \"server\u002Fmain.js\"\n    },\n    \"testModule\": \"tests.js\"\n  }\n}\n","json","",[535],{"type":48,"tag":68,"props":536,"children":537},{"__ignoreMap":533},[538,550,578,605,646,681,690,724,733],{"type":48,"tag":539,"props":540,"children":543},"span",{"class":541,"line":542},"line",1,[544],{"type":48,"tag":539,"props":545,"children":547},{"style":546},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[548],{"type":54,"value":549},"{\n",{"type":48,"tag":539,"props":551,"children":553},{"class":541,"line":552},2,[554,559,564,569,573],{"type":48,"tag":539,"props":555,"children":556},{"style":546},[557],{"type":54,"value":558},"  \"",{"type":48,"tag":539,"props":560,"children":562},{"style":561},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[563],{"type":54,"value":8},{"type":48,"tag":539,"props":565,"children":566},{"style":546},[567],{"type":54,"value":568},"\"",{"type":48,"tag":539,"props":570,"children":571},{"style":546},[572],{"type":54,"value":120},{"type":48,"tag":539,"props":574,"children":575},{"style":546},[576],{"type":54,"value":577}," {\n",{"type":48,"tag":539,"props":579,"children":581},{"class":541,"line":580},3,[582,587,593,597,601],{"type":48,"tag":539,"props":583,"children":584},{"style":546},[585],{"type":54,"value":586},"    \"",{"type":48,"tag":539,"props":588,"children":590},{"style":589},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[591],{"type":54,"value":592},"mainModule",{"type":48,"tag":539,"props":594,"children":595},{"style":546},[596],{"type":54,"value":568},{"type":48,"tag":539,"props":598,"children":599},{"style":546},[600],{"type":54,"value":120},{"type":48,"tag":539,"props":602,"children":603},{"style":546},[604],{"type":54,"value":577},{"type":48,"tag":539,"props":606,"children":607},{"class":541,"line":20},[608,613,619,623,627,632,638,642],{"type":48,"tag":539,"props":609,"children":610},{"style":546},[611],{"type":54,"value":612},"      \"",{"type":48,"tag":539,"props":614,"children":616},{"style":615},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[617],{"type":54,"value":618},"client",{"type":48,"tag":539,"props":620,"children":621},{"style":546},[622],{"type":54,"value":568},{"type":48,"tag":539,"props":624,"children":625},{"style":546},[626],{"type":54,"value":120},{"type":48,"tag":539,"props":628,"children":629},{"style":546},[630],{"type":54,"value":631}," \"",{"type":48,"tag":539,"props":633,"children":635},{"style":634},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[636],{"type":54,"value":637},"client\u002Fmain.js",{"type":48,"tag":539,"props":639,"children":640},{"style":546},[641],{"type":54,"value":568},{"type":48,"tag":539,"props":643,"children":644},{"style":546},[645],{"type":54,"value":392},{"type":48,"tag":539,"props":647,"children":649},{"class":541,"line":648},5,[650,654,659,663,667,671,676],{"type":48,"tag":539,"props":651,"children":652},{"style":546},[653],{"type":54,"value":612},{"type":48,"tag":539,"props":655,"children":656},{"style":615},[657],{"type":54,"value":658},"server",{"type":48,"tag":539,"props":660,"children":661},{"style":546},[662],{"type":54,"value":568},{"type":48,"tag":539,"props":664,"children":665},{"style":546},[666],{"type":54,"value":120},{"type":48,"tag":539,"props":668,"children":669},{"style":546},[670],{"type":54,"value":631},{"type":48,"tag":539,"props":672,"children":673},{"style":634},[674],{"type":54,"value":675},"server\u002Fmain.js",{"type":48,"tag":539,"props":677,"children":678},{"style":546},[679],{"type":54,"value":680},"\"\n",{"type":48,"tag":539,"props":682,"children":684},{"class":541,"line":683},6,[685],{"type":48,"tag":539,"props":686,"children":687},{"style":546},[688],{"type":54,"value":689},"    },\n",{"type":48,"tag":539,"props":691,"children":693},{"class":541,"line":692},7,[694,698,703,707,711,715,720],{"type":48,"tag":539,"props":695,"children":696},{"style":546},[697],{"type":54,"value":586},{"type":48,"tag":539,"props":699,"children":700},{"style":589},[701],{"type":54,"value":702},"testModule",{"type":48,"tag":539,"props":704,"children":705},{"style":546},[706],{"type":54,"value":568},{"type":48,"tag":539,"props":708,"children":709},{"style":546},[710],{"type":54,"value":120},{"type":48,"tag":539,"props":712,"children":713},{"style":546},[714],{"type":54,"value":631},{"type":48,"tag":539,"props":716,"children":717},{"style":634},[718],{"type":54,"value":719},"tests.js",{"type":48,"tag":539,"props":721,"children":722},{"style":546},[723],{"type":54,"value":680},{"type":48,"tag":539,"props":725,"children":727},{"class":541,"line":726},8,[728],{"type":48,"tag":539,"props":729,"children":730},{"style":546},[731],{"type":54,"value":732},"  }\n",{"type":48,"tag":539,"props":734,"children":736},{"class":541,"line":735},9,[737],{"type":48,"tag":539,"props":738,"children":739},{"style":546},[740],{"type":54,"value":741},"}\n",{"type":48,"tag":57,"props":743,"children":744},{},[745,747,752,754,759],{"type":54,"value":746},"Without ",{"type":48,"tag":68,"props":748,"children":750},{"className":749},[],[751],{"type":54,"value":592},{"type":54,"value":753},", Rspack has no entry. Meteor's eager-loading model\ndoes not apply: Rspack does not auto-discover modules. See\n",{"type":48,"tag":68,"props":755,"children":757},{"className":756},[],[758],{"type":54,"value":420},{"type":54,"value":760}," for CSS and HTML routing.",{"type":48,"tag":295,"props":762,"children":764},{"id":763},"required-no-nested-imports-in-app-code",[765],{"type":54,"value":766},"Required: no nested imports in app code",{"type":48,"tag":528,"props":768,"children":772},{"className":769,"code":770,"language":771,"meta":533,"style":533},"language-javascript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F app code: NOT allowed under Rspack\nif (condition) {\n  import { a as b } from \".\u002Fc\";\n  console.log(b);\n}\n","javascript",[773],{"type":48,"tag":68,"props":774,"children":775},{"__ignoreMap":533},[776,785,803,859,897],{"type":48,"tag":539,"props":777,"children":778},{"class":541,"line":542},[779],{"type":48,"tag":539,"props":780,"children":782},{"style":781},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[783],{"type":54,"value":784},"\u002F\u002F app code: NOT allowed under Rspack\n",{"type":48,"tag":539,"props":786,"children":787},{"class":541,"line":552},[788,793,799],{"type":48,"tag":539,"props":789,"children":791},{"style":790},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[792],{"type":54,"value":354},{"type":48,"tag":539,"props":794,"children":796},{"style":795},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[797],{"type":54,"value":798}," (condition) ",{"type":48,"tag":539,"props":800,"children":801},{"style":546},[802],{"type":54,"value":549},{"type":48,"tag":539,"props":804,"children":805},{"class":541,"line":580},[806,811,816,821,826,831,836,841,845,850,854],{"type":48,"tag":539,"props":807,"children":808},{"style":790},[809],{"type":54,"value":810},"  import",{"type":48,"tag":539,"props":812,"children":813},{"style":546},[814],{"type":54,"value":815}," {",{"type":48,"tag":539,"props":817,"children":818},{"style":795},[819],{"type":54,"value":820}," a",{"type":48,"tag":539,"props":822,"children":823},{"style":790},[824],{"type":54,"value":825}," as",{"type":48,"tag":539,"props":827,"children":828},{"style":795},[829],{"type":54,"value":830}," b",{"type":48,"tag":539,"props":832,"children":833},{"style":546},[834],{"type":54,"value":835}," }",{"type":48,"tag":539,"props":837,"children":838},{"style":790},[839],{"type":54,"value":840}," from",{"type":48,"tag":539,"props":842,"children":843},{"style":546},[844],{"type":54,"value":631},{"type":48,"tag":539,"props":846,"children":847},{"style":634},[848],{"type":54,"value":849},".\u002Fc",{"type":48,"tag":539,"props":851,"children":852},{"style":546},[853],{"type":54,"value":568},{"type":48,"tag":539,"props":855,"children":856},{"style":546},[857],{"type":54,"value":858},";\n",{"type":48,"tag":539,"props":860,"children":861},{"class":541,"line":20},[862,867,871,877,883,888,893],{"type":48,"tag":539,"props":863,"children":864},{"style":795},[865],{"type":54,"value":866},"  console",{"type":48,"tag":539,"props":868,"children":869},{"style":546},[870],{"type":54,"value":233},{"type":48,"tag":539,"props":872,"children":874},{"style":873},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[875],{"type":54,"value":876},"log",{"type":48,"tag":539,"props":878,"children":880},{"style":879},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[881],{"type":54,"value":882},"(",{"type":48,"tag":539,"props":884,"children":885},{"style":795},[886],{"type":54,"value":887},"b",{"type":48,"tag":539,"props":889,"children":890},{"style":879},[891],{"type":54,"value":892},")",{"type":48,"tag":539,"props":894,"children":895},{"style":546},[896],{"type":54,"value":858},{"type":48,"tag":539,"props":898,"children":899},{"class":541,"line":648},[900],{"type":48,"tag":539,"props":901,"children":902},{"style":546},[903],{"type":54,"value":741},{"type":48,"tag":57,"props":905,"children":906},{},[907],{"type":54,"value":908},"Three fixes:",{"type":48,"tag":528,"props":910,"children":912},{"className":769,"code":911,"language":771,"meta":533,"style":533},"\u002F\u002F 1. Move to top\nimport { a as b } from \".\u002Fc\";\nif (condition) console.log(b);\n\n\u002F\u002F 2. Dynamic import (standardized, supported)\nif (condition) {\n  const { a: b } = await import(\".\u002Fc\");\n  console.log(b);\n}\n\n\u002F\u002F 3. require (CommonJS interop)\nif (condition) {\n  const { a: b } = require(\".\u002Fc\");\n  console.log(b);\n}\n",[913],{"type":48,"tag":68,"props":914,"children":915},{"__ignoreMap":533},[916,924,971,1000,1009,1017,1032,1099,1130,1137,1145,1154,1170,1231,1263],{"type":48,"tag":539,"props":917,"children":918},{"class":541,"line":542},[919],{"type":48,"tag":539,"props":920,"children":921},{"style":781},[922],{"type":54,"value":923},"\u002F\u002F 1. Move to top\n",{"type":48,"tag":539,"props":925,"children":926},{"class":541,"line":552},[927,931,935,939,943,947,951,955,959,963,967],{"type":48,"tag":539,"props":928,"children":929},{"style":790},[930],{"type":54,"value":346},{"type":48,"tag":539,"props":932,"children":933},{"style":546},[934],{"type":54,"value":815},{"type":48,"tag":539,"props":936,"children":937},{"style":795},[938],{"type":54,"value":820},{"type":48,"tag":539,"props":940,"children":941},{"style":790},[942],{"type":54,"value":825},{"type":48,"tag":539,"props":944,"children":945},{"style":795},[946],{"type":54,"value":830},{"type":48,"tag":539,"props":948,"children":949},{"style":546},[950],{"type":54,"value":835},{"type":48,"tag":539,"props":952,"children":953},{"style":790},[954],{"type":54,"value":840},{"type":48,"tag":539,"props":956,"children":957},{"style":546},[958],{"type":54,"value":631},{"type":48,"tag":539,"props":960,"children":961},{"style":634},[962],{"type":54,"value":849},{"type":48,"tag":539,"props":964,"children":965},{"style":546},[966],{"type":54,"value":568},{"type":48,"tag":539,"props":968,"children":969},{"style":546},[970],{"type":54,"value":858},{"type":48,"tag":539,"props":972,"children":973},{"class":541,"line":580},[974,978,983,987,991,996],{"type":48,"tag":539,"props":975,"children":976},{"style":790},[977],{"type":54,"value":354},{"type":48,"tag":539,"props":979,"children":980},{"style":795},[981],{"type":54,"value":982}," (condition) console",{"type":48,"tag":539,"props":984,"children":985},{"style":546},[986],{"type":54,"value":233},{"type":48,"tag":539,"props":988,"children":989},{"style":873},[990],{"type":54,"value":876},{"type":48,"tag":539,"props":992,"children":993},{"style":795},[994],{"type":54,"value":995},"(b)",{"type":48,"tag":539,"props":997,"children":998},{"style":546},[999],{"type":54,"value":858},{"type":48,"tag":539,"props":1001,"children":1002},{"class":541,"line":20},[1003],{"type":48,"tag":539,"props":1004,"children":1006},{"emptyLinePlaceholder":1005},true,[1007],{"type":54,"value":1008},"\n",{"type":48,"tag":539,"props":1010,"children":1011},{"class":541,"line":648},[1012],{"type":48,"tag":539,"props":1013,"children":1014},{"style":781},[1015],{"type":54,"value":1016},"\u002F\u002F 2. Dynamic import (standardized, supported)\n",{"type":48,"tag":539,"props":1018,"children":1019},{"class":541,"line":683},[1020,1024,1028],{"type":48,"tag":539,"props":1021,"children":1022},{"style":790},[1023],{"type":54,"value":354},{"type":48,"tag":539,"props":1025,"children":1026},{"style":795},[1027],{"type":54,"value":798},{"type":48,"tag":539,"props":1029,"children":1030},{"style":546},[1031],{"type":54,"value":549},{"type":48,"tag":539,"props":1033,"children":1034},{"class":541,"line":692},[1035,1040,1044,1048,1052,1056,1060,1065,1070,1075,1079,1083,1087,1091,1095],{"type":48,"tag":539,"props":1036,"children":1037},{"style":561},[1038],{"type":54,"value":1039},"  const",{"type":48,"tag":539,"props":1041,"children":1042},{"style":546},[1043],{"type":54,"value":815},{"type":48,"tag":539,"props":1045,"children":1046},{"style":879},[1047],{"type":54,"value":820},{"type":48,"tag":539,"props":1049,"children":1050},{"style":546},[1051],{"type":54,"value":120},{"type":48,"tag":539,"props":1053,"children":1054},{"style":795},[1055],{"type":54,"value":830},{"type":48,"tag":539,"props":1057,"children":1058},{"style":546},[1059],{"type":54,"value":835},{"type":48,"tag":539,"props":1061,"children":1062},{"style":546},[1063],{"type":54,"value":1064}," =",{"type":48,"tag":539,"props":1066,"children":1067},{"style":790},[1068],{"type":54,"value":1069}," await",{"type":48,"tag":539,"props":1071,"children":1072},{"style":546},[1073],{"type":54,"value":1074}," import",{"type":48,"tag":539,"props":1076,"children":1077},{"style":879},[1078],{"type":54,"value":882},{"type":48,"tag":539,"props":1080,"children":1081},{"style":546},[1082],{"type":54,"value":568},{"type":48,"tag":539,"props":1084,"children":1085},{"style":634},[1086],{"type":54,"value":849},{"type":48,"tag":539,"props":1088,"children":1089},{"style":546},[1090],{"type":54,"value":568},{"type":48,"tag":539,"props":1092,"children":1093},{"style":879},[1094],{"type":54,"value":892},{"type":48,"tag":539,"props":1096,"children":1097},{"style":546},[1098],{"type":54,"value":858},{"type":48,"tag":539,"props":1100,"children":1101},{"class":541,"line":726},[1102,1106,1110,1114,1118,1122,1126],{"type":48,"tag":539,"props":1103,"children":1104},{"style":795},[1105],{"type":54,"value":866},{"type":48,"tag":539,"props":1107,"children":1108},{"style":546},[1109],{"type":54,"value":233},{"type":48,"tag":539,"props":1111,"children":1112},{"style":873},[1113],{"type":54,"value":876},{"type":48,"tag":539,"props":1115,"children":1116},{"style":879},[1117],{"type":54,"value":882},{"type":48,"tag":539,"props":1119,"children":1120},{"style":795},[1121],{"type":54,"value":887},{"type":48,"tag":539,"props":1123,"children":1124},{"style":879},[1125],{"type":54,"value":892},{"type":48,"tag":539,"props":1127,"children":1128},{"style":546},[1129],{"type":54,"value":858},{"type":48,"tag":539,"props":1131,"children":1132},{"class":541,"line":735},[1133],{"type":48,"tag":539,"props":1134,"children":1135},{"style":546},[1136],{"type":54,"value":741},{"type":48,"tag":539,"props":1138,"children":1140},{"class":541,"line":1139},10,[1141],{"type":48,"tag":539,"props":1142,"children":1143},{"emptyLinePlaceholder":1005},[1144],{"type":54,"value":1008},{"type":48,"tag":539,"props":1146,"children":1148},{"class":541,"line":1147},11,[1149],{"type":48,"tag":539,"props":1150,"children":1151},{"style":781},[1152],{"type":54,"value":1153},"\u002F\u002F 3. require (CommonJS interop)\n",{"type":48,"tag":539,"props":1155,"children":1157},{"class":541,"line":1156},12,[1158,1162,1166],{"type":48,"tag":539,"props":1159,"children":1160},{"style":790},[1161],{"type":54,"value":354},{"type":48,"tag":539,"props":1163,"children":1164},{"style":795},[1165],{"type":54,"value":798},{"type":48,"tag":539,"props":1167,"children":1168},{"style":546},[1169],{"type":54,"value":549},{"type":48,"tag":539,"props":1171,"children":1173},{"class":541,"line":1172},13,[1174,1178,1182,1186,1190,1194,1198,1202,1207,1211,1215,1219,1223,1227],{"type":48,"tag":539,"props":1175,"children":1176},{"style":561},[1177],{"type":54,"value":1039},{"type":48,"tag":539,"props":1179,"children":1180},{"style":546},[1181],{"type":54,"value":815},{"type":48,"tag":539,"props":1183,"children":1184},{"style":879},[1185],{"type":54,"value":820},{"type":48,"tag":539,"props":1187,"children":1188},{"style":546},[1189],{"type":54,"value":120},{"type":48,"tag":539,"props":1191,"children":1192},{"style":795},[1193],{"type":54,"value":830},{"type":48,"tag":539,"props":1195,"children":1196},{"style":546},[1197],{"type":54,"value":835},{"type":48,"tag":539,"props":1199,"children":1200},{"style":546},[1201],{"type":54,"value":1064},{"type":48,"tag":539,"props":1203,"children":1204},{"style":873},[1205],{"type":54,"value":1206}," require",{"type":48,"tag":539,"props":1208,"children":1209},{"style":879},[1210],{"type":54,"value":882},{"type":48,"tag":539,"props":1212,"children":1213},{"style":546},[1214],{"type":54,"value":568},{"type":48,"tag":539,"props":1216,"children":1217},{"style":634},[1218],{"type":54,"value":849},{"type":48,"tag":539,"props":1220,"children":1221},{"style":546},[1222],{"type":54,"value":568},{"type":48,"tag":539,"props":1224,"children":1225},{"style":879},[1226],{"type":54,"value":892},{"type":48,"tag":539,"props":1228,"children":1229},{"style":546},[1230],{"type":54,"value":858},{"type":48,"tag":539,"props":1232,"children":1234},{"class":541,"line":1233},14,[1235,1239,1243,1247,1251,1255,1259],{"type":48,"tag":539,"props":1236,"children":1237},{"style":795},[1238],{"type":54,"value":866},{"type":48,"tag":539,"props":1240,"children":1241},{"style":546},[1242],{"type":54,"value":233},{"type":48,"tag":539,"props":1244,"children":1245},{"style":873},[1246],{"type":54,"value":876},{"type":48,"tag":539,"props":1248,"children":1249},{"style":879},[1250],{"type":54,"value":882},{"type":48,"tag":539,"props":1252,"children":1253},{"style":795},[1254],{"type":54,"value":887},{"type":48,"tag":539,"props":1256,"children":1257},{"style":879},[1258],{"type":54,"value":892},{"type":48,"tag":539,"props":1260,"children":1261},{"style":546},[1262],{"type":54,"value":858},{"type":48,"tag":539,"props":1264,"children":1266},{"class":541,"line":1265},15,[1267],{"type":48,"tag":539,"props":1268,"children":1269},{"style":546},[1270],{"type":54,"value":741},{"type":48,"tag":57,"props":1272,"children":1273},{},[1274,1276,1281,1283,1289,1291,1297],{"type":54,"value":1275},"Diagnose with verbose mode and look for ",{"type":48,"tag":68,"props":1277,"children":1279},{"className":1278},[],[1280],{"type":54,"value":518},{"type":54,"value":1282}," files failing with\n",{"type":48,"tag":68,"props":1284,"children":1286},{"className":1285},[],[1287],{"type":54,"value":1288},"Error: 'import' and 'export' cannot be used outside of module code",{"type":54,"value":1290},".\n",{"type":48,"tag":68,"props":1292,"children":1294},{"className":1293},[],[1295],{"type":54,"value":1296},"(package)",{"type":54,"value":1298}," failures are fine; Atmosphere packages are not bundled by Rspack.",{"type":48,"tag":295,"props":1300,"children":1302},{"id":1301},"required-reserve-build-folders",[1303],{"type":54,"value":1304},"Required: reserve build folders",{"type":48,"tag":57,"props":1306,"children":1307},{},[1308,1310,1316,1317,1323,1324,1330,1331,1337,1339,1345,1347,1352],{"type":54,"value":1309},"The integration writes to ",{"type":48,"tag":68,"props":1311,"children":1313},{"className":1312},[],[1314],{"type":54,"value":1315},"_build\u002F",{"type":54,"value":277},{"type":48,"tag":68,"props":1318,"children":1320},{"className":1319},[],[1321],{"type":54,"value":1322},"public\u002Fbuild-assets\u002F",{"type":54,"value":392},{"type":48,"tag":68,"props":1325,"children":1327},{"className":1326},[],[1328],{"type":54,"value":1329},"public\u002Fbuild-chunks\u002F",{"type":54,"value":277},{"type":48,"tag":68,"props":1332,"children":1334},{"className":1333},[],[1335],{"type":54,"value":1336},"private\u002Fbuild-assets\u002F",{"type":54,"value":1338},". Auto-added to ",{"type":48,"tag":68,"props":1340,"children":1342},{"className":1341},[],[1343],{"type":54,"value":1344},".gitignore",{"type":54,"value":1346},".\nIf the project already uses any of these names, rename in ",{"type":48,"tag":68,"props":1348,"children":1350},{"className":1349},[],[1351],{"type":54,"value":283},{"type":54,"value":120},{"type":48,"tag":528,"props":1354,"children":1356},{"className":530,"code":1355,"language":532,"meta":533,"style":533},"{\n  \"meteor\": {\n    \"buildContext\": \"build\",\n    \"assetsContext\": \"assets\",\n    \"chunksContext\": \"chunks\"\n  }\n}\n",[1357],{"type":48,"tag":68,"props":1358,"children":1359},{"__ignoreMap":533},[1360,1367,1390,1427,1464,1497,1504],{"type":48,"tag":539,"props":1361,"children":1362},{"class":541,"line":542},[1363],{"type":48,"tag":539,"props":1364,"children":1365},{"style":546},[1366],{"type":54,"value":549},{"type":48,"tag":539,"props":1368,"children":1369},{"class":541,"line":552},[1370,1374,1378,1382,1386],{"type":48,"tag":539,"props":1371,"children":1372},{"style":546},[1373],{"type":54,"value":558},{"type":48,"tag":539,"props":1375,"children":1376},{"style":561},[1377],{"type":54,"value":8},{"type":48,"tag":539,"props":1379,"children":1380},{"style":546},[1381],{"type":54,"value":568},{"type":48,"tag":539,"props":1383,"children":1384},{"style":546},[1385],{"type":54,"value":120},{"type":48,"tag":539,"props":1387,"children":1388},{"style":546},[1389],{"type":54,"value":577},{"type":48,"tag":539,"props":1391,"children":1392},{"class":541,"line":580},[1393,1397,1402,1406,1410,1414,1419,1423],{"type":48,"tag":539,"props":1394,"children":1395},{"style":546},[1396],{"type":54,"value":586},{"type":48,"tag":539,"props":1398,"children":1399},{"style":589},[1400],{"type":54,"value":1401},"buildContext",{"type":48,"tag":539,"props":1403,"children":1404},{"style":546},[1405],{"type":54,"value":568},{"type":48,"tag":539,"props":1407,"children":1408},{"style":546},[1409],{"type":54,"value":120},{"type":48,"tag":539,"props":1411,"children":1412},{"style":546},[1413],{"type":54,"value":631},{"type":48,"tag":539,"props":1415,"children":1416},{"style":634},[1417],{"type":54,"value":1418},"build",{"type":48,"tag":539,"props":1420,"children":1421},{"style":546},[1422],{"type":54,"value":568},{"type":48,"tag":539,"props":1424,"children":1425},{"style":546},[1426],{"type":54,"value":392},{"type":48,"tag":539,"props":1428,"children":1429},{"class":541,"line":20},[1430,1434,1439,1443,1447,1451,1456,1460],{"type":48,"tag":539,"props":1431,"children":1432},{"style":546},[1433],{"type":54,"value":586},{"type":48,"tag":539,"props":1435,"children":1436},{"style":589},[1437],{"type":54,"value":1438},"assetsContext",{"type":48,"tag":539,"props":1440,"children":1441},{"style":546},[1442],{"type":54,"value":568},{"type":48,"tag":539,"props":1444,"children":1445},{"style":546},[1446],{"type":54,"value":120},{"type":48,"tag":539,"props":1448,"children":1449},{"style":546},[1450],{"type":54,"value":631},{"type":48,"tag":539,"props":1452,"children":1453},{"style":634},[1454],{"type":54,"value":1455},"assets",{"type":48,"tag":539,"props":1457,"children":1458},{"style":546},[1459],{"type":54,"value":568},{"type":48,"tag":539,"props":1461,"children":1462},{"style":546},[1463],{"type":54,"value":392},{"type":48,"tag":539,"props":1465,"children":1466},{"class":541,"line":648},[1467,1471,1476,1480,1484,1488,1493],{"type":48,"tag":539,"props":1468,"children":1469},{"style":546},[1470],{"type":54,"value":586},{"type":48,"tag":539,"props":1472,"children":1473},{"style":589},[1474],{"type":54,"value":1475},"chunksContext",{"type":48,"tag":539,"props":1477,"children":1478},{"style":546},[1479],{"type":54,"value":568},{"type":48,"tag":539,"props":1481,"children":1482},{"style":546},[1483],{"type":54,"value":120},{"type":48,"tag":539,"props":1485,"children":1486},{"style":546},[1487],{"type":54,"value":631},{"type":48,"tag":539,"props":1489,"children":1490},{"style":634},[1491],{"type":54,"value":1492},"chunks",{"type":48,"tag":539,"props":1494,"children":1495},{"style":546},[1496],{"type":54,"value":680},{"type":48,"tag":539,"props":1498,"children":1499},{"class":541,"line":683},[1500],{"type":48,"tag":539,"props":1501,"children":1502},{"style":546},[1503],{"type":54,"value":732},{"type":48,"tag":539,"props":1505,"children":1506},{"class":541,"line":692},[1507],{"type":48,"tag":539,"props":1508,"children":1509},{"style":546},[1510],{"type":54,"value":741},{"type":48,"tag":57,"props":1512,"children":1513},{},[1514,1516,1521],{"type":54,"value":1515},"Do not edit any file under those folders. Exclude them from IDE indexing and\nfrom every recursive formatter, linter, typechecker, test-discovery, and\ncoverage scan. ",{"type":48,"tag":68,"props":1517,"children":1519},{"className":1518},[],[1520],{"type":54,"value":1344},{"type":54,"value":1522}," does not configure those tools.",{"type":48,"tag":57,"props":1524,"children":1525},{},[1526,1528,1534,1535,1541],{"type":54,"value":1527},"Do not match the active build context in ",{"type":48,"tag":68,"props":1529,"children":1531},{"className":1530},[],[1532],{"type":54,"value":1533},".meteorignore",{"type":54,"value":112},{"type":48,"tag":68,"props":1536,"children":1538},{"className":1537},[],[1539],{"type":54,"value":1540},"METEOR_IGNORE",{"type":54,"value":1542},".\nRspack writes Meteor-facing entry modules there, then Meteor reads them to\nassemble the final bundle. Resolve renamed contexts before auditing ignores.",{"type":48,"tag":295,"props":1544,"children":1546},{"id":1545},"replacing-build-plugins",[1547],{"type":54,"value":1548},"Replacing build plugins",{"type":48,"tag":57,"props":1550,"children":1551},{},[1552,1554,1559],{"type":54,"value":1553},"Most app-file build plugins move to Rspack loaders. Prove capability parity\nbefore removal; make conflicting activation and removal one reversible change.\nSee ",{"type":48,"tag":68,"props":1555,"children":1557},{"className":1556},[],[1558],{"type":54,"value":420},{"type":54,"value":233},{"type":48,"tag":122,"props":1561,"children":1562},{},[1563,1579],{"type":48,"tag":126,"props":1564,"children":1565},{},[1566],{"type":48,"tag":130,"props":1567,"children":1568},{},[1569,1574],{"type":48,"tag":134,"props":1570,"children":1571},{},[1572],{"type":54,"value":1573},"Old plugin",{"type":48,"tag":134,"props":1575,"children":1576},{},[1577],{"type":54,"value":1578},"Replacement",{"type":48,"tag":161,"props":1580,"children":1581},{},[1582,1611,1648,1679,1697,1715,1748],{"type":48,"tag":130,"props":1583,"children":1584},{},[1585,1594],{"type":48,"tag":168,"props":1586,"children":1587},{},[1588],{"type":48,"tag":68,"props":1589,"children":1591},{"className":1590},[],[1592],{"type":54,"value":1593},"meteor\u002Fless",{"type":48,"tag":168,"props":1595,"children":1596},{},[1597,1603,1605,1610],{"type":48,"tag":68,"props":1598,"children":1600},{"className":1599},[],[1601],{"type":54,"value":1602},"less-loader",{"type":54,"value":1604},". See ",{"type":48,"tag":68,"props":1606,"children":1608},{"className":1607},[],[1609],{"type":54,"value":420},{"type":54,"value":233},{"type":48,"tag":130,"props":1612,"children":1613},{},[1614,1622],{"type":48,"tag":168,"props":1615,"children":1616},{},[1617],{"type":48,"tag":68,"props":1618,"children":1620},{"className":1619},[],[1621],{"type":54,"value":390},{"type":48,"tag":168,"props":1623,"children":1624},{},[1625,1631,1633,1639,1641,1647],{"type":48,"tag":68,"props":1626,"children":1628},{"className":1627},[],[1629],{"type":54,"value":1630},"sass-loader",{"type":54,"value":1632}," + ",{"type":48,"tag":68,"props":1634,"children":1636},{"className":1635},[],[1637],{"type":54,"value":1638},"sass-embedded",{"type":54,"value":1640},". See refs. Skeleton in ",{"type":48,"tag":68,"props":1642,"children":1644},{"className":1643},[],[1645],{"type":54,"value":1646},"meteor create --full",{"type":54,"value":233},{"type":48,"tag":130,"props":1649,"children":1650},{},[1651,1660],{"type":48,"tag":168,"props":1652,"children":1653},{},[1654],{"type":48,"tag":68,"props":1655,"children":1657},{"className":1656},[],[1658],{"type":54,"value":1659},"meteor\u002Fcoffeescript",{"type":48,"tag":168,"props":1661,"children":1662},{},[1663,1669,1671,1677],{"type":48,"tag":68,"props":1664,"children":1666},{"className":1665},[],[1667],{"type":54,"value":1668},"coffee-loader",{"type":54,"value":1670}," (optionally chained with ",{"type":48,"tag":68,"props":1672,"children":1674},{"className":1673},[],[1675],{"type":54,"value":1676},"swc-loader",{"type":54,"value":1678},").",{"type":48,"tag":130,"props":1680,"children":1681},{},[1682,1692],{"type":48,"tag":168,"props":1683,"children":1684},{},[1685,1690],{"type":48,"tag":68,"props":1686,"children":1688},{"className":1687},[],[1689],{"type":54,"value":405},{"type":54,"value":1691}," (Svelte)",{"type":48,"tag":168,"props":1693,"children":1694},{},[1695],{"type":54,"value":1696},"Official Rspack Svelte loader.",{"type":48,"tag":130,"props":1698,"children":1699},{},[1700,1710],{"type":48,"tag":168,"props":1701,"children":1702},{},[1703,1708],{"type":48,"tag":68,"props":1704,"children":1706},{"className":1705},[],[1707],{"type":54,"value":412},{"type":54,"value":1709}," (Vue\u002FSolid)",{"type":48,"tag":168,"props":1711,"children":1712},{},[1713],{"type":54,"value":1714},"Native Rspack Vue\u002FSolid loaders.",{"type":48,"tag":130,"props":1716,"children":1717},{},[1718,1727],{"type":48,"tag":168,"props":1719,"children":1720},{},[1721],{"type":48,"tag":68,"props":1722,"children":1724},{"className":1723},[],[1725],{"type":54,"value":1726},"babel-plugin-react-compiler",{"type":48,"tag":168,"props":1728,"children":1729},{},[1730,1732,1738,1740,1746],{"type":54,"value":1731},"Babel via Rspack loader on ",{"type":48,"tag":68,"props":1733,"children":1735},{"className":1734},[],[1736],{"type":54,"value":1737},".jsx",{"type":54,"value":1739},"\u002F",{"type":48,"tag":68,"props":1741,"children":1743},{"className":1742},[],[1744],{"type":54,"value":1745},".tsx",{"type":54,"value":1747},"; SWC for everything else.",{"type":48,"tag":130,"props":1749,"children":1750},{},[1751,1760],{"type":48,"tag":168,"props":1752,"children":1753},{},[1754],{"type":48,"tag":68,"props":1755,"children":1757},{"className":1756},[],[1758],{"type":54,"value":1759},"zodern:types",{"type":48,"tag":168,"props":1761,"children":1762},{},[1763],{"type":54,"value":1764},"Still compatible. Keep it.",{"type":48,"tag":57,"props":1766,"children":1767},{},[1768],{"type":54,"value":1769},"Plugins acting only on Atmosphere package files can stay. Plugins acting on\napp-folder files (entry folder excluded) must move to Rspack.",{"type":48,"tag":295,"props":1771,"children":1773},{"id":1772},"commonjs-default-import-interop",[1774],{"type":54,"value":1775},"CommonJS default-import interop",{"type":48,"tag":57,"props":1777,"children":1778},{},[1779,1781,1787,1789,1795],{"type":54,"value":1780},"Old Meteor accepted ",{"type":48,"tag":68,"props":1782,"children":1784},{"className":1783},[],[1785],{"type":54,"value":1786},"import x from \"some-cjs-lib\"",{"type":54,"value":1788}," for a ",{"type":48,"tag":68,"props":1790,"children":1792},{"className":1791},[],[1793],{"type":54,"value":1794},"module.exports = ...",{"type":54,"value":1796},"\npackage. Rspack + SWC do not by default. Two options:",{"type":48,"tag":528,"props":1798,"children":1800},{"className":769,"code":1799,"language":771,"meta":533,"style":533},"\u002F\u002F preferred: switch to namespace import\nimport * as x from \"some-cjs-lib\";\n",[1801],{"type":48,"tag":68,"props":1802,"children":1803},{"__ignoreMap":533},[1804,1812],{"type":48,"tag":539,"props":1805,"children":1806},{"class":541,"line":542},[1807],{"type":48,"tag":539,"props":1808,"children":1809},{"style":781},[1810],{"type":54,"value":1811},"\u002F\u002F preferred: switch to namespace import\n",{"type":48,"tag":539,"props":1813,"children":1814},{"class":541,"line":552},[1815,1819,1824,1828,1833,1838,1842,1847,1851],{"type":48,"tag":539,"props":1816,"children":1817},{"style":790},[1818],{"type":54,"value":346},{"type":48,"tag":539,"props":1820,"children":1821},{"style":546},[1822],{"type":54,"value":1823}," *",{"type":48,"tag":539,"props":1825,"children":1826},{"style":790},[1827],{"type":54,"value":825},{"type":48,"tag":539,"props":1829,"children":1830},{"style":795},[1831],{"type":54,"value":1832}," x ",{"type":48,"tag":539,"props":1834,"children":1835},{"style":790},[1836],{"type":54,"value":1837},"from",{"type":48,"tag":539,"props":1839,"children":1840},{"style":546},[1841],{"type":54,"value":631},{"type":48,"tag":539,"props":1843,"children":1844},{"style":634},[1845],{"type":54,"value":1846},"some-cjs-lib",{"type":48,"tag":539,"props":1848,"children":1849},{"style":546},[1850],{"type":54,"value":568},{"type":48,"tag":539,"props":1852,"children":1853},{"style":546},[1854],{"type":54,"value":858},{"type":48,"tag":57,"props":1856,"children":1857},{},[1858,1860,1865],{"type":54,"value":1859},"Or restore interop in ",{"type":48,"tag":68,"props":1861,"children":1863},{"className":1862},[],[1864],{"type":54,"value":448},{"type":54,"value":120},{"type":48,"tag":528,"props":1867,"children":1869},{"className":530,"code":1868,"language":532,"meta":533,"style":533},"{\n  \"module\": {\n    \"type\": \"commonjs\",\n    \"noInterop\": false,\n    \"importInterop\": \"node\"\n  }\n}\n",[1870],{"type":48,"tag":68,"props":1871,"children":1872},{"__ignoreMap":533},[1873,1880,1904,1941,1966,1999,2006],{"type":48,"tag":539,"props":1874,"children":1875},{"class":541,"line":542},[1876],{"type":48,"tag":539,"props":1877,"children":1878},{"style":546},[1879],{"type":54,"value":549},{"type":48,"tag":539,"props":1881,"children":1882},{"class":541,"line":552},[1883,1887,1892,1896,1900],{"type":48,"tag":539,"props":1884,"children":1885},{"style":546},[1886],{"type":54,"value":558},{"type":48,"tag":539,"props":1888,"children":1889},{"style":561},[1890],{"type":54,"value":1891},"module",{"type":48,"tag":539,"props":1893,"children":1894},{"style":546},[1895],{"type":54,"value":568},{"type":48,"tag":539,"props":1897,"children":1898},{"style":546},[1899],{"type":54,"value":120},{"type":48,"tag":539,"props":1901,"children":1902},{"style":546},[1903],{"type":54,"value":577},{"type":48,"tag":539,"props":1905,"children":1906},{"class":541,"line":580},[1907,1911,1916,1920,1924,1928,1933,1937],{"type":48,"tag":539,"props":1908,"children":1909},{"style":546},[1910],{"type":54,"value":586},{"type":48,"tag":539,"props":1912,"children":1913},{"style":589},[1914],{"type":54,"value":1915},"type",{"type":48,"tag":539,"props":1917,"children":1918},{"style":546},[1919],{"type":54,"value":568},{"type":48,"tag":539,"props":1921,"children":1922},{"style":546},[1923],{"type":54,"value":120},{"type":48,"tag":539,"props":1925,"children":1926},{"style":546},[1927],{"type":54,"value":631},{"type":48,"tag":539,"props":1929,"children":1930},{"style":634},[1931],{"type":54,"value":1932},"commonjs",{"type":48,"tag":539,"props":1934,"children":1935},{"style":546},[1936],{"type":54,"value":568},{"type":48,"tag":539,"props":1938,"children":1939},{"style":546},[1940],{"type":54,"value":392},{"type":48,"tag":539,"props":1942,"children":1943},{"class":541,"line":20},[1944,1948,1953,1957,1961],{"type":48,"tag":539,"props":1945,"children":1946},{"style":546},[1947],{"type":54,"value":586},{"type":48,"tag":539,"props":1949,"children":1950},{"style":589},[1951],{"type":54,"value":1952},"noInterop",{"type":48,"tag":539,"props":1954,"children":1955},{"style":546},[1956],{"type":54,"value":568},{"type":48,"tag":539,"props":1958,"children":1959},{"style":546},[1960],{"type":54,"value":120},{"type":48,"tag":539,"props":1962,"children":1963},{"style":546},[1964],{"type":54,"value":1965}," false,\n",{"type":48,"tag":539,"props":1967,"children":1968},{"class":541,"line":648},[1969,1973,1978,1982,1986,1990,1995],{"type":48,"tag":539,"props":1970,"children":1971},{"style":546},[1972],{"type":54,"value":586},{"type":48,"tag":539,"props":1974,"children":1975},{"style":589},[1976],{"type":54,"value":1977},"importInterop",{"type":48,"tag":539,"props":1979,"children":1980},{"style":546},[1981],{"type":54,"value":568},{"type":48,"tag":539,"props":1983,"children":1984},{"style":546},[1985],{"type":54,"value":120},{"type":48,"tag":539,"props":1987,"children":1988},{"style":546},[1989],{"type":54,"value":631},{"type":48,"tag":539,"props":1991,"children":1992},{"style":634},[1993],{"type":54,"value":1994},"node",{"type":48,"tag":539,"props":1996,"children":1997},{"style":546},[1998],{"type":54,"value":680},{"type":48,"tag":539,"props":2000,"children":2001},{"class":541,"line":683},[2002],{"type":48,"tag":539,"props":2003,"children":2004},{"style":546},[2005],{"type":54,"value":732},{"type":48,"tag":539,"props":2007,"children":2008},{"class":541,"line":692},[2009],{"type":48,"tag":539,"props":2010,"children":2011},{"style":546},[2012],{"type":54,"value":741},{"type":48,"tag":57,"props":2014,"children":2015},{},[2016],{"type":54,"value":2017},"This emits CommonJS, defeating tree-shaking and static analysis app-wide.\nMigrate imports instead unless you cannot.",{"type":48,"tag":295,"props":2019,"children":2021},{"id":2020},"ci-and-docker",[2022],{"type":54,"value":2023},"CI and Docker",{"type":48,"tag":57,"props":2025,"children":2026},{},[2027],{"type":54,"value":2028},"After upgrading Meteor locally, the required npm bumps must be committed.\nIf they are not, CI\u002FDocker builds fail with:",{"type":48,"tag":528,"props":2030,"children":2034},{"className":2031,"code":2033,"language":54,"meta":533},[2032],"language-text","Could not find rspack.config.js, rspack.config.ts, rspack.config.mjs, or rspack.config.cjs\n",[2035],{"type":48,"tag":68,"props":2036,"children":2037},{"__ignoreMap":533},[2038],{"type":54,"value":2033},{"type":48,"tag":57,"props":2040,"children":2041},{},[2042],{"type":54,"value":2043},"Preferred reproducible flow:",{"type":48,"tag":302,"props":2045,"children":2046},{},[2047,2058,2070],{"type":48,"tag":306,"props":2048,"children":2049},{},[2050,2051,2056],{"type":54,"value":496},{"type":48,"tag":68,"props":2052,"children":2054},{"className":2053},[],[2055],{"type":54,"value":291},{"type":54,"value":2057}," locally after changing the Meteor release.",{"type":48,"tag":306,"props":2059,"children":2060},{},[2061,2063,2068],{"type":54,"value":2062},"Commit ",{"type":48,"tag":68,"props":2064,"children":2066},{"className":2065},[],[2067],{"type":54,"value":283},{"type":54,"value":2069}," and the lockfile.",{"type":48,"tag":306,"props":2071,"children":2072},{},[2073,2074,2080,2082,2088],{"type":54,"value":496},{"type":48,"tag":68,"props":2075,"children":2077},{"className":2076},[],[2078],{"type":54,"value":2079},"meteor npm ci",{"type":54,"value":2081}," followed by ",{"type":48,"tag":68,"props":2083,"children":2085},{"className":2084},[],[2086],{"type":54,"value":2087},"meteor build",{"type":54,"value":2089}," in CI.",{"type":48,"tag":57,"props":2091,"children":2092},{},[2093,2095,2101],{"type":54,"value":2094},"See ",{"type":48,"tag":68,"props":2096,"children":2098},{"className":2097},[],[2099],{"type":54,"value":2100},"references\u002Ftroubleshooting.md",{"type":54,"value":2102}," for the recovery-only Docker fallback when\na pipeline intentionally repairs missing npm bumps during the build.",{"type":48,"tag":295,"props":2104,"children":2106},{"id":2105},"anti-patterns",[2107],{"type":54,"value":2108},"Anti-patterns",{"type":48,"tag":2110,"props":2111,"children":2112},"ul",{},[2113,2126,2138,2167],{"type":48,"tag":306,"props":2114,"children":2115},{},[2116,2118,2124],{"type":54,"value":2117},"Add Rspack before fixing Babel fallbacks. Find them with\n",{"type":48,"tag":68,"props":2119,"children":2121},{"className":2120},[],[2122],{"type":54,"value":2123},"\"meteor\": { \"modern\": { \"transpiler\": { \"verbose\": true } } }",{"type":54,"value":2125}," and fix\nthem while still on the optimization-only stack.",{"type":48,"tag":306,"props":2127,"children":2128},{},[2129,2131,2136],{"type":54,"value":2130},"Restore CJS interop globally in ",{"type":48,"tag":68,"props":2132,"children":2134},{"className":2133},[],[2135],{"type":54,"value":448},{"type":54,"value":2137}," to avoid migrating a handful of\nimports. Trades real bundle-size wins for short-term convenience.",{"type":48,"tag":306,"props":2139,"children":2140},{},[2141,2142,2147,2148,2153,2154,2159,2160,2165],{"type":54,"value":2062},{"type":48,"tag":68,"props":2143,"children":2145},{"className":2144},[],[2146],{"type":54,"value":1315},{"type":54,"value":277},{"type":48,"tag":68,"props":2149,"children":2151},{"className":2150},[],[2152],{"type":54,"value":1322},{"type":54,"value":277},{"type":48,"tag":68,"props":2155,"children":2157},{"className":2156},[],[2158],{"type":54,"value":1329},{"type":54,"value":392},{"type":48,"tag":68,"props":2161,"children":2163},{"className":2162},[],[2164],{"type":54,"value":1336},{"type":54,"value":2166},". Autogenerated.",{"type":48,"tag":306,"props":2168,"children":2169},{},[2170,2172,2177],{"type":54,"value":2171},"Change the Meteor release without running ",{"type":48,"tag":68,"props":2173,"children":2175},{"className":2174},[],[2176],{"type":54,"value":291},{"type":54,"value":2178}," and\ncommitting its npm dependency changes. A stale lockfile makes clean CI\nbuilds fail or pick an incompatible integration major.",{"type":48,"tag":295,"props":2180,"children":2182},{"id":2181},"see-also",[2183],{"type":54,"value":2184},"See also",{"type":48,"tag":2110,"props":2186,"children":2187},{},[2188,2196,2204,2213,2221,2229,2238],{"type":48,"tag":306,"props":2189,"children":2190},{},[2191],{"type":48,"tag":68,"props":2192,"children":2194},{"className":2193},[],[2195],{"type":54,"value":456},{"type":48,"tag":306,"props":2197,"children":2198},{},[2199],{"type":48,"tag":68,"props":2200,"children":2202},{"className":2201},[],[2203],{"type":54,"value":334},{"type":48,"tag":306,"props":2205,"children":2206},{},[2207],{"type":48,"tag":68,"props":2208,"children":2210},{"className":2209},[],[2211],{"type":54,"value":2212},"references\u002Fvalidation-matrix.md",{"type":48,"tag":306,"props":2214,"children":2215},{},[2216],{"type":48,"tag":68,"props":2217,"children":2219},{"className":2218},[],[2220],{"type":54,"value":420},{"type":48,"tag":306,"props":2222,"children":2223},{},[2224],{"type":48,"tag":68,"props":2225,"children":2227},{"className":2226},[],[2228],{"type":54,"value":2100},{"type":48,"tag":306,"props":2230,"children":2231},{},[2232],{"type":48,"tag":68,"props":2233,"children":2235},{"className":2234},[],[2236],{"type":54,"value":2237},"references\u002Feval-cases.md",{"type":48,"tag":306,"props":2239,"children":2240},{},[2241,2243,2248,2250,2255],{"type":54,"value":2242},"For setup, helpers, and ",{"type":48,"tag":68,"props":2244,"children":2246},{"className":2245},[],[2247],{"type":54,"value":89},{"type":54,"value":2249}," API: ",{"type":48,"tag":68,"props":2251,"children":2253},{"className":2252},[],[2254],{"type":54,"value":81},{"type":54,"value":233},{"type":48,"tag":2257,"props":2258,"children":2259},"style",{},[2260],{"type":54,"value":2261},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":2263,"total":1233},[2264,2281,2295,2306,2320,2337,2351,2361,2376,2388,2401,2416],{"slug":2265,"name":2265,"fn":2266,"description":2267,"org":2268,"tags":2269,"stars":20,"repoUrl":21,"updatedAt":2280},"meteor-accounts","implement authentication in Meteor apps","Use when wiring up authentication in a Meteor 3 app. Triggers on accounts-password, accounts-base, OAuth (Google, Facebook, GitHub, Apple, Twitter, Meetup, Weibo), accounts-2fa, accounts-passwordless, ServiceConfiguration.configurations.upsertAsync, Accounts.createUserAsync, Accounts.setPasswordAsync, Accounts.forgotPassword, Accounts.resetPassword, Accounts.verifyEmail, useHttpOnlyCookies, clientStorage, Meteor.loginWithPasswordAnd2faCode, email verification. Use this skill when the user asks about signups, signins, or asks about token storage vs HttpOnly cookies.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2270,2273,2276,2277],{"name":2271,"slug":2272,"type":15},"Auth","auth",{"name":2274,"slug":2275,"type":15},"Authentication","authentication",{"name":9,"slug":8,"type":15},{"name":2278,"slug":2279,"type":15},"OAuth","oauth","2026-08-28T15:08:40.058032",{"slug":2282,"name":2282,"fn":2283,"description":2284,"org":2285,"tags":2286,"stars":20,"repoUrl":21,"updatedAt":2294},"meteor-blaze","build and debug Meteor Blaze interfaces","Use when building or debugging Blaze interfaces in Meteor 3: meteor create --blaze, Spacebars templates, Template helpers and events, lifecycle hooks, Tracker, ReactiveVar or ReactiveDict, template subscriptions, Promise helpers, #let async states, Template.dynamic, Blaze.render, and blaze-hot HMR with the Meteor bundler. Triggers on stale async helper results, lost reactivity after await, data-context lookup surprises, duplicate DOM integrations after HMR, Rspack full reloads, or raw HTML in triple braces. Use this skill when the user asks about reusable Blaze components, current Blaze packages, Rspack entry imports, or testing Blaze templates. For Meteor 2 to 3 upgrades, use migrate-to-meteor-3 instead.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2287,2290,2291],{"name":2288,"slug":2289,"type":15},"Frontend","frontend",{"name":9,"slug":8,"type":15},{"name":2292,"slug":2293,"type":15},"Web Development","web-development","2026-08-28T15:09:37.601349",{"slug":2296,"name":2296,"fn":2297,"description":2298,"org":2299,"tags":2300,"stars":20,"repoUrl":21,"updatedAt":2305},"meteor-community-packages","manage Meteor community packages","Use when choosing, evaluating, adopting, configuring, or debugging a package from Meteor's documented community catalog, or moving from a community package to a promoted core package such as roles. Triggers on community package recommendations, Atmosphere vs npm selection, Packosphere maintenance checks, jam:* helpers, Meteor.publish.once, Meteor.publish.stream, meteor-rpc, Wormhole, cluster, and mail-preview. Use this skill when the user asks which maintained package fits or how its documented integration works. Route Meteor 2-to-3 package failures to migrate-to-meteor-3 and underlying core API design to its owning skill.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2301,2304],{"name":2302,"slug":2303,"type":15},"Engineering","engineering",{"name":9,"slug":8,"type":15},"2026-08-28T15:08:45.28079",{"slug":2307,"name":2307,"fn":2308,"description":2309,"org":2310,"tags":2311,"stars":20,"repoUrl":21,"updatedAt":2319},"meteor-debugging","diagnose failures in Meteor 3 applications","Use when diagnosing an unexplained failure in a Meteor 3 application before the failing layer or fix is known. Triggers on server crashes, client-only errors, stuck subscriptions, DDP or WebSocket disconnects, Minimongo\u002Fserver data mismatches, hanging or flaky tests, slow builds, --inspect, console.log, .only, Playwright traces, or requests to debug a Meteor app. Use this skill when evidence must distinguish Meteor tool, server, client, data, test, browser, mobile, or production boundaries. For test setup and authoring use meteor-testing; after confirming a domain cause, hand the repair to the owning skill.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2312,2315,2316],{"name":2313,"slug":2314,"type":15},"Debugging","debugging",{"name":9,"slug":8,"type":15},{"name":2317,"slug":2318,"type":15},"WebSockets","websockets","2026-08-28T15:08:40.430401",{"slug":2321,"name":2321,"fn":2322,"description":2323,"org":2324,"tags":2325,"stars":20,"repoUrl":21,"updatedAt":2336},"meteor-deployment","deploy Meteor 3 applications","Use when deploying a Meteor 3 application. Triggers on meteor build, meteor deploy, Galaxy Push to Deploy, Galaxy Mode, Repository Mode, DEPLOY_HOSTNAME, Docker, Kubernetes, settings.json, METEOR_SETTINGS, MONGO_URL, MONGO_OPLOG_URL, ROOT_URL, PORT, HTTP_FORWARDED_COUNT, NODE_OPTIONS, health checks, pre-deploy commands, hot code push, --architecture os.linux.x86_64, --server-only, or a deployed Node.js version mismatch. Use this skill when the user asks about shipping the app, asks about production config, or asks about containerizing.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2326,2329,2332,2335],{"name":2327,"slug":2328,"type":15},"Deployment","deployment",{"name":2330,"slug":2331,"type":15},"Docker","docker",{"name":2333,"slug":2334,"type":15},"Kubernetes","kubernetes",{"name":9,"slug":8,"type":15},"2026-08-28T15:08:44.881769",{"slug":2338,"name":2338,"fn":2339,"description":2340,"org":2341,"tags":2342,"stars":20,"repoUrl":21,"updatedAt":2350},"meteor-methods","author and debug Meteor methods","Use when authoring or debugging Meteor methods (Meteor.methods, Meteor.call, Meteor.callAsync). Triggers on argument validation with check(), optimistic UI stubs, latency compensation, Meteor.Error handling, and DDPRateLimiter. Use this skill when the user asks about server-side mutation, asks about rate limiting RPC, or asks about wrapping a method with auth checks.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2343,2346,2349],{"name":2344,"slug":2345,"type":15},"API Development","api-development",{"name":2347,"slug":2348,"type":15},"Backend","backend",{"name":9,"slug":8,"type":15},"2026-08-28T15:09:38.691128",{"slug":81,"name":81,"fn":2352,"description":2353,"org":2354,"tags":2355,"stars":20,"repoUrl":21,"updatedAt":2360},"configure Meteor 3 modern build stacks","Use when configuring or tuning the Meteor 3 modern build stack: SWC transpiler, SWC-based minifier, modern @parcel\u002Fwatcher, web-arch skipping in development, .meteorignore, and the Rspack bundler integration via the rspack Atmosphere package. Triggers on package.json \"meteor\": { \"modern\": true }, .swcrc, swc.config.js, [Transpiler] Used Babel Fallback logs, rspack.config.js, rspack.config.ts, defineConfig from @meteorjs\u002Frspack, Meteor.compileWith* helpers, Meteor.extendConfig, Meteor.extendSwcConfig vs Meteor.replaceSwcConfig, Meteor.splitVendorChunk, Meteor.persistDevFiles, Meteor.disablePlugins, Meteor.enablePortableBuild, HtmlRspackPlugin customization, RSPACK_DEVSERVER_PORT, TOOL_NODE_FLAGS for OOM, modern\u002Flegacy archs. Use this skill when the user asks about enabling the modern build stack, asks about SWC vs Babel in Meteor, asks about Rspack integration setup, or asks about customizing rspack.config.js. For converting an existing app's code to be Rspack-compatible, use migrate-to-rspack instead.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2356,2358,2359],{"name":2357,"slug":1418,"type":15},"Build",{"name":9,"slug":8,"type":15},{"name":13,"slug":14,"type":15},"2026-08-28T15:09:42.877439",{"slug":2362,"name":2362,"fn":2363,"description":2364,"org":2365,"tags":2366,"stars":20,"repoUrl":21,"updatedAt":2375},"meteor-mongo-minimongo","author and debug Meteor MongoDB queries","Use when authoring or debugging Mongo queries in Meteor 3. Triggers on Mongo.Collection, find\u002FfindOne, server async vs client Minimongo sync, oplog vs change streams, indexes, selectors, modifiers, projections. Use this skill when the user asks about Mongo on the server or asks about Minimongo on the client.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2367,2370,2371,2372],{"name":2368,"slug":2369,"type":15},"Database","database",{"name":2313,"slug":2314,"type":15},{"name":9,"slug":8,"type":15},{"name":2373,"slug":2374,"type":15},"MongoDB","mongodb","2026-08-28T15:08:44.473981",{"slug":2377,"name":2377,"fn":2378,"description":2379,"org":2380,"tags":2381,"stars":20,"repoUrl":21,"updatedAt":2387},"meteor-pubsub","author and debug Meteor publications","Use when authoring or debugging Meteor publications and subscriptions (Meteor.publish, Meteor.subscribe). Triggers on publication strategies (SERVER_MERGE, NO_MERGE, NO_MERGE_NO_HISTORY), the low-level publish API (added\u002Fchanged\u002Fremoved), cursor authorization, reactive joins, leaked documents. Use this skill when the user asks about pub\u002Fsub or asks about reactive data fetching.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2382,2383,2384],{"name":2347,"slug":2348,"type":15},{"name":9,"slug":8,"type":15},{"name":2385,"slug":2386,"type":15},"Real-time","real-time","2026-08-28T15:09:37.97396",{"slug":2389,"name":2389,"fn":2390,"description":2391,"org":2392,"tags":2393,"stars":20,"repoUrl":21,"updatedAt":2400},"meteor-react","build and debug Meteor React interfaces","Use when building or debugging React interfaces in Meteor 3: meteor create --react, createRoot, JSX or TSX entry points, Rspack React detection, Fast Refresh, react-meteor-data, useTracker, useSubscribe, useFind, withTracker, Suspense, and Tracker.withComputation. Triggers on isLoading being treated as a boolean, useFind receiving fetch(), stale closure inputs, duplicate tracker side effects, unstable Suspense keys, lost reactivity after await, state reset after refresh, or React tests leaking computations. Use this skill when the user asks about a React skeleton, React-specific rspack.config rules, reactive data hooks, or classic versus Suspense integration. Route general bundler configuration to meteor-modern-build-stack and Meteor 2 upgrades to migrate-to-meteor-3.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2394,2395,2396,2399],{"name":2288,"slug":2289,"type":15},{"name":9,"slug":8,"type":15},{"name":2397,"slug":2398,"type":15},"React","react",{"name":2292,"slug":2293,"type":15},"2026-08-28T15:09:37.193947",{"slug":2402,"name":2402,"fn":2403,"description":2404,"org":2405,"tags":2406,"stars":20,"repoUrl":21,"updatedAt":2415},"meteor-security","audit and harden Meteor 3 applications","Use when auditing or hardening a Meteor 3 application. Triggers on missing check() on method arguments, missing this.userId guards on publications, browser-policy CSP, DDPRateLimiter rules, oauth-encryption via Accounts.config oauthSecretKey, audit-argument-checks, allow\u002Fdeny legacy patterns, BrowserPolicy.content.disallowInlineScripts, BrowserPolicy.framing.disallow. Use this skill when the user asks about hardening, asks about a security review, or asks about CSP for a third-party script (Stripe, Google Maps, fonts).\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2407,2408,2411,2412],{"name":2271,"slug":2272,"type":15},{"name":2409,"slug":2410,"type":15},"Code Analysis","code-analysis",{"name":9,"slug":8,"type":15},{"name":2413,"slug":2414,"type":15},"Security","security","2026-08-28T15:09:32.604319",{"slug":2417,"name":2417,"fn":2418,"description":2419,"org":2420,"tags":2421,"stars":20,"repoUrl":21,"updatedAt":2429},"meteor-testing","write and repair Meteor test harnesses","Use when setting up, designing, writing, or repairing tests and test harnesses in a Meteor 3 app. Triggers on meteortesting:mocha, --driver-package, TEST_WATCH, TEST_BROWSER_DRIVER, MOCHA_GREP, meteor.testModule, focused tests, .only, Meteor.server.method_handlers, Meteor.server.publish_handlers, DDP.connect, --full-app integration mode, sinon, async test signatures, Playwright\u002FCypress E2E. Use this skill when the user asks about test runners, asks about testing publications, or asks about Jest vs Mocha in Meteor. For a failing, hanging, or flaky test whose failing layer or root cause is unknown, use meteor-debugging before changing the test or app.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2422,2423,2426],{"name":9,"slug":8,"type":15},{"name":2424,"slug":2425,"type":15},"QA","qa",{"name":2427,"slug":2428,"type":15},"Testing","testing","2026-08-28T15:09:38.330724",{"items":2431,"total":1233},[2432,2439,2445,2450,2456,2463,2469],{"slug":2265,"name":2265,"fn":2266,"description":2267,"org":2433,"tags":2434,"stars":20,"repoUrl":21,"updatedAt":2280},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2435,2436,2437,2438],{"name":2271,"slug":2272,"type":15},{"name":2274,"slug":2275,"type":15},{"name":9,"slug":8,"type":15},{"name":2278,"slug":2279,"type":15},{"slug":2282,"name":2282,"fn":2283,"description":2284,"org":2440,"tags":2441,"stars":20,"repoUrl":21,"updatedAt":2294},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2442,2443,2444],{"name":2288,"slug":2289,"type":15},{"name":9,"slug":8,"type":15},{"name":2292,"slug":2293,"type":15},{"slug":2296,"name":2296,"fn":2297,"description":2298,"org":2446,"tags":2447,"stars":20,"repoUrl":21,"updatedAt":2305},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2448,2449],{"name":2302,"slug":2303,"type":15},{"name":9,"slug":8,"type":15},{"slug":2307,"name":2307,"fn":2308,"description":2309,"org":2451,"tags":2452,"stars":20,"repoUrl":21,"updatedAt":2319},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2453,2454,2455],{"name":2313,"slug":2314,"type":15},{"name":9,"slug":8,"type":15},{"name":2317,"slug":2318,"type":15},{"slug":2321,"name":2321,"fn":2322,"description":2323,"org":2457,"tags":2458,"stars":20,"repoUrl":21,"updatedAt":2336},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2459,2460,2461,2462],{"name":2327,"slug":2328,"type":15},{"name":2330,"slug":2331,"type":15},{"name":2333,"slug":2334,"type":15},{"name":9,"slug":8,"type":15},{"slug":2338,"name":2338,"fn":2339,"description":2340,"org":2464,"tags":2465,"stars":20,"repoUrl":21,"updatedAt":2350},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2466,2467,2468],{"name":2344,"slug":2345,"type":15},{"name":2347,"slug":2348,"type":15},{"name":9,"slug":8,"type":15},{"slug":81,"name":81,"fn":2352,"description":2353,"org":2470,"tags":2471,"stars":20,"repoUrl":21,"updatedAt":2360},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2472,2473,2474],{"name":2357,"slug":1418,"type":15},{"name":9,"slug":8,"type":15},{"name":13,"slug":14,"type":15}]