[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-deno-migrate-to-deno":3,"mdc--8ptcvq-key":38,"related-repo-deno-migrate-to-deno":1974,"related-org-deno-migrate-to-deno":2045},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":27,"repoUrl":28,"updatedAt":29,"license":30,"forks":31,"topics":32,"repo":33,"sourceUrl":36,"mdContent":37},"migrate-to-deno","migrate Node.js projects to Deno","Use when moving a Node.js, npm, Yarn, pnpm, or Bun project to Deno, or when adopting Deno incrementally in an existing JavaScript or TypeScript codebase. Covers using Deno as a drop-in package manager, running existing package.json scripts, CommonJS versus ESM, node_modules layout, lockfile migration, permissions, whether to adopt the built-in toolchain, and per-tool command equivalents.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"deno","Deno","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fdeno.png","denoland",[13,15,18,21,24],{"name":9,"slug":8,"type":14},"tag",{"name":16,"slug":17,"type":14},"Node.js","node-js",{"name":19,"slug":20,"type":14},"TypeScript","typescript",{"name":22,"slug":23,"type":14},"JavaScript","javascript",{"name":25,"slug":26,"type":14},"Migration","migration",89,"https:\u002F\u002Fgithub.com\u002Fdenoland\u002Fskills","2026-07-31T06:23:32.78688","MIT",8,[],{"repoUrl":28,"stars":27,"forks":31,"topics":34,"description":35},[],"Modern Deno skills for AI coding assistants. Covers Deno, JSR imports, Fresh, Deno Deploy, and best practices.","https:\u002F\u002Fgithub.com\u002Fdenoland\u002Fskills\u002Ftree\u002FHEAD\u002Fskills\u002Fmigrate-to-deno","---\nname: migrate-to-deno\ndescription: Use when moving a Node.js, npm, Yarn, pnpm, or Bun project to Deno, or when adopting Deno incrementally in an existing JavaScript or TypeScript codebase. Covers using Deno as a drop-in package manager, running existing package.json scripts, CommonJS versus ESM, node_modules layout, lockfile migration, permissions, whether to adopt the built-in toolchain, and per-tool command equivalents.\nlicense: MIT\nmetadata:\n  author: denoland\n  version: \"1.0\"\n---\n\n# Migrating to Deno\n\nRequires Deno 2.9 or later. For general Deno usage once migrated, see the `deno`\nskill.\n\n## Most Node projects already run under Deno\n\nDeno reads an existing `package.json`, resolves the same npm packages, writes a\nreal `node_modules`, runs the same scripts, and supports `node:` built-ins.\nTypeScript runs with no build step.\n\nThere is usually **no code to change** — only which binary you invoke. Don't\nstart by rewriting imports to `jsr:`, swapping dependencies for Deno-specific\nones, or restructuring directories. Proposing that is the most common way this\ngoes wrong.\n\n## Migrate in rungs\n\nEach rung is independently useful and reversible. Stop wherever suits the\nproject; plenty of teams stop at rung 1.\n\n### Rung 1 — Deno as the package manager only\n\n```bash\ndeno install\n```\n\nReads `package.json`, resolves the same dependencies, writes `node_modules`, and\ncreates `deno.lock` — seeded from any existing `package-lock.json`, `yarn.lock`,\n`bun.lock`, or pnpm lockfile, so pins and integrity hashes carry over instead of\ndrifting.\n\nThe app still runs under `node`; teammates are unaffected. Commit `deno.lock`\nonce verified. **To back out:** delete `deno.lock` and `node_modules`, then\n`npm install`.\n\n### Rung 2 — Run it with Deno\n\n```bash\ndeno run -A main.js      # or: deno -A main.js\ndeno task build          # runs scripts.build from package.json\n```\n\nUse `-A` here. The goal is confirming the program works, not designing a\npermission policy — changing both at once makes failures ambiguous.\n\n### Rung 3 — Tighten permissions\n\nReplace `-A` with the narrowest set that works: run it, read what it asks for,\ngrant exactly that.\n\n```bash\ndeno run --allow-net=api.example.com --allow-read=.\u002Fconfig --allow-env=PORT main.js\n```\n\nThis buys something Node cannot offer, and is worth doing before deploying.\n\n### Rung 4 — Optionally, adopt the built-in toolchain\n\n`deno fmt` for prettier, `deno lint` for eslint, `deno test` for jest or vitest,\n`deno check` for tsc, `deno watch` for nodemon, `deno compile` for pkg.\n\n**Optional, and usually not worth it for an existing project.** These are not\ndrop-in replacements; parity is incomplete, so this is a real migration, not a\nconfig change. A project happy with prettier, eslint, and vitest should keep\nthem and use Deno as runtime and package manager only. Prefer the built-in tools\nfor new projects. If you do move an existing one, go a tool at a time.\n\n## Command equivalents\n\n| Task          | npm                 | Yarn                        | pnpm                       | Bun                             | Deno              |\n| ------------- | ------------------- | --------------------------- | -------------------------- | ------------------------------- | ----------------- |\n| Install all   | `npm install`       | `yarn install`              | `pnpm install`             | `bun install`                   | `deno install`    |\n| Add           | `npm i \u003Cp>`         | `yarn add \u003Cp>`              | `pnpm add \u003Cp>`             | `bun add \u003Cp>`                   | `deno add \u003Cp>`    |\n| Add dev       | `npm i -D \u003Cp>`      | `yarn add -D \u003Cp>`           | `pnpm add -D \u003Cp>`          | `bun add -d \u003Cp>`                | `deno add -D \u003Cp>` |\n| Remove        | `npm uninstall \u003Cp>` | `yarn remove \u003Cp>`           | `pnpm remove \u003Cp>`          | `bun remove \u003Cp>`                | `deno remove \u003Cp>` |\n| CI install    | `npm ci`            | `yarn install --immutable`† | `pnpm i --frozen-lockfile` | `bun install --frozen-lockfile` | `deno ci`         |\n| Run script    | `npm run \u003Cs>`       | `yarn \u003Cs>`                  | `pnpm \u003Cs>`                 | `bun run \u003Cs>`                   | `deno task \u003Cs>`   |\n| Run binary    | `npx \u003Cp>`           | `yarn dlx \u003Cp>`              | `pnpm dlx \u003Cp>`             | `bunx \u003Cp>`                      | `dx \u003Cp>`          |\n| Outdated      | `npm outdated`      | `yarn outdated`‡            | `pnpm outdated`            | `bun outdated`                  | `deno outdated`   |\n| Audit         | `npm audit`         | `yarn npm audit`†           | `pnpm audit`               | `bun audit`                     | `deno audit`      |\n| Why           | `npm ls \u003Cp>`        | `yarn why \u003Cp>`              | `pnpm why \u003Cp>`             | `bun why \u003Cp>`                   | `deno why \u003Cp>`    |\n| Run a file    | `node f.js`         |                             |                            | `bun f.ts`                      | `deno f.ts`       |\n| Run TS        | `ts-node f.ts`      |                             |                            | `bun f.ts`                      | `deno f.ts`       |\n| Watch         | `nodemon f.js`      |                             |                            | `bun --watch f.ts`              | `deno watch f.ts` |\n| Format        | prettier            |                             |                            | prettier                        | `deno fmt`        |\n| Lint          | eslint              |                             |                            |                                 | `deno lint`       |\n| Test          | jest, vitest        |                             |                            | `bun test`                      | `deno test`       |\n| Coverage      | nyc, c8             |                             |                            |                                 | `deno coverage`   |\n| Type-check    | `tsc --noEmit`      |                             |                            | `tsc`                           | `deno check`      |\n| Bundle binary | pkg, nexe           |                             |                            | `bun build --compile`           | `deno compile`    |\n\n† Yarn Berry (v2+) spelling. Yarn Classic (v1) uses\n`yarn install --frozen-lockfile` and `yarn audit`.\n\n‡ Yarn Classic only — Berry removed `yarn outdated`.\n\n`dx` is a separate binary installed alongside Deno, and an alias for `deno x`.\nIt does not appear in the top-level `deno --help` output. Like `npx`, it runs\nthe package with the sandbox disabled.\n\n## The four things that actually break\n\n### `Requires net access to \"...\"` (or read, env, run)\n\nDeno grants nothing by default. Add that specific permission, or `-A` while\nstill establishing the program works at all.\n\n### `ReferenceError: require is not defined`\n\nA file containing CommonJS is being parsed as ESM. `.cjs` is always CommonJS,\n`.mjs` always ESM; `.js` and `.ts` follow `\"type\"` in the nearest\n`package.json`. For a CommonJS project, set `\"type\": \"commonjs\"`.\n\n### A dependency is broken, or `postinstall` never ran\n\nLifecycle scripts don't run by default. Native addons notice immediately.\nApprovals are recorded in the config file, so this is one-time:\n\n```bash\ndeno approve-scripts                              # interactive picker\ndeno install --allow-scripts=npm:better-sqlite3   # or name them directly\n```\n\n### A tool cannot find files inside `node_modules`\n\nDeno's layout is pnpm-style: real files in `node_modules\u002F.deno\u002F`, exposed via\nsymlinks. Tools assuming npm's flat hoisted tree need:\n\n```json\n{ \"nodeModulesLinker\": \"hoisted\" }\n```\n\n## What has no Deno equivalent\n\nSay so rather than improvising a workaround that won't hold:\n\n- **Yarn Plug'n'Play.** Deno creates a real `node_modules`; `.pnp.cjs` is unused\n  and `.yarnrc.yml` resolver settings don't transfer.\n- **`yarn patch` \u002F pnpm patched dependencies.** Vendor or fork.\n- **`overrides` \u002F `resolutions`.** Pin via an import map entry instead.\n- **Registry and resolver tuning** in `.npmrc` \u002F `.yarnrc.yml`.\n- **Bun build features** — macros, HTMLRewriter, HTML entrypoints.\n\n## Per-tool details\n\n- `references\u002FFROM_NPM.md` — lockfile seeding, `node_modules` layout, overrides\n- `references\u002FFROM_YARN.md` — Plug'n'Play, Berry vs Classic, workspaces\n- `references\u002FFROM_PNPM.md` — `pnpm-workspace.yaml`, `catalog:`, patches\n- `references\u002FFROM_BUN.md` — Bun API translation, `bunfig.toml`\n- `references\u002FNODE_APIS.md` — `node:` built-ins, `DENO_COMPAT`, CJS\u002FESM\n\n## Further reading\n\n- \u003Chttps:\u002F\u002Fdocs.deno.com\u002Fruntime\u002Fmigrate\u002F> — official migration guides\n- \u003Chttps:\u002F\u002Fdocs.deno.com\u002Fruntime\u002Ffundamentals\u002Fnode\u002F> — Node and npm\n  compatibility\n- \u003Chttps:\u002F\u002Fdocs.deno.com\u002Fruntime\u002Freference\u002Fnode_apis\u002F> — per-module Node API\n  status\n",{"data":39,"body":42},{"name":4,"description":6,"license":30,"metadata":40},{"author":11,"version":41},"1.0",{"type":43,"children":44},"root",[45,54,68,75,104,125,131,136,143,171,222,271,277,335,348,354,366,404,409,415,466,476,482,1388,1407,1418,1453,1459,1471,1483,1493,1551,1565,1570,1616,1627,1640,1697,1703,1708,1818,1824,1924,1930,1968],{"type":46,"tag":47,"props":48,"children":50},"element","h1",{"id":49},"migrating-to-deno",[51],{"type":52,"value":53},"text","Migrating to Deno",{"type":46,"tag":55,"props":56,"children":57},"p",{},[58,60,66],{"type":52,"value":59},"Requires Deno 2.9 or later. For general Deno usage once migrated, see the ",{"type":46,"tag":61,"props":62,"children":64},"code",{"className":63},[],[65],{"type":52,"value":8},{"type":52,"value":67},"\nskill.",{"type":46,"tag":69,"props":70,"children":72},"h2",{"id":71},"most-node-projects-already-run-under-deno",[73],{"type":52,"value":74},"Most Node projects already run under Deno",{"type":46,"tag":55,"props":76,"children":77},{},[78,80,86,88,94,96,102],{"type":52,"value":79},"Deno reads an existing ",{"type":46,"tag":61,"props":81,"children":83},{"className":82},[],[84],{"type":52,"value":85},"package.json",{"type":52,"value":87},", resolves the same npm packages, writes a\nreal ",{"type":46,"tag":61,"props":89,"children":91},{"className":90},[],[92],{"type":52,"value":93},"node_modules",{"type":52,"value":95},", runs the same scripts, and supports ",{"type":46,"tag":61,"props":97,"children":99},{"className":98},[],[100],{"type":52,"value":101},"node:",{"type":52,"value":103}," built-ins.\nTypeScript runs with no build step.",{"type":46,"tag":55,"props":105,"children":106},{},[107,109,115,117,123],{"type":52,"value":108},"There is usually ",{"type":46,"tag":110,"props":111,"children":112},"strong",{},[113],{"type":52,"value":114},"no code to change",{"type":52,"value":116}," — only which binary you invoke. Don't\nstart by rewriting imports to ",{"type":46,"tag":61,"props":118,"children":120},{"className":119},[],[121],{"type":52,"value":122},"jsr:",{"type":52,"value":124},", swapping dependencies for Deno-specific\nones, or restructuring directories. Proposing that is the most common way this\ngoes wrong.",{"type":46,"tag":69,"props":126,"children":128},{"id":127},"migrate-in-rungs",[129],{"type":52,"value":130},"Migrate in rungs",{"type":46,"tag":55,"props":132,"children":133},{},[134],{"type":52,"value":135},"Each rung is independently useful and reversible. Stop wherever suits the\nproject; plenty of teams stop at rung 1.",{"type":46,"tag":137,"props":138,"children":140},"h3",{"id":139},"rung-1-deno-as-the-package-manager-only",[141],{"type":52,"value":142},"Rung 1 — Deno as the package manager only",{"type":46,"tag":144,"props":145,"children":150},"pre",{"className":146,"code":147,"language":148,"meta":149,"style":149},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","deno install\n","bash","",[151],{"type":46,"tag":61,"props":152,"children":153},{"__ignoreMap":149},[154],{"type":46,"tag":155,"props":156,"children":159},"span",{"class":157,"line":158},"line",1,[160,165],{"type":46,"tag":155,"props":161,"children":163},{"style":162},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[164],{"type":52,"value":8},{"type":46,"tag":155,"props":166,"children":168},{"style":167},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[169],{"type":52,"value":170}," install\n",{"type":46,"tag":55,"props":172,"children":173},{},[174,176,181,183,188,190,196,198,204,206,212,214,220],{"type":52,"value":175},"Reads ",{"type":46,"tag":61,"props":177,"children":179},{"className":178},[],[180],{"type":52,"value":85},{"type":52,"value":182},", resolves the same dependencies, writes ",{"type":46,"tag":61,"props":184,"children":186},{"className":185},[],[187],{"type":52,"value":93},{"type":52,"value":189},", and\ncreates ",{"type":46,"tag":61,"props":191,"children":193},{"className":192},[],[194],{"type":52,"value":195},"deno.lock",{"type":52,"value":197}," — seeded from any existing ",{"type":46,"tag":61,"props":199,"children":201},{"className":200},[],[202],{"type":52,"value":203},"package-lock.json",{"type":52,"value":205},", ",{"type":46,"tag":61,"props":207,"children":209},{"className":208},[],[210],{"type":52,"value":211},"yarn.lock",{"type":52,"value":213},",\n",{"type":46,"tag":61,"props":215,"children":217},{"className":216},[],[218],{"type":52,"value":219},"bun.lock",{"type":52,"value":221},", or pnpm lockfile, so pins and integrity hashes carry over instead of\ndrifting.",{"type":46,"tag":55,"props":223,"children":224},{},[225,227,233,235,240,242,247,249,254,256,261,263,269],{"type":52,"value":226},"The app still runs under ",{"type":46,"tag":61,"props":228,"children":230},{"className":229},[],[231],{"type":52,"value":232},"node",{"type":52,"value":234},"; teammates are unaffected. Commit ",{"type":46,"tag":61,"props":236,"children":238},{"className":237},[],[239],{"type":52,"value":195},{"type":52,"value":241},"\nonce verified. ",{"type":46,"tag":110,"props":243,"children":244},{},[245],{"type":52,"value":246},"To back out:",{"type":52,"value":248}," delete ",{"type":46,"tag":61,"props":250,"children":252},{"className":251},[],[253],{"type":52,"value":195},{"type":52,"value":255}," and ",{"type":46,"tag":61,"props":257,"children":259},{"className":258},[],[260],{"type":52,"value":93},{"type":52,"value":262},", then\n",{"type":46,"tag":61,"props":264,"children":266},{"className":265},[],[267],{"type":52,"value":268},"npm install",{"type":52,"value":270},".",{"type":46,"tag":137,"props":272,"children":274},{"id":273},"rung-2-run-it-with-deno",[275],{"type":52,"value":276},"Rung 2 — Run it with Deno",{"type":46,"tag":144,"props":278,"children":280},{"className":146,"code":279,"language":148,"meta":149,"style":149},"deno run -A main.js      # or: deno -A main.js\ndeno task build          # runs scripts.build from package.json\n",[281],{"type":46,"tag":61,"props":282,"children":283},{"__ignoreMap":149},[284,312],{"type":46,"tag":155,"props":285,"children":286},{"class":157,"line":158},[287,291,296,301,306],{"type":46,"tag":155,"props":288,"children":289},{"style":162},[290],{"type":52,"value":8},{"type":46,"tag":155,"props":292,"children":293},{"style":167},[294],{"type":52,"value":295}," run",{"type":46,"tag":155,"props":297,"children":298},{"style":167},[299],{"type":52,"value":300}," -A",{"type":46,"tag":155,"props":302,"children":303},{"style":167},[304],{"type":52,"value":305}," main.js",{"type":46,"tag":155,"props":307,"children":309},{"style":308},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[310],{"type":52,"value":311},"      # or: deno -A main.js\n",{"type":46,"tag":155,"props":313,"children":315},{"class":157,"line":314},2,[316,320,325,330],{"type":46,"tag":155,"props":317,"children":318},{"style":162},[319],{"type":52,"value":8},{"type":46,"tag":155,"props":321,"children":322},{"style":167},[323],{"type":52,"value":324}," task",{"type":46,"tag":155,"props":326,"children":327},{"style":167},[328],{"type":52,"value":329}," build",{"type":46,"tag":155,"props":331,"children":332},{"style":308},[333],{"type":52,"value":334},"          # runs scripts.build from package.json\n",{"type":46,"tag":55,"props":336,"children":337},{},[338,340,346],{"type":52,"value":339},"Use ",{"type":46,"tag":61,"props":341,"children":343},{"className":342},[],[344],{"type":52,"value":345},"-A",{"type":52,"value":347}," here. The goal is confirming the program works, not designing a\npermission policy — changing both at once makes failures ambiguous.",{"type":46,"tag":137,"props":349,"children":351},{"id":350},"rung-3-tighten-permissions",[352],{"type":52,"value":353},"Rung 3 — Tighten permissions",{"type":46,"tag":55,"props":355,"children":356},{},[357,359,364],{"type":52,"value":358},"Replace ",{"type":46,"tag":61,"props":360,"children":362},{"className":361},[],[363],{"type":52,"value":345},{"type":52,"value":365}," with the narrowest set that works: run it, read what it asks for,\ngrant exactly that.",{"type":46,"tag":144,"props":367,"children":369},{"className":146,"code":368,"language":148,"meta":149,"style":149},"deno run --allow-net=api.example.com --allow-read=.\u002Fconfig --allow-env=PORT main.js\n",[370],{"type":46,"tag":61,"props":371,"children":372},{"__ignoreMap":149},[373],{"type":46,"tag":155,"props":374,"children":375},{"class":157,"line":158},[376,380,384,389,394,399],{"type":46,"tag":155,"props":377,"children":378},{"style":162},[379],{"type":52,"value":8},{"type":46,"tag":155,"props":381,"children":382},{"style":167},[383],{"type":52,"value":295},{"type":46,"tag":155,"props":385,"children":386},{"style":167},[387],{"type":52,"value":388}," --allow-net=api.example.com",{"type":46,"tag":155,"props":390,"children":391},{"style":167},[392],{"type":52,"value":393}," --allow-read=.\u002Fconfig",{"type":46,"tag":155,"props":395,"children":396},{"style":167},[397],{"type":52,"value":398}," --allow-env=PORT",{"type":46,"tag":155,"props":400,"children":401},{"style":167},[402],{"type":52,"value":403}," main.js\n",{"type":46,"tag":55,"props":405,"children":406},{},[407],{"type":52,"value":408},"This buys something Node cannot offer, and is worth doing before deploying.",{"type":46,"tag":137,"props":410,"children":412},{"id":411},"rung-4-optionally-adopt-the-built-in-toolchain",[413],{"type":52,"value":414},"Rung 4 — Optionally, adopt the built-in toolchain",{"type":46,"tag":55,"props":416,"children":417},{},[418,424,426,432,434,440,442,448,450,456,458,464],{"type":46,"tag":61,"props":419,"children":421},{"className":420},[],[422],{"type":52,"value":423},"deno fmt",{"type":52,"value":425}," for prettier, ",{"type":46,"tag":61,"props":427,"children":429},{"className":428},[],[430],{"type":52,"value":431},"deno lint",{"type":52,"value":433}," for eslint, ",{"type":46,"tag":61,"props":435,"children":437},{"className":436},[],[438],{"type":52,"value":439},"deno test",{"type":52,"value":441}," for jest or vitest,\n",{"type":46,"tag":61,"props":443,"children":445},{"className":444},[],[446],{"type":52,"value":447},"deno check",{"type":52,"value":449}," for tsc, ",{"type":46,"tag":61,"props":451,"children":453},{"className":452},[],[454],{"type":52,"value":455},"deno watch",{"type":52,"value":457}," for nodemon, ",{"type":46,"tag":61,"props":459,"children":461},{"className":460},[],[462],{"type":52,"value":463},"deno compile",{"type":52,"value":465}," for pkg.",{"type":46,"tag":55,"props":467,"children":468},{},[469,474],{"type":46,"tag":110,"props":470,"children":471},{},[472],{"type":52,"value":473},"Optional, and usually not worth it for an existing project.",{"type":52,"value":475}," These are not\ndrop-in replacements; parity is incomplete, so this is a real migration, not a\nconfig change. A project happy with prettier, eslint, and vitest should keep\nthem and use Deno as runtime and package manager only. Prefer the built-in tools\nfor new projects. If you do move an existing one, go a tool at a time.",{"type":46,"tag":69,"props":477,"children":479},{"id":478},"command-equivalents",[480],{"type":52,"value":481},"Command equivalents",{"type":46,"tag":483,"props":484,"children":485},"table",{},[486,524],{"type":46,"tag":487,"props":488,"children":489},"thead",{},[490],{"type":46,"tag":491,"props":492,"children":493},"tr",{},[494,500,505,510,515,520],{"type":46,"tag":495,"props":496,"children":497},"th",{},[498],{"type":52,"value":499},"Task",{"type":46,"tag":495,"props":501,"children":502},{},[503],{"type":52,"value":504},"npm",{"type":46,"tag":495,"props":506,"children":507},{},[508],{"type":52,"value":509},"Yarn",{"type":46,"tag":495,"props":511,"children":512},{},[513],{"type":52,"value":514},"pnpm",{"type":46,"tag":495,"props":516,"children":517},{},[518],{"type":52,"value":519},"Bun",{"type":46,"tag":495,"props":521,"children":522},{},[523],{"type":52,"value":9},{"type":46,"tag":525,"props":526,"children":527},"tbody",{},[528,581,634,687,740,795,848,901,956,1010,1063,1104,1143,1184,1215,1245,1281,1312,1352],{"type":46,"tag":491,"props":529,"children":530},{},[531,537,545,554,563,572],{"type":46,"tag":532,"props":533,"children":534},"td",{},[535],{"type":52,"value":536},"Install all",{"type":46,"tag":532,"props":538,"children":539},{},[540],{"type":46,"tag":61,"props":541,"children":543},{"className":542},[],[544],{"type":52,"value":268},{"type":46,"tag":532,"props":546,"children":547},{},[548],{"type":46,"tag":61,"props":549,"children":551},{"className":550},[],[552],{"type":52,"value":553},"yarn install",{"type":46,"tag":532,"props":555,"children":556},{},[557],{"type":46,"tag":61,"props":558,"children":560},{"className":559},[],[561],{"type":52,"value":562},"pnpm install",{"type":46,"tag":532,"props":564,"children":565},{},[566],{"type":46,"tag":61,"props":567,"children":569},{"className":568},[],[570],{"type":52,"value":571},"bun install",{"type":46,"tag":532,"props":573,"children":574},{},[575],{"type":46,"tag":61,"props":576,"children":578},{"className":577},[],[579],{"type":52,"value":580},"deno install",{"type":46,"tag":491,"props":582,"children":583},{},[584,589,598,607,616,625],{"type":46,"tag":532,"props":585,"children":586},{},[587],{"type":52,"value":588},"Add",{"type":46,"tag":532,"props":590,"children":591},{},[592],{"type":46,"tag":61,"props":593,"children":595},{"className":594},[],[596],{"type":52,"value":597},"npm i \u003Cp>",{"type":46,"tag":532,"props":599,"children":600},{},[601],{"type":46,"tag":61,"props":602,"children":604},{"className":603},[],[605],{"type":52,"value":606},"yarn add \u003Cp>",{"type":46,"tag":532,"props":608,"children":609},{},[610],{"type":46,"tag":61,"props":611,"children":613},{"className":612},[],[614],{"type":52,"value":615},"pnpm add \u003Cp>",{"type":46,"tag":532,"props":617,"children":618},{},[619],{"type":46,"tag":61,"props":620,"children":622},{"className":621},[],[623],{"type":52,"value":624},"bun add \u003Cp>",{"type":46,"tag":532,"props":626,"children":627},{},[628],{"type":46,"tag":61,"props":629,"children":631},{"className":630},[],[632],{"type":52,"value":633},"deno add \u003Cp>",{"type":46,"tag":491,"props":635,"children":636},{},[637,642,651,660,669,678],{"type":46,"tag":532,"props":638,"children":639},{},[640],{"type":52,"value":641},"Add dev",{"type":46,"tag":532,"props":643,"children":644},{},[645],{"type":46,"tag":61,"props":646,"children":648},{"className":647},[],[649],{"type":52,"value":650},"npm i -D \u003Cp>",{"type":46,"tag":532,"props":652,"children":653},{},[654],{"type":46,"tag":61,"props":655,"children":657},{"className":656},[],[658],{"type":52,"value":659},"yarn add -D \u003Cp>",{"type":46,"tag":532,"props":661,"children":662},{},[663],{"type":46,"tag":61,"props":664,"children":666},{"className":665},[],[667],{"type":52,"value":668},"pnpm add -D \u003Cp>",{"type":46,"tag":532,"props":670,"children":671},{},[672],{"type":46,"tag":61,"props":673,"children":675},{"className":674},[],[676],{"type":52,"value":677},"bun add -d \u003Cp>",{"type":46,"tag":532,"props":679,"children":680},{},[681],{"type":46,"tag":61,"props":682,"children":684},{"className":683},[],[685],{"type":52,"value":686},"deno add -D \u003Cp>",{"type":46,"tag":491,"props":688,"children":689},{},[690,695,704,713,722,731],{"type":46,"tag":532,"props":691,"children":692},{},[693],{"type":52,"value":694},"Remove",{"type":46,"tag":532,"props":696,"children":697},{},[698],{"type":46,"tag":61,"props":699,"children":701},{"className":700},[],[702],{"type":52,"value":703},"npm uninstall \u003Cp>",{"type":46,"tag":532,"props":705,"children":706},{},[707],{"type":46,"tag":61,"props":708,"children":710},{"className":709},[],[711],{"type":52,"value":712},"yarn remove \u003Cp>",{"type":46,"tag":532,"props":714,"children":715},{},[716],{"type":46,"tag":61,"props":717,"children":719},{"className":718},[],[720],{"type":52,"value":721},"pnpm remove \u003Cp>",{"type":46,"tag":532,"props":723,"children":724},{},[725],{"type":46,"tag":61,"props":726,"children":728},{"className":727},[],[729],{"type":52,"value":730},"bun remove \u003Cp>",{"type":46,"tag":532,"props":732,"children":733},{},[734],{"type":46,"tag":61,"props":735,"children":737},{"className":736},[],[738],{"type":52,"value":739},"deno remove \u003Cp>",{"type":46,"tag":491,"props":741,"children":742},{},[743,748,757,768,777,786],{"type":46,"tag":532,"props":744,"children":745},{},[746],{"type":52,"value":747},"CI install",{"type":46,"tag":532,"props":749,"children":750},{},[751],{"type":46,"tag":61,"props":752,"children":754},{"className":753},[],[755],{"type":52,"value":756},"npm ci",{"type":46,"tag":532,"props":758,"children":759},{},[760,766],{"type":46,"tag":61,"props":761,"children":763},{"className":762},[],[764],{"type":52,"value":765},"yarn install --immutable",{"type":52,"value":767},"†",{"type":46,"tag":532,"props":769,"children":770},{},[771],{"type":46,"tag":61,"props":772,"children":774},{"className":773},[],[775],{"type":52,"value":776},"pnpm i --frozen-lockfile",{"type":46,"tag":532,"props":778,"children":779},{},[780],{"type":46,"tag":61,"props":781,"children":783},{"className":782},[],[784],{"type":52,"value":785},"bun install --frozen-lockfile",{"type":46,"tag":532,"props":787,"children":788},{},[789],{"type":46,"tag":61,"props":790,"children":792},{"className":791},[],[793],{"type":52,"value":794},"deno ci",{"type":46,"tag":491,"props":796,"children":797},{},[798,803,812,821,830,839],{"type":46,"tag":532,"props":799,"children":800},{},[801],{"type":52,"value":802},"Run script",{"type":46,"tag":532,"props":804,"children":805},{},[806],{"type":46,"tag":61,"props":807,"children":809},{"className":808},[],[810],{"type":52,"value":811},"npm run \u003Cs>",{"type":46,"tag":532,"props":813,"children":814},{},[815],{"type":46,"tag":61,"props":816,"children":818},{"className":817},[],[819],{"type":52,"value":820},"yarn \u003Cs>",{"type":46,"tag":532,"props":822,"children":823},{},[824],{"type":46,"tag":61,"props":825,"children":827},{"className":826},[],[828],{"type":52,"value":829},"pnpm \u003Cs>",{"type":46,"tag":532,"props":831,"children":832},{},[833],{"type":46,"tag":61,"props":834,"children":836},{"className":835},[],[837],{"type":52,"value":838},"bun run \u003Cs>",{"type":46,"tag":532,"props":840,"children":841},{},[842],{"type":46,"tag":61,"props":843,"children":845},{"className":844},[],[846],{"type":52,"value":847},"deno task \u003Cs>",{"type":46,"tag":491,"props":849,"children":850},{},[851,856,865,874,883,892],{"type":46,"tag":532,"props":852,"children":853},{},[854],{"type":52,"value":855},"Run binary",{"type":46,"tag":532,"props":857,"children":858},{},[859],{"type":46,"tag":61,"props":860,"children":862},{"className":861},[],[863],{"type":52,"value":864},"npx \u003Cp>",{"type":46,"tag":532,"props":866,"children":867},{},[868],{"type":46,"tag":61,"props":869,"children":871},{"className":870},[],[872],{"type":52,"value":873},"yarn dlx \u003Cp>",{"type":46,"tag":532,"props":875,"children":876},{},[877],{"type":46,"tag":61,"props":878,"children":880},{"className":879},[],[881],{"type":52,"value":882},"pnpm dlx \u003Cp>",{"type":46,"tag":532,"props":884,"children":885},{},[886],{"type":46,"tag":61,"props":887,"children":889},{"className":888},[],[890],{"type":52,"value":891},"bunx \u003Cp>",{"type":46,"tag":532,"props":893,"children":894},{},[895],{"type":46,"tag":61,"props":896,"children":898},{"className":897},[],[899],{"type":52,"value":900},"dx \u003Cp>",{"type":46,"tag":491,"props":902,"children":903},{},[904,909,918,929,938,947],{"type":46,"tag":532,"props":905,"children":906},{},[907],{"type":52,"value":908},"Outdated",{"type":46,"tag":532,"props":910,"children":911},{},[912],{"type":46,"tag":61,"props":913,"children":915},{"className":914},[],[916],{"type":52,"value":917},"npm outdated",{"type":46,"tag":532,"props":919,"children":920},{},[921,927],{"type":46,"tag":61,"props":922,"children":924},{"className":923},[],[925],{"type":52,"value":926},"yarn outdated",{"type":52,"value":928},"‡",{"type":46,"tag":532,"props":930,"children":931},{},[932],{"type":46,"tag":61,"props":933,"children":935},{"className":934},[],[936],{"type":52,"value":937},"pnpm outdated",{"type":46,"tag":532,"props":939,"children":940},{},[941],{"type":46,"tag":61,"props":942,"children":944},{"className":943},[],[945],{"type":52,"value":946},"bun outdated",{"type":46,"tag":532,"props":948,"children":949},{},[950],{"type":46,"tag":61,"props":951,"children":953},{"className":952},[],[954],{"type":52,"value":955},"deno outdated",{"type":46,"tag":491,"props":957,"children":958},{},[959,964,973,983,992,1001],{"type":46,"tag":532,"props":960,"children":961},{},[962],{"type":52,"value":963},"Audit",{"type":46,"tag":532,"props":965,"children":966},{},[967],{"type":46,"tag":61,"props":968,"children":970},{"className":969},[],[971],{"type":52,"value":972},"npm audit",{"type":46,"tag":532,"props":974,"children":975},{},[976,982],{"type":46,"tag":61,"props":977,"children":979},{"className":978},[],[980],{"type":52,"value":981},"yarn npm audit",{"type":52,"value":767},{"type":46,"tag":532,"props":984,"children":985},{},[986],{"type":46,"tag":61,"props":987,"children":989},{"className":988},[],[990],{"type":52,"value":991},"pnpm audit",{"type":46,"tag":532,"props":993,"children":994},{},[995],{"type":46,"tag":61,"props":996,"children":998},{"className":997},[],[999],{"type":52,"value":1000},"bun audit",{"type":46,"tag":532,"props":1002,"children":1003},{},[1004],{"type":46,"tag":61,"props":1005,"children":1007},{"className":1006},[],[1008],{"type":52,"value":1009},"deno audit",{"type":46,"tag":491,"props":1011,"children":1012},{},[1013,1018,1027,1036,1045,1054],{"type":46,"tag":532,"props":1014,"children":1015},{},[1016],{"type":52,"value":1017},"Why",{"type":46,"tag":532,"props":1019,"children":1020},{},[1021],{"type":46,"tag":61,"props":1022,"children":1024},{"className":1023},[],[1025],{"type":52,"value":1026},"npm ls \u003Cp>",{"type":46,"tag":532,"props":1028,"children":1029},{},[1030],{"type":46,"tag":61,"props":1031,"children":1033},{"className":1032},[],[1034],{"type":52,"value":1035},"yarn why \u003Cp>",{"type":46,"tag":532,"props":1037,"children":1038},{},[1039],{"type":46,"tag":61,"props":1040,"children":1042},{"className":1041},[],[1043],{"type":52,"value":1044},"pnpm why \u003Cp>",{"type":46,"tag":532,"props":1046,"children":1047},{},[1048],{"type":46,"tag":61,"props":1049,"children":1051},{"className":1050},[],[1052],{"type":52,"value":1053},"bun why \u003Cp>",{"type":46,"tag":532,"props":1055,"children":1056},{},[1057],{"type":46,"tag":61,"props":1058,"children":1060},{"className":1059},[],[1061],{"type":52,"value":1062},"deno why \u003Cp>",{"type":46,"tag":491,"props":1064,"children":1065},{},[1066,1071,1080,1083,1086,1095],{"type":46,"tag":532,"props":1067,"children":1068},{},[1069],{"type":52,"value":1070},"Run a file",{"type":46,"tag":532,"props":1072,"children":1073},{},[1074],{"type":46,"tag":61,"props":1075,"children":1077},{"className":1076},[],[1078],{"type":52,"value":1079},"node f.js",{"type":46,"tag":532,"props":1081,"children":1082},{},[],{"type":46,"tag":532,"props":1084,"children":1085},{},[],{"type":46,"tag":532,"props":1087,"children":1088},{},[1089],{"type":46,"tag":61,"props":1090,"children":1092},{"className":1091},[],[1093],{"type":52,"value":1094},"bun f.ts",{"type":46,"tag":532,"props":1096,"children":1097},{},[1098],{"type":46,"tag":61,"props":1099,"children":1101},{"className":1100},[],[1102],{"type":52,"value":1103},"deno f.ts",{"type":46,"tag":491,"props":1105,"children":1106},{},[1107,1112,1121,1124,1127,1135],{"type":46,"tag":532,"props":1108,"children":1109},{},[1110],{"type":52,"value":1111},"Run TS",{"type":46,"tag":532,"props":1113,"children":1114},{},[1115],{"type":46,"tag":61,"props":1116,"children":1118},{"className":1117},[],[1119],{"type":52,"value":1120},"ts-node f.ts",{"type":46,"tag":532,"props":1122,"children":1123},{},[],{"type":46,"tag":532,"props":1125,"children":1126},{},[],{"type":46,"tag":532,"props":1128,"children":1129},{},[1130],{"type":46,"tag":61,"props":1131,"children":1133},{"className":1132},[],[1134],{"type":52,"value":1094},{"type":46,"tag":532,"props":1136,"children":1137},{},[1138],{"type":46,"tag":61,"props":1139,"children":1141},{"className":1140},[],[1142],{"type":52,"value":1103},{"type":46,"tag":491,"props":1144,"children":1145},{},[1146,1151,1160,1163,1166,1175],{"type":46,"tag":532,"props":1147,"children":1148},{},[1149],{"type":52,"value":1150},"Watch",{"type":46,"tag":532,"props":1152,"children":1153},{},[1154],{"type":46,"tag":61,"props":1155,"children":1157},{"className":1156},[],[1158],{"type":52,"value":1159},"nodemon f.js",{"type":46,"tag":532,"props":1161,"children":1162},{},[],{"type":46,"tag":532,"props":1164,"children":1165},{},[],{"type":46,"tag":532,"props":1167,"children":1168},{},[1169],{"type":46,"tag":61,"props":1170,"children":1172},{"className":1171},[],[1173],{"type":52,"value":1174},"bun --watch f.ts",{"type":46,"tag":532,"props":1176,"children":1177},{},[1178],{"type":46,"tag":61,"props":1179,"children":1181},{"className":1180},[],[1182],{"type":52,"value":1183},"deno watch f.ts",{"type":46,"tag":491,"props":1185,"children":1186},{},[1187,1192,1197,1200,1203,1207],{"type":46,"tag":532,"props":1188,"children":1189},{},[1190],{"type":52,"value":1191},"Format",{"type":46,"tag":532,"props":1193,"children":1194},{},[1195],{"type":52,"value":1196},"prettier",{"type":46,"tag":532,"props":1198,"children":1199},{},[],{"type":46,"tag":532,"props":1201,"children":1202},{},[],{"type":46,"tag":532,"props":1204,"children":1205},{},[1206],{"type":52,"value":1196},{"type":46,"tag":532,"props":1208,"children":1209},{},[1210],{"type":46,"tag":61,"props":1211,"children":1213},{"className":1212},[],[1214],{"type":52,"value":423},{"type":46,"tag":491,"props":1216,"children":1217},{},[1218,1223,1228,1231,1234,1237],{"type":46,"tag":532,"props":1219,"children":1220},{},[1221],{"type":52,"value":1222},"Lint",{"type":46,"tag":532,"props":1224,"children":1225},{},[1226],{"type":52,"value":1227},"eslint",{"type":46,"tag":532,"props":1229,"children":1230},{},[],{"type":46,"tag":532,"props":1232,"children":1233},{},[],{"type":46,"tag":532,"props":1235,"children":1236},{},[],{"type":46,"tag":532,"props":1238,"children":1239},{},[1240],{"type":46,"tag":61,"props":1241,"children":1243},{"className":1242},[],[1244],{"type":52,"value":431},{"type":46,"tag":491,"props":1246,"children":1247},{},[1248,1253,1258,1261,1264,1273],{"type":46,"tag":532,"props":1249,"children":1250},{},[1251],{"type":52,"value":1252},"Test",{"type":46,"tag":532,"props":1254,"children":1255},{},[1256],{"type":52,"value":1257},"jest, vitest",{"type":46,"tag":532,"props":1259,"children":1260},{},[],{"type":46,"tag":532,"props":1262,"children":1263},{},[],{"type":46,"tag":532,"props":1265,"children":1266},{},[1267],{"type":46,"tag":61,"props":1268,"children":1270},{"className":1269},[],[1271],{"type":52,"value":1272},"bun test",{"type":46,"tag":532,"props":1274,"children":1275},{},[1276],{"type":46,"tag":61,"props":1277,"children":1279},{"className":1278},[],[1280],{"type":52,"value":439},{"type":46,"tag":491,"props":1282,"children":1283},{},[1284,1289,1294,1297,1300,1303],{"type":46,"tag":532,"props":1285,"children":1286},{},[1287],{"type":52,"value":1288},"Coverage",{"type":46,"tag":532,"props":1290,"children":1291},{},[1292],{"type":52,"value":1293},"nyc, c8",{"type":46,"tag":532,"props":1295,"children":1296},{},[],{"type":46,"tag":532,"props":1298,"children":1299},{},[],{"type":46,"tag":532,"props":1301,"children":1302},{},[],{"type":46,"tag":532,"props":1304,"children":1305},{},[1306],{"type":46,"tag":61,"props":1307,"children":1309},{"className":1308},[],[1310],{"type":52,"value":1311},"deno coverage",{"type":46,"tag":491,"props":1313,"children":1314},{},[1315,1320,1329,1332,1335,1344],{"type":46,"tag":532,"props":1316,"children":1317},{},[1318],{"type":52,"value":1319},"Type-check",{"type":46,"tag":532,"props":1321,"children":1322},{},[1323],{"type":46,"tag":61,"props":1324,"children":1326},{"className":1325},[],[1327],{"type":52,"value":1328},"tsc --noEmit",{"type":46,"tag":532,"props":1330,"children":1331},{},[],{"type":46,"tag":532,"props":1333,"children":1334},{},[],{"type":46,"tag":532,"props":1336,"children":1337},{},[1338],{"type":46,"tag":61,"props":1339,"children":1341},{"className":1340},[],[1342],{"type":52,"value":1343},"tsc",{"type":46,"tag":532,"props":1345,"children":1346},{},[1347],{"type":46,"tag":61,"props":1348,"children":1350},{"className":1349},[],[1351],{"type":52,"value":447},{"type":46,"tag":491,"props":1353,"children":1354},{},[1355,1360,1365,1368,1371,1380],{"type":46,"tag":532,"props":1356,"children":1357},{},[1358],{"type":52,"value":1359},"Bundle binary",{"type":46,"tag":532,"props":1361,"children":1362},{},[1363],{"type":52,"value":1364},"pkg, nexe",{"type":46,"tag":532,"props":1366,"children":1367},{},[],{"type":46,"tag":532,"props":1369,"children":1370},{},[],{"type":46,"tag":532,"props":1372,"children":1373},{},[1374],{"type":46,"tag":61,"props":1375,"children":1377},{"className":1376},[],[1378],{"type":52,"value":1379},"bun build --compile",{"type":46,"tag":532,"props":1381,"children":1382},{},[1383],{"type":46,"tag":61,"props":1384,"children":1386},{"className":1385},[],[1387],{"type":52,"value":463},{"type":46,"tag":55,"props":1389,"children":1390},{},[1391,1393,1399,1400,1406],{"type":52,"value":1392},"† Yarn Berry (v2+) spelling. Yarn Classic (v1) uses\n",{"type":46,"tag":61,"props":1394,"children":1396},{"className":1395},[],[1397],{"type":52,"value":1398},"yarn install --frozen-lockfile",{"type":52,"value":255},{"type":46,"tag":61,"props":1401,"children":1403},{"className":1402},[],[1404],{"type":52,"value":1405},"yarn audit",{"type":52,"value":270},{"type":46,"tag":55,"props":1408,"children":1409},{},[1410,1412,1417],{"type":52,"value":1411},"‡ Yarn Classic only — Berry removed ",{"type":46,"tag":61,"props":1413,"children":1415},{"className":1414},[],[1416],{"type":52,"value":926},{"type":52,"value":270},{"type":46,"tag":55,"props":1419,"children":1420},{},[1421,1427,1429,1435,1437,1443,1445,1451],{"type":46,"tag":61,"props":1422,"children":1424},{"className":1423},[],[1425],{"type":52,"value":1426},"dx",{"type":52,"value":1428}," is a separate binary installed alongside Deno, and an alias for ",{"type":46,"tag":61,"props":1430,"children":1432},{"className":1431},[],[1433],{"type":52,"value":1434},"deno x",{"type":52,"value":1436},".\nIt does not appear in the top-level ",{"type":46,"tag":61,"props":1438,"children":1440},{"className":1439},[],[1441],{"type":52,"value":1442},"deno --help",{"type":52,"value":1444}," output. Like ",{"type":46,"tag":61,"props":1446,"children":1448},{"className":1447},[],[1449],{"type":52,"value":1450},"npx",{"type":52,"value":1452},", it runs\nthe package with the sandbox disabled.",{"type":46,"tag":69,"props":1454,"children":1456},{"id":1455},"the-four-things-that-actually-break",[1457],{"type":52,"value":1458},"The four things that actually break",{"type":46,"tag":137,"props":1460,"children":1462},{"id":1461},"requires-net-access-to-or-read-env-run",[1463,1469],{"type":46,"tag":61,"props":1464,"children":1466},{"className":1465},[],[1467],{"type":52,"value":1468},"Requires net access to \"...\"",{"type":52,"value":1470}," (or read, env, run)",{"type":46,"tag":55,"props":1472,"children":1473},{},[1474,1476,1481],{"type":52,"value":1475},"Deno grants nothing by default. Add that specific permission, or ",{"type":46,"tag":61,"props":1477,"children":1479},{"className":1478},[],[1480],{"type":52,"value":345},{"type":52,"value":1482}," while\nstill establishing the program works at all.",{"type":46,"tag":137,"props":1484,"children":1486},{"id":1485},"referenceerror-require-is-not-defined",[1487],{"type":46,"tag":61,"props":1488,"children":1490},{"className":1489},[],[1491],{"type":52,"value":1492},"ReferenceError: require is not defined",{"type":46,"tag":55,"props":1494,"children":1495},{},[1496,1498,1504,1506,1512,1514,1520,1521,1527,1529,1535,1537,1542,1544,1550],{"type":52,"value":1497},"A file containing CommonJS is being parsed as ESM. ",{"type":46,"tag":61,"props":1499,"children":1501},{"className":1500},[],[1502],{"type":52,"value":1503},".cjs",{"type":52,"value":1505}," is always CommonJS,\n",{"type":46,"tag":61,"props":1507,"children":1509},{"className":1508},[],[1510],{"type":52,"value":1511},".mjs",{"type":52,"value":1513}," always ESM; ",{"type":46,"tag":61,"props":1515,"children":1517},{"className":1516},[],[1518],{"type":52,"value":1519},".js",{"type":52,"value":255},{"type":46,"tag":61,"props":1522,"children":1524},{"className":1523},[],[1525],{"type":52,"value":1526},".ts",{"type":52,"value":1528}," follow ",{"type":46,"tag":61,"props":1530,"children":1532},{"className":1531},[],[1533],{"type":52,"value":1534},"\"type\"",{"type":52,"value":1536}," in the nearest\n",{"type":46,"tag":61,"props":1538,"children":1540},{"className":1539},[],[1541],{"type":52,"value":85},{"type":52,"value":1543},". For a CommonJS project, set ",{"type":46,"tag":61,"props":1545,"children":1547},{"className":1546},[],[1548],{"type":52,"value":1549},"\"type\": \"commonjs\"",{"type":52,"value":270},{"type":46,"tag":137,"props":1552,"children":1554},{"id":1553},"a-dependency-is-broken-or-postinstall-never-ran",[1555,1557,1563],{"type":52,"value":1556},"A dependency is broken, or ",{"type":46,"tag":61,"props":1558,"children":1560},{"className":1559},[],[1561],{"type":52,"value":1562},"postinstall",{"type":52,"value":1564}," never ran",{"type":46,"tag":55,"props":1566,"children":1567},{},[1568],{"type":52,"value":1569},"Lifecycle scripts don't run by default. Native addons notice immediately.\nApprovals are recorded in the config file, so this is one-time:",{"type":46,"tag":144,"props":1571,"children":1573},{"className":146,"code":1572,"language":148,"meta":149,"style":149},"deno approve-scripts                              # interactive picker\ndeno install --allow-scripts=npm:better-sqlite3   # or name them directly\n",[1574],{"type":46,"tag":61,"props":1575,"children":1576},{"__ignoreMap":149},[1577,1594],{"type":46,"tag":155,"props":1578,"children":1579},{"class":157,"line":158},[1580,1584,1589],{"type":46,"tag":155,"props":1581,"children":1582},{"style":162},[1583],{"type":52,"value":8},{"type":46,"tag":155,"props":1585,"children":1586},{"style":167},[1587],{"type":52,"value":1588}," approve-scripts",{"type":46,"tag":155,"props":1590,"children":1591},{"style":308},[1592],{"type":52,"value":1593},"                              # interactive picker\n",{"type":46,"tag":155,"props":1595,"children":1596},{"class":157,"line":314},[1597,1601,1606,1611],{"type":46,"tag":155,"props":1598,"children":1599},{"style":162},[1600],{"type":52,"value":8},{"type":46,"tag":155,"props":1602,"children":1603},{"style":167},[1604],{"type":52,"value":1605}," install",{"type":46,"tag":155,"props":1607,"children":1608},{"style":167},[1609],{"type":52,"value":1610}," --allow-scripts=npm:better-sqlite3",{"type":46,"tag":155,"props":1612,"children":1613},{"style":308},[1614],{"type":52,"value":1615},"   # or name them directly\n",{"type":46,"tag":137,"props":1617,"children":1619},{"id":1618},"a-tool-cannot-find-files-inside-node_modules",[1620,1622],{"type":52,"value":1621},"A tool cannot find files inside ",{"type":46,"tag":61,"props":1623,"children":1625},{"className":1624},[],[1626],{"type":52,"value":93},{"type":46,"tag":55,"props":1628,"children":1629},{},[1630,1632,1638],{"type":52,"value":1631},"Deno's layout is pnpm-style: real files in ",{"type":46,"tag":61,"props":1633,"children":1635},{"className":1634},[],[1636],{"type":52,"value":1637},"node_modules\u002F.deno\u002F",{"type":52,"value":1639},", exposed via\nsymlinks. Tools assuming npm's flat hoisted tree need:",{"type":46,"tag":144,"props":1641,"children":1645},{"className":1642,"code":1643,"language":1644,"meta":149,"style":149},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{ \"nodeModulesLinker\": \"hoisted\" }\n","json",[1646],{"type":46,"tag":61,"props":1647,"children":1648},{"__ignoreMap":149},[1649],{"type":46,"tag":155,"props":1650,"children":1651},{"class":157,"line":158},[1652,1658,1663,1669,1674,1679,1683,1688,1692],{"type":46,"tag":155,"props":1653,"children":1655},{"style":1654},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[1656],{"type":52,"value":1657},"{",{"type":46,"tag":155,"props":1659,"children":1660},{"style":1654},[1661],{"type":52,"value":1662}," \"",{"type":46,"tag":155,"props":1664,"children":1666},{"style":1665},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[1667],{"type":52,"value":1668},"nodeModulesLinker",{"type":46,"tag":155,"props":1670,"children":1671},{"style":1654},[1672],{"type":52,"value":1673},"\"",{"type":46,"tag":155,"props":1675,"children":1676},{"style":1654},[1677],{"type":52,"value":1678},":",{"type":46,"tag":155,"props":1680,"children":1681},{"style":1654},[1682],{"type":52,"value":1662},{"type":46,"tag":155,"props":1684,"children":1685},{"style":167},[1686],{"type":52,"value":1687},"hoisted",{"type":46,"tag":155,"props":1689,"children":1690},{"style":1654},[1691],{"type":52,"value":1673},{"type":46,"tag":155,"props":1693,"children":1694},{"style":1654},[1695],{"type":52,"value":1696}," }\n",{"type":46,"tag":69,"props":1698,"children":1700},{"id":1699},"what-has-no-deno-equivalent",[1701],{"type":52,"value":1702},"What has no Deno equivalent",{"type":46,"tag":55,"props":1704,"children":1705},{},[1706],{"type":52,"value":1707},"Say so rather than improvising a workaround that won't hold:",{"type":46,"tag":1709,"props":1710,"children":1711},"ul",{},[1712,1746,1762,1785,1808],{"type":46,"tag":1713,"props":1714,"children":1715},"li",{},[1716,1721,1723,1728,1730,1736,1738,1744],{"type":46,"tag":110,"props":1717,"children":1718},{},[1719],{"type":52,"value":1720},"Yarn Plug'n'Play.",{"type":52,"value":1722}," Deno creates a real ",{"type":46,"tag":61,"props":1724,"children":1726},{"className":1725},[],[1727],{"type":52,"value":93},{"type":52,"value":1729},"; ",{"type":46,"tag":61,"props":1731,"children":1733},{"className":1732},[],[1734],{"type":52,"value":1735},".pnp.cjs",{"type":52,"value":1737}," is unused\nand ",{"type":46,"tag":61,"props":1739,"children":1741},{"className":1740},[],[1742],{"type":52,"value":1743},".yarnrc.yml",{"type":52,"value":1745}," resolver settings don't transfer.",{"type":46,"tag":1713,"props":1747,"children":1748},{},[1749,1760],{"type":46,"tag":110,"props":1750,"children":1751},{},[1752,1758],{"type":46,"tag":61,"props":1753,"children":1755},{"className":1754},[],[1756],{"type":52,"value":1757},"yarn patch",{"type":52,"value":1759}," \u002F pnpm patched dependencies.",{"type":52,"value":1761}," Vendor or fork.",{"type":46,"tag":1713,"props":1763,"children":1764},{},[1765,1783],{"type":46,"tag":110,"props":1766,"children":1767},{},[1768,1774,1776,1782],{"type":46,"tag":61,"props":1769,"children":1771},{"className":1770},[],[1772],{"type":52,"value":1773},"overrides",{"type":52,"value":1775}," \u002F ",{"type":46,"tag":61,"props":1777,"children":1779},{"className":1778},[],[1780],{"type":52,"value":1781},"resolutions",{"type":52,"value":270},{"type":52,"value":1784}," Pin via an import map entry instead.",{"type":46,"tag":1713,"props":1786,"children":1787},{},[1788,1793,1795,1801,1802,1807],{"type":46,"tag":110,"props":1789,"children":1790},{},[1791],{"type":52,"value":1792},"Registry and resolver tuning",{"type":52,"value":1794}," in ",{"type":46,"tag":61,"props":1796,"children":1798},{"className":1797},[],[1799],{"type":52,"value":1800},".npmrc",{"type":52,"value":1775},{"type":46,"tag":61,"props":1803,"children":1805},{"className":1804},[],[1806],{"type":52,"value":1743},{"type":52,"value":270},{"type":46,"tag":1713,"props":1809,"children":1810},{},[1811,1816],{"type":46,"tag":110,"props":1812,"children":1813},{},[1814],{"type":52,"value":1815},"Bun build features",{"type":52,"value":1817}," — macros, HTMLRewriter, HTML entrypoints.",{"type":46,"tag":69,"props":1819,"children":1821},{"id":1820},"per-tool-details",[1822],{"type":52,"value":1823},"Per-tool details",{"type":46,"tag":1709,"props":1825,"children":1826},{},[1827,1845,1856,1882,1899],{"type":46,"tag":1713,"props":1828,"children":1829},{},[1830,1836,1838,1843],{"type":46,"tag":61,"props":1831,"children":1833},{"className":1832},[],[1834],{"type":52,"value":1835},"references\u002FFROM_NPM.md",{"type":52,"value":1837}," — lockfile seeding, ",{"type":46,"tag":61,"props":1839,"children":1841},{"className":1840},[],[1842],{"type":52,"value":93},{"type":52,"value":1844}," layout, overrides",{"type":46,"tag":1713,"props":1846,"children":1847},{},[1848,1854],{"type":46,"tag":61,"props":1849,"children":1851},{"className":1850},[],[1852],{"type":52,"value":1853},"references\u002FFROM_YARN.md",{"type":52,"value":1855}," — Plug'n'Play, Berry vs Classic, workspaces",{"type":46,"tag":1713,"props":1857,"children":1858},{},[1859,1865,1867,1873,1874,1880],{"type":46,"tag":61,"props":1860,"children":1862},{"className":1861},[],[1863],{"type":52,"value":1864},"references\u002FFROM_PNPM.md",{"type":52,"value":1866}," — ",{"type":46,"tag":61,"props":1868,"children":1870},{"className":1869},[],[1871],{"type":52,"value":1872},"pnpm-workspace.yaml",{"type":52,"value":205},{"type":46,"tag":61,"props":1875,"children":1877},{"className":1876},[],[1878],{"type":52,"value":1879},"catalog:",{"type":52,"value":1881},", patches",{"type":46,"tag":1713,"props":1883,"children":1884},{},[1885,1891,1893],{"type":46,"tag":61,"props":1886,"children":1888},{"className":1887},[],[1889],{"type":52,"value":1890},"references\u002FFROM_BUN.md",{"type":52,"value":1892}," — Bun API translation, ",{"type":46,"tag":61,"props":1894,"children":1896},{"className":1895},[],[1897],{"type":52,"value":1898},"bunfig.toml",{"type":46,"tag":1713,"props":1900,"children":1901},{},[1902,1908,1909,1914,1916,1922],{"type":46,"tag":61,"props":1903,"children":1905},{"className":1904},[],[1906],{"type":52,"value":1907},"references\u002FNODE_APIS.md",{"type":52,"value":1866},{"type":46,"tag":61,"props":1910,"children":1912},{"className":1911},[],[1913],{"type":52,"value":101},{"type":52,"value":1915}," built-ins, ",{"type":46,"tag":61,"props":1917,"children":1919},{"className":1918},[],[1920],{"type":52,"value":1921},"DENO_COMPAT",{"type":52,"value":1923},", CJS\u002FESM",{"type":46,"tag":69,"props":1925,"children":1927},{"id":1926},"further-reading",[1928],{"type":52,"value":1929},"Further reading",{"type":46,"tag":1709,"props":1931,"children":1932},{},[1933,1946,1957],{"type":46,"tag":1713,"props":1934,"children":1935},{},[1936,1944],{"type":46,"tag":1937,"props":1938,"children":1942},"a",{"href":1939,"rel":1940},"https:\u002F\u002Fdocs.deno.com\u002Fruntime\u002Fmigrate\u002F",[1941],"nofollow",[1943],{"type":52,"value":1939},{"type":52,"value":1945}," — official migration guides",{"type":46,"tag":1713,"props":1947,"children":1948},{},[1949,1955],{"type":46,"tag":1937,"props":1950,"children":1953},{"href":1951,"rel":1952},"https:\u002F\u002Fdocs.deno.com\u002Fruntime\u002Ffundamentals\u002Fnode\u002F",[1941],[1954],{"type":52,"value":1951},{"type":52,"value":1956}," — Node and npm\ncompatibility",{"type":46,"tag":1713,"props":1958,"children":1959},{},[1960,1966],{"type":46,"tag":1937,"props":1961,"children":1964},{"href":1962,"rel":1963},"https:\u002F\u002Fdocs.deno.com\u002Fruntime\u002Freference\u002Fnode_apis\u002F",[1941],[1965],{"type":52,"value":1962},{"type":52,"value":1967}," — per-module Node API\nstatus",{"type":46,"tag":1969,"props":1970,"children":1971},"style",{},[1972],{"type":52,"value":1973},"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":1975,"total":2044},[1976,1988,2002,2022,2036],{"slug":8,"name":8,"fn":1977,"description":1978,"org":1979,"tags":1980,"stars":27,"repoUrl":28,"updatedAt":1987},"build and manage Deno applications","Use when writing, running, configuring, reviewing, or debugging code in a Deno project, or when scaffolding a new one. Covers dependency management with deno install and deno add, package.json and node_modules support, npm and JSR packages, permissions, where configuration belongs across package.json, tsconfig.json and deno.json, workspaces, the built-in toolchain (fmt, lint, test, check, bench, compile), and publishing.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1981,1984,1985,1986],{"name":1982,"slug":1983,"type":14},"CLI","cli",{"name":9,"slug":8,"type":14},{"name":22,"slug":23,"type":14},{"name":19,"slug":20,"type":14},"2026-07-31T06:23:32.095122",{"slug":1989,"name":1989,"fn":1990,"description":1991,"org":1992,"tags":1993,"stars":27,"repoUrl":28,"updatedAt":2001},"deno-deploy","deploy apps to Deno Deploy","Use when deploying Deno apps to production, asking about Deno Deploy, or working with `deno deploy` CLI commands. Covers deployment workflows, environment variables, KV database access, custom domains, the --tunnel flag for local development, and the `deno deploy` command reference.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1994,1995,1998],{"name":9,"slug":8,"type":14},{"name":1996,"slug":1997,"type":14},"Deployment","deployment",{"name":1999,"slug":2000,"type":14},"Serverless","serverless","2026-07-31T05:52:43.564231",{"slug":2003,"name":2003,"fn":2004,"description":2005,"org":2006,"tags":2007,"stars":27,"repoUrl":28,"updatedAt":2021},"deno-frontend","build Deno frontend apps with Fresh","Use when building a web frontend with Deno — running React, Vite, Astro, SvelteKit, Next.js, Nuxt or other npm frameworks under Deno, or working with Fresh, Deno's own island-architecture framework. Covers which path to pick, Fresh 2.x routes, handlers, islands, Preact signals, Tailwind, and Fresh 1.x to 2.x migration.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2008,2009,2012,2015,2018],{"name":9,"slug":8,"type":14},{"name":2010,"slug":2011,"type":14},"Fresh","fresh",{"name":2013,"slug":2014,"type":14},"Frontend","frontend",{"name":2016,"slug":2017,"type":14},"Preact","preact",{"name":2019,"slug":2020,"type":14},"Tailwind CSS","tailwind-css","2026-07-31T05:52:44.546078",{"slug":2023,"name":2023,"fn":2024,"description":2025,"org":2026,"tags":2027,"stars":27,"repoUrl":28,"updatedAt":2035},"deno-sandbox","sandbox untrusted code with Deno","Use when building features that execute untrusted user code, AI-generated code, or need isolated code execution environments. Covers the @deno\u002Fsandbox SDK.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2028,2031,2032],{"name":2029,"slug":2030,"type":14},"Code Execution","code-execution",{"name":9,"slug":8,"type":14},{"name":2033,"slug":2034,"type":14},"Sandboxing","sandboxing","2026-07-31T05:52:42.5755",{"slug":4,"name":4,"fn":5,"description":6,"org":2037,"tags":2038,"stars":27,"repoUrl":28,"updatedAt":29},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2039,2040,2041,2042,2043],{"name":9,"slug":8,"type":14},{"name":22,"slug":23,"type":14},{"name":25,"slug":26,"type":14},{"name":16,"slug":17,"type":14},{"name":19,"slug":20,"type":14},5,{"items":2046,"total":2044},[2047,2054,2060,2068,2074],{"slug":8,"name":8,"fn":1977,"description":1978,"org":2048,"tags":2049,"stars":27,"repoUrl":28,"updatedAt":1987},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2050,2051,2052,2053],{"name":1982,"slug":1983,"type":14},{"name":9,"slug":8,"type":14},{"name":22,"slug":23,"type":14},{"name":19,"slug":20,"type":14},{"slug":1989,"name":1989,"fn":1990,"description":1991,"org":2055,"tags":2056,"stars":27,"repoUrl":28,"updatedAt":2001},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2057,2058,2059],{"name":9,"slug":8,"type":14},{"name":1996,"slug":1997,"type":14},{"name":1999,"slug":2000,"type":14},{"slug":2003,"name":2003,"fn":2004,"description":2005,"org":2061,"tags":2062,"stars":27,"repoUrl":28,"updatedAt":2021},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2063,2064,2065,2066,2067],{"name":9,"slug":8,"type":14},{"name":2010,"slug":2011,"type":14},{"name":2013,"slug":2014,"type":14},{"name":2016,"slug":2017,"type":14},{"name":2019,"slug":2020,"type":14},{"slug":2023,"name":2023,"fn":2024,"description":2025,"org":2069,"tags":2070,"stars":27,"repoUrl":28,"updatedAt":2035},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2071,2072,2073],{"name":2029,"slug":2030,"type":14},{"name":9,"slug":8,"type":14},{"name":2033,"slug":2034,"type":14},{"slug":4,"name":4,"fn":5,"description":6,"org":2075,"tags":2076,"stars":27,"repoUrl":28,"updatedAt":29},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2077,2078,2079,2080,2081],{"name":9,"slug":8,"type":14},{"name":22,"slug":23,"type":14},{"name":25,"slug":26,"type":14},{"name":16,"slug":17,"type":14},{"name":19,"slug":20,"type":14}]