[{"data":1,"prerenderedAt":498},["ShallowReactive",2],{"docs-page:\u002Fdocs\u002Fpackage-manager\u002Fnode-modules":3,"docs-pages":154},{"id":4,"title":5,"body":6,"description":146,"extension":147,"meta":148,"navigation":149,"path":150,"seo":151,"stem":152,"__hash__":153},"docs\u002Fdocs\u002Fpackage-manager\u002Fnode-modules.md","node_modules layout",{"type":7,"value":8,"toc":138},"minimark",[9,13,30,40,45,48,52,66,69,73,76,82,97,103,107,116,120,134],[10,11,5],"h1",{"id":12},"node_modules-layout",[14,15,16,17,21,22,25,26,29],"p",{},"scpm defaults to an isolated symlink layout like pnpm's ",[18,19,20],"code",{},"node-linker=isolated",".\nThe difference is directory ownership: scpm writes ",[18,23,24],{},".scpm\u002F",", not ",[18,27,28],{},".pnpm\u002F",".",[31,32,38],"pre",{"className":33,"code":35,"language":36,"meta":37},[34],"language-text","project\u002F\n  node_modules\u002F\n    react -> .scpm\u002Freact@18.2.0\u002Fnode_modules\u002Freact\n    .scpm\u002F\n      react@18.2.0\u002F\n        node_modules\u002F\n          react\u002F\n          loose-envify -> ..\u002F..\u002Floose-envify@1.4.0\u002Fnode_modules\u002Floose-envify\n","text","",[18,39,35],{"__ignoreMap":37},[41,42,44],"h2",{"id":43},"why-isolated","Why isolated",[14,46,47],{},"Only declared direct dependencies appear at the project top level. Transitive\ndependencies are linked next to the packages that declared them, so phantom\ndependencies fail instead of being accidentally available.",[41,49,51],{"id":50},"hoisted-mode","Hoisted mode",[31,53,57],{"className":54,"code":55,"language":56,"meta":37,"style":37},"language-sh shiki shiki-themes github-light github-dark","scpm install --node-linker=hoisted\n","sh",[18,58,59],{"__ignoreMap":37},[60,61,64],"span",{"class":62,"line":63},"line",1,[60,65,55],{},[14,67,68],{},"Hoisted mode writes a flatter npm-style tree for tools that assume most\npackages are visible at the top level.",[41,70,72],{"id":71},"global-store","Global store",[14,74,75],{},"Package files are stored by content hash under:",[31,77,80],{"className":78,"code":79,"language":36,"meta":37},[34],"$XDG_DATA_HOME\u002Fscpm\u002Fstore\u002Fv1\u002F\n",[18,81,79],{"__ignoreMap":37},[14,83,84,85,88,89,92,93,96],{},"This defaults to ",[18,86,87],{},"~\u002F.local\u002Fshare\u002Fscpm\u002Fstore\u002Fv1\u002F"," when\n",[18,90,91],{},"$XDG_DATA_HOME"," is unset. Run ",[18,94,95],{},"scpm store path"," to see the resolved\nlocation.",[14,98,99,100,29],{},"scpm imports files from that store into the virtual store with reflinks,\nhardlinks, or copies depending on filesystem support and\n",[18,101,102],{},"package-import-method",[41,104,106],{"id":105},"global-virtual-store","Global virtual store",[14,108,109,110,115],{},"The ",[111,112,114],"a",{"href":113},"\u002Fdocs\u002Fpackage-manager\u002Fglobal-virtual-store","global virtual store"," reuses\nmaterialized package directories across projects. It is on by default outside\nCI and off under CI.",[41,117,119],{"id":118},"coexistence-with-pnpm","Coexistence with pnpm",[14,121,122,123,126,127,130,131,29],{},"scpm does not reuse ",[18,124,125],{},"node_modules\u002F.pnpm\u002F"," or ",[18,128,129],{},"~\u002F.pnpm-store\u002F",". If a pnpm-built\ntree already exists, scpm installs alongside it in ",[18,132,133],{},"node_modules\u002F.scpm\u002F",[135,136,137],"style",{},"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);}",{"title":37,"searchDepth":139,"depth":139,"links":140},2,[141,142,143,144,145],{"id":43,"depth":139,"text":44},{"id":50,"depth":139,"text":51},{"id":71,"depth":139,"text":72},{"id":105,"depth":139,"text":106},{"id":118,"depth":139,"text":119},"scpm defaults to an isolated symlink layout like pnpm's node-linker=isolated.\nThe difference is directory ownership: scpm writes .scpm\u002F, not .pnpm\u002F.","md",{},true,"\u002Fdocs\u002Fpackage-manager\u002Fnode-modules",{"title":5,"description":146},"docs\u002Fpackage-manager\u002Fnode-modules","HGQjwH8FjP_ys8THqz204Lu4u2j6l6Eg4nrJ01eXpJ4",[155,158,161,164,167,170,173,176,179,182,185,188,191,194,197,200,203,206,209,212,215,218,221,224,227,230,233,236,239,242,245,248,251,254,257,260,263,266,269,272,275,278,281,284,287,290,293,296,299,302,305,308,311,314,317,320,323,326,329,332,335,338,341,344,347,350,353,356,359,362,365,368,371,374,377,380,383,386,388,391,394,397,400,403,406,409,412,415,418,421,424,427,430,433,436,439,442,443,446,449,452,455,456,459,462,465,468,471,474,477,480,483,486,489,492,495],{"path":156,"title":157},"\u002Fdocs\u002Fbenchmarks","Benchmarks",{"path":159,"title":160},"\u002Fdocs\u002Fbun-users","For bun users",{"path":162,"title":163},"\u002Fdocs\u002Fcli\u002Fadd","scpm add",{"path":165,"title":166},"\u002Fdocs\u002Fcli\u002Fapprove-builds","scpm approve-builds",{"path":168,"title":169},"\u002Fdocs\u002Fcli\u002Faudit","scpm audit",{"path":171,"title":172},"\u002Fdocs\u002Fcli\u002Fbin","scpm bin",{"path":174,"title":175},"\u002Fdocs\u002Fcli\u002Fcache","scpm cache",{"path":177,"title":178},"\u002Fdocs\u002Fcli\u002Fcache\u002Fdelete","scpm cache delete",{"path":180,"title":181},"\u002Fdocs\u002Fcli\u002Fcache\u002Flist","scpm cache list",{"path":183,"title":184},"\u002Fdocs\u002Fcli\u002Fcache\u002Flist-registries","scpm cache list-registries",{"path":186,"title":187},"\u002Fdocs\u002Fcli\u002Fcache\u002Fprune","scpm cache prune",{"path":189,"title":190},"\u002Fdocs\u002Fcli\u002Fcache\u002Fview","scpm cache view",{"path":192,"title":193},"\u002Fdocs\u002Fcli\u002Fcat-file","scpm cat-file",{"path":195,"title":196},"\u002Fdocs\u002Fcli\u002Fcat-index","scpm cat-index",{"path":198,"title":199},"\u002Fdocs\u002Fcli\u002Fcheck","scpm check",{"path":201,"title":202},"\u002Fdocs\u002Fcli\u002Fci","scpm ci",{"path":204,"title":205},"\u002Fdocs\u002Fcli\u002Fclean","scpm clean",{"path":207,"title":208},"\u002Fdocs\u002Fcli\u002Fcompletion","scpm completion",{"path":210,"title":211},"\u002Fdocs\u002Fcli\u002Fconfig","scpm config",{"path":213,"title":214},"\u002Fdocs\u002Fcli\u002Fconfig\u002Fdelete","scpm config delete",{"path":216,"title":217},"\u002Fdocs\u002Fcli\u002Fconfig\u002Fexplain","scpm config explain",{"path":219,"title":220},"\u002Fdocs\u002Fcli\u002Fconfig\u002Ffind","scpm config find",{"path":222,"title":223},"\u002Fdocs\u002Fcli\u002Fconfig\u002Fget","scpm config get",{"path":225,"title":226},"\u002Fdocs\u002Fcli\u002Fconfig\u002Flist","scpm config list",{"path":228,"title":229},"\u002Fdocs\u002Fcli\u002Fconfig\u002Fset","scpm config set",{"path":231,"title":232},"\u002Fdocs\u002Fcli\u002Fconfig\u002Ftui","scpm config tui",{"path":234,"title":235},"\u002Fdocs\u002Fcli\u002Fcreate","scpm create",{"path":237,"title":238},"\u002Fdocs\u002Fcli\u002Fdedupe","scpm dedupe",{"path":240,"title":241},"\u002Fdocs\u002Fcli\u002Fdeploy","scpm deploy",{"path":243,"title":244},"\u002Fdocs\u002Fcli\u002Fdeprecate","scpm deprecate",{"path":246,"title":247},"\u002Fdocs\u002Fcli\u002Fdeprecations","scpm deprecations",{"path":249,"title":250},"\u002Fdocs\u002Fcli\u002Fdiag","scpm diag",{"path":252,"title":253},"\u002Fdocs\u002Fcli\u002Fdiag\u002Fanalyze","scpm diag analyze",{"path":255,"title":256},"\u002Fdocs\u002Fcli\u002Fdiag\u002Fcompare","scpm diag compare",{"path":258,"title":259},"\u002Fdocs\u002Fcli\u002Fdist-tag","scpm dist-tag",{"path":261,"title":262},"\u002Fdocs\u002Fcli\u002Fdist-tag\u002Fadd","scpm dist-tag add",{"path":264,"title":265},"\u002Fdocs\u002Fcli\u002Fdist-tag\u002Fls","scpm dist-tag ls",{"path":267,"title":268},"\u002Fdocs\u002Fcli\u002Fdist-tag\u002Frm","scpm dist-tag rm",{"path":270,"title":271},"\u002Fdocs\u002Fcli\u002Fdlx","scpm dlx",{"path":273,"title":274},"\u002Fdocs\u002Fcli\u002Fdoctor","scpm doctor",{"path":276,"title":277},"\u002Fdocs\u002Fcli\u002Fexec","scpm exec",{"path":279,"title":280},"\u002Fdocs\u002Fcli\u002Ffetch","scpm fetch",{"path":282,"title":283},"\u002Fdocs\u002Fcli\u002Ffind-hash","scpm find-hash",{"path":285,"title":286},"\u002Fdocs\u002Fcli\u002Fignored-builds","scpm ignored-builds",{"path":288,"title":289},"\u002Fdocs\u002Fcli\u002Fimport","scpm import",{"path":291,"title":292},"\u002Fdocs\u002Fcli","scpm",{"path":294,"title":295},"\u002Fdocs\u002Fcli\u002Finit","scpm init",{"path":297,"title":298},"\u002Fdocs\u002Fcli\u002Finstall","scpm install",{"path":300,"title":301},"\u002Fdocs\u002Fcli\u002Flicenses","scpm licenses",{"path":303,"title":304},"\u002Fdocs\u002Fcli\u002Flink","scpm link",{"path":306,"title":307},"\u002Fdocs\u002Fcli\u002Flist","scpm list",{"path":309,"title":310},"\u002Fdocs\u002Fcli\u002Flogin","scpm login",{"path":312,"title":313},"\u002Fdocs\u002Fcli\u002Flogout","scpm logout",{"path":315,"title":316},"\u002Fdocs\u002Fcli\u002Foutdated","scpm outdated",{"path":318,"title":319},"\u002Fdocs\u002Fcli\u002Fpack","scpm pack",{"path":321,"title":322},"\u002Fdocs\u002Fcli\u002Fpatch","scpm patch",{"path":324,"title":325},"\u002Fdocs\u002Fcli\u002Fpatch-commit","scpm patch-commit",{"path":327,"title":328},"\u002Fdocs\u002Fcli\u002Fpatch-remove","scpm patch-remove",{"path":330,"title":331},"\u002Fdocs\u002Fcli\u002Fpeers","scpm peers",{"path":333,"title":334},"\u002Fdocs\u002Fcli\u002Fpeers\u002Fcheck","scpm peers check",{"path":336,"title":337},"\u002Fdocs\u002Fcli\u002Fprune","scpm prune",{"path":339,"title":340},"\u002Fdocs\u002Fcli\u002Fpublish","scpm publish",{"path":342,"title":343},"\u002Fdocs\u002Fcli\u002Fpurge","scpm purge",{"path":345,"title":346},"\u002Fdocs\u002Fcli\u002Fquery","scpm query",{"path":348,"title":349},"\u002Fdocs\u002Fcli\u002Frebuild","scpm rebuild",{"path":351,"title":352},"\u002Fdocs\u002Fcli\u002Frecursive","scpm recursive",{"path":354,"title":355},"\u002Fdocs\u002Fcli\u002Fremove","scpm remove",{"path":357,"title":358},"\u002Fdocs\u002Fcli\u002Frestart","scpm restart",{"path":360,"title":361},"\u002Fdocs\u002Fcli\u002Froot","scpm root",{"path":363,"title":364},"\u002Fdocs\u002Fcli\u002Frun","scpm run",{"path":366,"title":367},"\u002Fdocs\u002Fcli\u002Fsbom","scpm sbom",{"path":369,"title":370},"\u002Fdocs\u002Fcli\u002Fsponsors","scpm sponsors",{"path":372,"title":373},"\u002Fdocs\u002Fcli\u002Fstage","scpm stage",{"path":375,"title":376},"\u002Fdocs\u002Fcli\u002Fstart","scpm start",{"path":378,"title":379},"\u002Fdocs\u002Fcli\u002Fstop","scpm stop",{"path":381,"title":382},"\u002Fdocs\u002Fcli\u002Fstore","scpm store",{"path":384,"title":385},"\u002Fdocs\u002Fcli\u002Fstore\u002Fadd","scpm store add",{"path":387,"title":95},"\u002Fdocs\u002Fcli\u002Fstore\u002Fpath",{"path":389,"title":390},"\u002Fdocs\u002Fcli\u002Fstore\u002Fprune","scpm store prune",{"path":392,"title":393},"\u002Fdocs\u002Fcli\u002Fstore\u002Fstatus","scpm store status",{"path":395,"title":396},"\u002Fdocs\u002Fcli\u002Ftest","scpm test",{"path":398,"title":399},"\u002Fdocs\u002Fcli\u002Fundeprecate","scpm undeprecate",{"path":401,"title":402},"\u002Fdocs\u002Fcli\u002Funlink","scpm unlink",{"path":404,"title":405},"\u002Fdocs\u002Fcli\u002Funpublish","scpm unpublish",{"path":407,"title":408},"\u002Fdocs\u002Fcli\u002Fupdate","scpm update",{"path":410,"title":411},"\u002Fdocs\u002Fcli\u002Fversion","scpm version",{"path":413,"title":414},"\u002Fdocs\u002Fcli\u002Fview","scpm view",{"path":416,"title":417},"\u002Fdocs\u002Fcli\u002Fwhy","scpm why",{"path":419,"title":420},"\u002Fdocs\u002Ferror-codes","Error and warning codes",{"path":422,"title":423},"\u002Fdocs\u002Fgetting-started","Getting Started",{"path":425,"title":426},"\u002Fdocs\u002Fguide","Guide",{"path":428,"title":429},"\u002Fdocs","SCPM Documentation",{"path":431,"title":432},"\u002Fdocs\u002Finstallation","Installation",{"path":434,"title":435},"\u002Fdocs\u002Fnpm-users","For npm users",{"path":437,"title":438},"\u002Fdocs\u002Fpackage-manager\u002Fconfiguration","Configuration",{"path":440,"title":441},"\u002Fdocs\u002Fpackage-manager\u002Fdependencies","Manage dependencies",{"path":113,"title":106},{"path":444,"title":445},"\u002Fdocs\u002Fpackage-manager\u002Finstall","Install dependencies",{"path":447,"title":448},"\u002Fdocs\u002Fpackage-manager\u002Fjailed-builds","Jailed dependency builds",{"path":450,"title":451},"\u002Fdocs\u002Fpackage-manager\u002Flifecycle-scripts","Lifecycle scripts",{"path":453,"title":454},"\u002Fdocs\u002Fpackage-manager\u002Flockfiles","Lockfiles",{"path":150,"title":5},{"path":457,"title":458},"\u002Fdocs\u002Fpackage-manager\u002Fpublishing","Publishing",{"path":460,"title":461},"\u002Fdocs\u002Fpackage-manager\u002Fregistry-auth","Registry and auth",{"path":463,"title":464},"\u002Fdocs\u002Fpackage-manager\u002Fscripts","Run scripts and binaries",{"path":466,"title":467},"\u002Fdocs\u002Fpackage-manager\u002Fsecurity-scanner","Security scanner",{"path":469,"title":470},"\u002Fdocs\u002Fpackage-manager\u002Fworkspaces","Workspaces",{"path":472,"title":473},"\u002Fdocs\u002Fpnpm-users","For pnpm users",{"path":475,"title":476},"\u002Fdocs\u002Fsecurity","Security",{"path":478,"title":479},"\u002Fdocs\u002Fsettings\u002Fcli","CLI Settings",{"path":481,"title":482},"\u002Fdocs\u002Fsettings\u002Fenv","Environment Settings",{"path":484,"title":485},"\u002Fdocs\u002Fsettings","Settings",{"path":487,"title":488},"\u002Fdocs\u002Fsettings\u002Fnpmrc",".npmrc Settings",{"path":490,"title":491},"\u002Fdocs\u002Fsettings\u002Fworkspace-yaml","Workspace YAML Settings",{"path":493,"title":494},"\u002Fdocs\u002Ftroubleshooting","Troubleshooting",{"path":496,"title":497},"\u002Fdocs\u002Fyarn-users","For yarn users",1780584396926]