[{"data":1,"prerenderedAt":174},["ShallowReactive",2],{"post-\u002Fblog\u002Fxcodegen":3},{"id":4,"title":5,"body":6,"date":164,"description":165,"extension":166,"meta":167,"navigation":168,"path":169,"seo":170,"sitemap":171,"stem":172,"__hash__":173},"blog\u002Fblog\u002Fxcodegen.md","Kill the .xcodeproj",{"type":7,"value":8,"toc":160},"minimark",[9,17,20,26,31,34,66,146,150,153,156],[10,11,12,16],"p",{},[13,14,15],"code",{},"pbxproj"," merge conflicts are a special kind of hell. You don't need to live there anymore.",[10,18,19],{},"XcodeGen turns your messy, 5000-line project file into a clean, readable YAML. Your project becomes a side effect of your code, not a burden you have to carry.",[21,22,23],"blockquote",{},[10,24,25],{},"\"Your project file is not your code. Stop treating it like it is.\"",[27,28,30],"h3",{"id":29},"how-it-works","How it works",[10,32,33],{},"Stop adding files via the Xcode UI. Just put them in a folder and let the tool do the work.",[35,36,37,48,58],"ol",{},[38,39,40,44,45],"li",{},[41,42,43],"strong",{},"Install:"," ",[13,46,47],{},"brew install xcodegen",[38,49,50,53,54,57],{},[41,51,52],{},"Define:"," Create a ",[13,55,56],{},"project.yml"," at the root.",[38,59,60,44,63],{},[41,61,62],{},"Run:",[13,64,65],{},"xcodegen generate",[67,68,73],"pre",{"className":69,"code":70,"language":71,"meta":72,"style":72},"language-yaml shiki shiki-themes github-light github-dark","name: MyProject\ntargets:\n  MyProject:\n    type: application\n    platform: macOS\n    sources: [Sources]\n","yaml","",[13,74,75,92,101,109,120,131],{"__ignoreMap":72},[76,77,80,84,88],"span",{"class":78,"line":79},"line",1,[76,81,83],{"class":82},"s9eBZ","name",[76,85,87],{"class":86},"sVt8B",": ",[76,89,91],{"class":90},"sZZnC","MyProject\n",[76,93,95,98],{"class":78,"line":94},2,[76,96,97],{"class":82},"targets",[76,99,100],{"class":86},":\n",[76,102,104,107],{"class":78,"line":103},3,[76,105,106],{"class":82},"  MyProject",[76,108,100],{"class":86},[76,110,112,115,117],{"class":78,"line":111},4,[76,113,114],{"class":82},"    type",[76,116,87],{"class":86},[76,118,119],{"class":90},"application\n",[76,121,123,126,128],{"class":78,"line":122},5,[76,124,125],{"class":82},"    platform",[76,127,87],{"class":86},[76,129,130],{"class":90},"macOS\n",[76,132,134,137,140,143],{"class":78,"line":133},6,[76,135,136],{"class":82},"    sources",[76,138,139],{"class":86},": [",[76,141,142],{"class":90},"Sources",[76,144,145],{"class":86},"]\n",[27,147,149],{"id":148},"the-result","The result",[10,151,152],{},"Every time you run the command, XcodeGen scans your folders and builds a fresh project file. No more \"Missing file\" errors, no more Git conflicts, no more bullshit.",[10,154,155],{},"Commit the YAML. Ignore the project.",[157,158,159],"style",{},"html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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":72,"searchDepth":94,"depth":94,"links":161},[162,163],{"id":29,"depth":103,"text":30},{"id":148,"depth":103,"text":149},"2025-12-19","Project management without the headaches.","md",{},true,"\u002Fblog\u002Fxcodegen",{"title":5,"description":165},{"loc":169},"blog\u002Fxcodegen","zwv0zzw1o6Kal72HtKwoQaZn_izkflXntEBdgj5WH58",1783186628091]