[{"data":1,"prerenderedAt":489},["ShallowReactive",2],{"navigation_docs_zh_CN":3,"\u002Fzh-CN\u002Fguides\u002Fdependencies":85,"\u002Fzh-CN\u002Fguides\u002Fdependencies-surround":484},[4,19,41,75],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":18},"快速开始","i-lucide-book-open","\u002Fzh-CN\u002Fgetting-started","zh-CN\u002F1.getting-started",[10,14],{"title":11,"path":12,"stem":13},"安装","\u002Fzh-CN\u002Fgetting-started\u002Finstallation","zh-CN\u002F1.getting-started\u002F1.installation",{"title":15,"path":16,"stem":17},"第一个 Pin","\u002Fzh-CN\u002Fgetting-started\u002Ffirst-pin","zh-CN\u002F1.getting-started\u002F2.first-pin",false,{"title":20,"icon":21,"path":22,"stem":23,"children":24,"page":18},"使用指南","i-lucide-route","\u002Fzh-CN\u002Fguides","zh-CN\u002F2.guides",[25,29,33,37],{"title":26,"path":27,"stem":28},"更新与选择","\u002Fzh-CN\u002Fguides\u002Fupdating","zh-CN\u002F2.guides\u002F1.updating",{"title":30,"path":31,"stem":32},"组合 Checker 与 Fetcher","\u002Fzh-CN\u002Fguides\u002Fcombinations","zh-CN\u002F2.guides\u002F2.combinations",{"title":34,"path":35,"stem":36},"多 Source 与补丁","\u002Fzh-CN\u002Fguides\u002Fmulti-source","zh-CN\u002F2.guides\u002F3.multi-source",{"title":38,"path":39,"stem":40},"Package 与依赖哈希","\u002Fzh-CN\u002Fguides\u002Fdependencies","zh-CN\u002F2.guides\u002F4.dependencies",{"title":42,"icon":43,"path":44,"stem":45,"children":46,"page":18},"参考文档","i-lucide-code","\u002Fzh-CN\u002Freference","zh-CN\u002F3.reference",[47,51,55,59,63,67,71],{"title":48,"path":49,"stem":50},"CLI","\u002Fzh-CN\u002Freference\u002Fcli","zh-CN\u002F3.reference\u002F1.cli",{"title":52,"path":53,"stem":54},"运行配置","\u002Fzh-CN\u002Freference\u002Fconfiguration","zh-CN\u002F3.reference\u002F2.configuration",{"title":56,"path":57,"stem":58},"Pin 声明","\u002Fzh-CN\u002Freference\u002Fpins","zh-CN\u002F3.reference\u002F3.pins",{"title":60,"path":61,"stem":62},"Checker","\u002Fzh-CN\u002Freference\u002Fcheckers","zh-CN\u002F3.reference\u002F4.checkers",{"title":64,"path":65,"stem":66},"Fetcher","\u002Fzh-CN\u002Freference\u002Ffetchers","zh-CN\u002F3.reference\u002F5.fetchers",{"title":68,"path":69,"stem":70},"Package Builder","\u002Fzh-CN\u002Freference\u002Fbuilders","zh-CN\u002F3.reference\u002F6.builders",{"title":72,"path":73,"stem":74},"Reader 与 Pins File","\u002Fzh-CN\u002Freference\u002Freader","zh-CN\u002F3.reference\u002F7.reader",{"title":76,"icon":77,"path":78,"stem":79,"children":80,"page":18},"排错指南","i-lucide-wrench","\u002Fzh-CN\u002Ftroubleshooting","zh-CN\u002F4.troubleshooting",[81],{"title":82,"path":83,"stem":84},"常见错误","\u002Fzh-CN\u002Ftroubleshooting\u002Fcommon-errors","zh-CN\u002F4.troubleshooting\u002F1.common-errors",{"id":86,"title":38,"body":87,"description":477,"extension":478,"links":479,"meta":480,"navigation":481,"path":39,"seo":482,"stem":40,"__hash__":483},"docs_zh_CN\u002Fzh-CN\u002F2.guides\u002F4.dependencies.md",{"type":88,"value":89,"toc":472},"minimark",[90,99,104,226,249,253,275,295,427,437,441,458,468],[91,92,93,94,98],"p",{},"Package 属于 Source，声明在 ",[95,96,97],"code",{},"packages"," 中。它共享 Pin 的 Version 和 Source 的源码，但拥有自己的 Builder 和依赖产物。nix-pins 计算的是中间依赖 FOD 的哈希，应用的完整构建仍由下游负责。",[100,101,103],"h2",{"id":102},"一个-go-package","一个 Go Package",[105,106,111],"pre",{"className":107,"code":108,"language":109,"meta":110,"style":110},"language-nix shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{ pin }: {\n  gofzf = pin.github {\n    target = \"junegunn\u002Ffzf\";\n    packages.default = pin.goModule { root = \".\"; };\n  };\n}\n","nix","",[95,112,113,132,152,173,214,220],{"__ignoreMap":110},[114,115,118,122,126,129],"span",{"class":116,"line":117},"line",1,[114,119,121],{"class":120},"sMK4o","{",[114,123,125],{"class":124},"sHdIc"," pin",[114,127,128],{"class":120}," }:",[114,130,131],{"class":120}," {\n",[114,133,135,139,142,144,147,150],{"class":116,"line":134},2,[114,136,138],{"class":137},"spNyl","  gofzf",[114,140,141],{"class":120}," =",[114,143,125],{"class":124},[114,145,146],{"class":120},".",[114,148,149],{"class":124},"github",[114,151,131],{"class":120},[114,153,155,158,160,163,167,170],{"class":116,"line":154},3,[114,156,157],{"class":137},"    target",[114,159,141],{"class":120},[114,161,162],{"class":120}," \"",[114,164,166],{"class":165},"sfazB","junegunn\u002Ffzf",[114,168,169],{"class":120},"\"",[114,171,172],{"class":120},";\n",[114,174,176,179,182,185,187,189,191,194,197,200,202,204,206,208,211],{"class":116,"line":175},4,[114,177,178],{"class":137},"    packages",[114,180,146],{"class":181},"sTEyZ",[114,183,184],{"class":137},"default",[114,186,141],{"class":120},[114,188,125],{"class":124},[114,190,146],{"class":120},[114,192,193],{"class":124},"goModule",[114,195,196],{"class":120}," {",[114,198,199],{"class":137}," root",[114,201,141],{"class":120},[114,203,162],{"class":120},[114,205,146],{"class":165},[114,207,169],{"class":120},[114,209,210],{"class":120},";",[114,212,213],{"class":120}," };\n",[114,215,217],{"class":116,"line":216},5,[114,218,219],{"class":120},"  };\n",[114,221,223],{"class":116,"line":222},6,[114,224,225],{"class":120},"}\n",[91,227,228,229,232,233,236,237,240,241,244,245,248],{},"Reader 传入 ",[95,230,231],{},"config"," 后，Package 位于 ",[95,234,235],{},"pins.gofzf.sources.default.packages.default","。读取 ",[95,238,239],{},"vendorHash"," 或 ",[95,242,243],{},"goModules","，并在下游 ",[95,246,247],{},"buildGoModule"," 中复用对应源码和版本。",[100,250,252],{"id":251},"npm-与-pnpm","npm 与 pnpm",[91,254,255,258,259,262,263,266,267,270,271,274],{},[95,256,257],{},"pin.npmPackage"," 使用 ",[95,260,261],{},"buildNpmPackage"," 的 ",[95,264,265],{},"npmDeps","，计算 ",[95,268,269],{},"npmDepsHash","。上游需要提供可用的 ",[95,272,273],{},"package-lock.json","。",[91,276,277,258,280,266,283,286,287,290,291,294],{},[95,278,279],{},"pin.pnpmPackage",[95,281,282],{},"fetchPnpmDeps",[95,284,285],{},"pnpmDepsHash","。需要显式给出 ",[95,288,289],{},"root"," 和正整数 ",[95,292,293],{},"fetcherVersion","；使用相同的 pnpm 版本和 Node.js 版本配置下游依赖安装。",[105,296,298],{"className":107,"code":297,"language":109,"meta":110,"style":110},"{ pin, pkgs }: {\n  app = pin.github {\n    target = \"QuantumNous\u002Fnew-api\";\n    packages.web = pin.pnpmPackage {\n      root = \"web\";\n      fetcherVersion = 3;\n      pnpm = pkgs.pnpm;\n    };\n  };\n}\n",[95,299,300,316,331,346,366,381,394,411,417,422],{"__ignoreMap":110},[114,301,302,304,306,309,312,314],{"class":116,"line":117},[114,303,121],{"class":120},[114,305,125],{"class":124},[114,307,308],{"class":120},",",[114,310,311],{"class":124}," pkgs",[114,313,128],{"class":120},[114,315,131],{"class":120},[114,317,318,321,323,325,327,329],{"class":116,"line":134},[114,319,320],{"class":137},"  app",[114,322,141],{"class":120},[114,324,125],{"class":124},[114,326,146],{"class":120},[114,328,149],{"class":124},[114,330,131],{"class":120},[114,332,333,335,337,339,342,344],{"class":116,"line":154},[114,334,157],{"class":137},[114,336,141],{"class":120},[114,338,162],{"class":120},[114,340,341],{"class":165},"QuantumNous\u002Fnew-api",[114,343,169],{"class":120},[114,345,172],{"class":120},[114,347,348,350,352,355,357,359,361,364],{"class":116,"line":175},[114,349,178],{"class":137},[114,351,146],{"class":181},[114,353,354],{"class":137},"web",[114,356,141],{"class":120},[114,358,125],{"class":124},[114,360,146],{"class":120},[114,362,363],{"class":124},"pnpmPackage",[114,365,131],{"class":120},[114,367,368,371,373,375,377,379],{"class":116,"line":216},[114,369,370],{"class":137},"      root",[114,372,141],{"class":120},[114,374,162],{"class":120},[114,376,354],{"class":165},[114,378,169],{"class":120},[114,380,172],{"class":120},[114,382,383,386,388,392],{"class":116,"line":222},[114,384,385],{"class":137},"      fetcherVersion",[114,387,141],{"class":120},[114,389,391],{"class":390},"sbssI"," 3",[114,393,172],{"class":120},[114,395,397,400,402,404,406,409],{"class":116,"line":396},7,[114,398,399],{"class":137},"      pnpm",[114,401,141],{"class":120},[114,403,311],{"class":124},[114,405,146],{"class":120},[114,407,408],{"class":124},"pnpm",[114,410,172],{"class":120},[114,412,414],{"class":116,"line":413},8,[114,415,416],{"class":120},"    };\n",[114,418,420],{"class":116,"line":419},9,[114,421,219],{"class":120},[114,423,425],{"class":116,"line":424},10,[114,426,225],{"class":120},[91,428,429,430,433,434,274],{},"这个配置展示子目录声明方式；所选上游版本的该目录必须确实包含兼容的 ",[95,431,432],{},"pnpm-lock.yaml","。工具不创建或修复上游锁文件。更多限制和下游使用方式见 ",[435,436,68],"a",{"href":69},[100,438,440],{"id":439},"多个-package","多个 Package",[91,442,443,444,446,447,449,450,240,452,454,455,274],{},"在一个 Source 的 ",[95,445,97],{}," 下声明不同名字即可。若同一 Source 中只有一个同类型的 Package，Derived Hash 使用 ",[95,448,239],{},"、",[95,451,269],{},[95,453,285],{},"；多个同类型 Package 会带 Package 名前缀，例如 ",[95,456,457],{},"cli.vendorHash",[91,459,460,461,463,464,467],{},"下游优先通过 Reader 的具名 ",[95,462,97],{}," 访问产物，避免自己推断 ",[95,465,466],{},"derived"," 键。工具按中间依赖 derivation 的输入指纹判断是否需要重算哈希；是否复用由真实构建输入决定。",[469,470,471],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}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);}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":110,"searchDepth":134,"depth":134,"links":473},[474,475,476],{"id":102,"depth":134,"text":103},{"id":251,"depth":134,"text":252},{"id":439,"depth":134,"text":440},"为 Go、npm 和 pnpm 准备依赖产物，让下游继续负责应用构建。","md",null,{},true,{"title":38,"description":477},"6GexIEI4nBjhEIgE1auuwsQt-KOgDDQ2ygqhubHP26M",[485,487],{"title":34,"path":35,"stem":36,"description":486,"children":-1},"用一个 Version 锁定多个具名来源，并给各来源配置独立的补丁和 Package。",{"title":48,"path":49,"stem":50,"description":488,"children":-1},"update、status、名称与正则选择，以及全局运行配置参数。",1790868073520]