[{"data":1,"prerenderedAt":586},["ShallowReactive",2],{"navigation":3,"\u002Fcommands\u002Fosdd-remove":193,"\u002Fcommands\u002Fosdd-remove-surround":581},[4,27,49,99,149,169,183],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":26},"Getting Started","i-lucide-rocket","\u002Fgetting-started","1.getting-started",[10,14,18,22],{"title":11,"path":12,"stem":13},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction",{"title":15,"path":16,"stem":17},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation",{"title":19,"path":20,"stem":21},"Quick Start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start",{"title":23,"path":24,"stem":25},"Existing Application","\u002Fgetting-started\u002Fexisting-application","1.getting-started\u002F4.existing-application",false,{"title":28,"icon":29,"path":30,"stem":31,"children":32,"page":26},"Concepts","i-lucide-layers","\u002Fconcepts","2.concepts",[33,37,41,45],{"title":34,"path":35,"stem":36},"Layers","\u002Fconcepts\u002Flayers","2.concepts\u002F1.layers",{"title":38,"path":39,"stem":40},"Buckets","\u002Fconcepts\u002Fbuckets","2.concepts\u002F2.buckets",{"title":42,"path":43,"stem":44},"Boundaries","\u002Fconcepts\u002Fboundaries","2.concepts\u002F3.boundaries",{"title":46,"path":47,"stem":48},"Service Providers","\u002Fconcepts\u002Fservice-providers","2.concepts\u002F4.service-providers",{"title":50,"icon":51,"path":52,"stem":53,"children":54,"page":26},"Guides","i-lucide-book-marked","\u002Fguides","3.guides",[55,59,63,67,71,75,79,83,87,91,95],{"title":56,"path":57,"stem":58},"Add a Domain","\u002Fguides\u002Fadd-a-domain","3.guides\u002F01.add-a-domain",{"title":60,"path":61,"stem":62},"Share Code Between Layers","\u002Fguides\u002Fshare-code-between-layers","3.guides\u002F02.share-code-between-layers",{"title":64,"path":65,"stem":66},"Routes","\u002Fguides\u002Froutes","3.guides\u002F03.routes",{"title":68,"path":69,"stem":70},"Views and Components","\u002Fguides\u002Fviews-and-components","3.guides\u002F04.views-and-components",{"title":72,"path":73,"stem":74},"Seeders","\u002Fguides\u002Fseeders","3.guides\u002F05.seeders",{"title":76,"path":77,"stem":78},"Configuration","\u002Fguides\u002Fconfiguration","3.guides\u002F06.configuration",{"title":80,"path":81,"stem":82},"Events","\u002Fguides\u002Fevents","3.guides\u002F07.events",{"title":84,"path":85,"stem":86},"Tests and CI","\u002Fguides\u002Ftesting-and-ci","3.guides\u002F08.testing-and-ci",{"title":88,"path":89,"stem":90},"Production","\u002Fguides\u002Fproduction","3.guides\u002F09.production",{"title":92,"path":93,"stem":94},"Remove a Layer","\u002Fguides\u002Fremoving-a-layer","3.guides\u002F10.removing-a-layer",{"title":96,"path":97,"stem":98},"Multi-tenancy","\u002Fguides\u002Fmulti-tenancy","3.guides\u002F11.multi-tenancy",{"title":100,"icon":101,"path":102,"stem":103,"children":104,"page":26},"Commands","i-lucide-terminal","\u002Fcommands","4.commands",[105,109,113,117,121,125,129,133,137,141,145],{"title":106,"path":107,"stem":108},"Overview","\u002Fcommands\u002Foverview","4.commands\u002F01.overview",{"title":110,"path":111,"stem":112},"osdd:start","\u002Fcommands\u002Fosdd-start","4.commands\u002F02.osdd-start",{"title":114,"path":115,"stem":116},"osdd:layer","\u002Fcommands\u002Fosdd-layer","4.commands\u002F03.osdd-layer",{"title":118,"path":119,"stem":120},"osdd:list","\u002Fcommands\u002Fosdd-list","4.commands\u002F04.osdd-list",{"title":122,"path":123,"stem":124},"osdd:check","\u002Fcommands\u002Fosdd-check","4.commands\u002F05.osdd-check",{"title":126,"path":127,"stem":128},"osdd:graph","\u002Fcommands\u002Fosdd-graph","4.commands\u002F06.osdd-graph",{"title":130,"path":131,"stem":132},"osdd:seed","\u002Fcommands\u002Fosdd-seed","4.commands\u002F07.osdd-seed",{"title":134,"path":135,"stem":136},"osdd:phpunit","\u002Fcommands\u002Fosdd-phpunit","4.commands\u002F08.osdd-phpunit",{"title":138,"path":139,"stem":140},"osdd:remove","\u002Fcommands\u002Fosdd-remove","4.commands\u002F09.osdd-remove",{"title":142,"path":143,"stem":144},"osdd:cache","\u002Fcommands\u002Fosdd-cache","4.commands\u002F10.osdd-cache",{"title":146,"path":147,"stem":148},"Generators","\u002Fcommands\u002Fmake-commands","4.commands\u002F11.make-commands",{"title":150,"icon":151,"path":152,"stem":153,"children":154,"page":26},"API Reference","i-lucide-book-open","\u002Fapi-reference","5.api-reference",[155,159,162,166],{"title":156,"path":157,"stem":158},"LayerServiceProvider","\u002Fapi-reference\u002Flayer-service-provider","5.api-reference\u002F1.layer-service-provider",{"title":34,"path":160,"stem":161},"\u002Fapi-reference\u002Flayers","5.api-reference\u002F2.layers",{"title":163,"path":164,"stem":165},"SeederRegistry","\u002Fapi-reference\u002Fseeder-registry","5.api-reference\u002F3.seeder-registry",{"title":76,"path":167,"stem":168},"\u002Fapi-reference\u002Fconfiguration","5.api-reference\u002F4.configuration",{"title":170,"icon":171,"path":172,"stem":173,"children":174,"page":26},"Integrations","i-lucide-puzzle","\u002Fintegrations","6.integrations",[175,179],{"title":176,"path":177,"stem":178},"Laravel Boost","\u002Fintegrations\u002Flaravel-boost","6.integrations\u002F1.laravel-boost",{"title":180,"path":181,"stem":182},"Tinker and IDE Helper","\u002Fintegrations\u002Ftinker-and-ide-helper","6.integrations\u002F2.tinker-and-ide-helper",{"title":184,"icon":185,"path":186,"stem":187,"children":188,"page":26},"Upgrade","i-lucide-arrow-up-circle","\u002Fupgrade","7.upgrade",[189],{"title":190,"path":191,"stem":192},"Upgrade from 2.x","\u002Fupgrade\u002Ffrom-2x","7.upgrade\u002F1.from-2x",{"id":194,"title":138,"body":195,"description":573,"extension":574,"links":575,"meta":576,"navigation":577,"path":139,"seo":578,"sitemap":579,"stem":140,"__hash__":580},"docs\u002F4.commands\u002F09.osdd-remove.md",{"type":196,"value":197,"toc":562},"minimark",[198,213,241,246,314,372,376,381,392,400,409,413,416,422,425,429,447,453,457,480,483,489,493,504,521,525,551,558],[199,200,201,204,205,208,209,212],"p",{},[202,203,138],"code",{}," removes a layer from the project: its root ",[202,206,207],{},"composer.json"," entries, its ",[202,210,211],{},"phpunit.xml"," entries and its directory. It refuses a layer that another layer still requires.",[214,215,220],"pre",{"className":216,"code":217,"language":218,"meta":219,"style":219},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","php artisan osdd:remove functional\u002Flegacy\n","bash","",[202,221,222],{"__ignoreMap":219},[223,224,227,231,235,238],"span",{"class":225,"line":226},"line",1,[223,228,230],{"class":229},"sBMFI","php",[223,232,234],{"class":233},"sfazB"," artisan",[223,236,237],{"class":233}," osdd:remove",[223,239,240],{"class":233}," functional\u002Flegacy\n",[242,243,245],"h2",{"id":244},"arguments-and-options","Arguments and options",[247,248,249,262],"table",{},[250,251,252],"thead",{},[253,254,255,259],"tr",{},[256,257,258],"th",{},"Argument \u002F Option",[256,260,261],{},"Description",[263,264,265,276,286,296],"tbody",{},[253,266,267,273],{},[268,269,270],"td",{},[202,271,272],{},"name",[268,274,275],{},"The layer to remove: full name, or package name when it is unique.",[253,277,278,283],{},[268,279,280],{},[202,281,282],{},"--keep-files",[268,284,285],{},"Keep the layer directory.",[253,287,288,293],{},[268,289,290],{},[202,291,292],{},"--force",[268,294,295],{},"Remove the layer without asking. Required without a terminal.",[253,297,298,307],{},[268,299,300,303,304],{},[202,301,302],{},"--composer-update"," \u002F ",[202,305,306],{},"--no-composer-update",[268,308,309,310,313],{},"Run or skip ",[202,311,312],{},"composer update vendor\u002Fpackage"," without asking.",[214,315,317],{"className":216,"code":316,"language":218,"meta":219,"style":219},"php artisan osdd:remove functional\u002Flegacy                    # prints the changes, then asks\nphp artisan osdd:remove legacy --force --composer-update     # scripts: no question, then composer update\nphp artisan osdd:remove functional\u002Flegacy --keep-files --force\n",[202,318,319,334,355],{"__ignoreMap":219},[223,320,321,323,325,327,330],{"class":225,"line":226},[223,322,230],{"class":229},[223,324,234],{"class":233},[223,326,237],{"class":233},[223,328,329],{"class":233}," functional\u002Flegacy",[223,331,333],{"class":332},"sHwdD","                    # prints the changes, then asks\n",[223,335,337,339,341,343,346,349,352],{"class":225,"line":336},2,[223,338,230],{"class":229},[223,340,234],{"class":233},[223,342,237],{"class":233},[223,344,345],{"class":233}," legacy",[223,347,348],{"class":233}," --force",[223,350,351],{"class":233}," --composer-update",[223,353,354],{"class":332},"     # scripts: no question, then composer update\n",[223,356,358,360,362,364,366,369],{"class":225,"line":357},3,[223,359,230],{"class":229},[223,361,234],{"class":233},[223,363,237],{"class":233},[223,365,329],{"class":233},[223,367,368],{"class":233}," --keep-files",[223,370,371],{"class":233}," --force\n",[242,373,375],{"id":374},"how-it-works","How it works",[377,378,380],"h3",{"id":379},"_1-refusal","1. Refusal",[199,382,383,384,387,388,391],{},"When another layer lists the layer in its ",[202,385,386],{},"require"," or ",[202,389,390],{},"require-dev",", the command exits with 1 and changes nothing:",[214,393,398],{"className":394,"code":396,"language":397},[395],"language-text","Layer [functional\u002Flegacy] is required by functional\u002Forders: remove it from their require or require-dev first.\n","text",[202,399,396],{"__ignoreMap":219},[199,401,402,403,408],{},"Remove the requirement, and the code that uses the layer, first. ",[404,405,406],"a",{"href":123},[202,407,122],{}," finds that code.",[377,410,412],{"id":411},"_2-summary","2. Summary",[199,414,415],{},"The command prints every change before it makes it:",[214,417,420],{"className":418,"code":419,"language":397},[395],"  INFO  Removing layer [functional\u002Flegacy]:\n\n  composer.json: require functional\u002Flegacy ................................ REMOVE\n  composer.json: path repository .\u002Ffunctional\u002F* (still covers other packages)  KEEP\n  phpunit.xml: test suite functional\u002Flegacy ............................... REMOVE\n  phpunit.xml: coverage source functional\u002Flegacy\u002Fsrc ...................... REMOVE\n  Directory functional\u002Flegacy ............................................. DELETE\n  Database tables of its 1 migration ........................................ KEEP\n",[202,421,419],{"__ignoreMap":219},[199,423,424],{},"A path repository is removed only when it covers the layer and no other package directory.",[377,426,428],{"id":427},"_3-confirmation","3. Confirmation",[199,430,431,432,435,436,439,440,443,444,446],{},"It asks ",[202,433,434],{},"Remove the layer [functional\u002Flegacy]?"," (default: no). Answering no exits with 1 and prints ",[202,437,438],{},"Nothing was removed.",". Without a terminal or with ",[202,441,442],{},"-n",", it removes nothing and exits with 1 unless you pass ",[202,445,292],{},":",[214,448,451],{"className":449,"code":450,"language":397},[395],"Nothing was removed. Pass --force to remove [functional\u002Flegacy] without interaction.\n",[202,452,450],{"__ignoreMap":219},[377,454,456],{"id":455},"_4-removal","4. Removal",[199,458,459,460,387,462,464,465,467,468,472,473,475,476,479],{},"It removes the ",[202,461,386],{},[202,463,390],{}," entry and the obsolete path repositories from the root ",[202,466,207],{},", removes the test suite and the coverage source written by ",[404,469,470],{"href":135},[202,471,134],{},", deletes the directory unless ",[202,474,282],{},", and refreshes an existing ",[404,477,478],{"href":143},"layer cache",".",[199,481,482],{},"When the layer has migrations, it warns that their tables stay:",[214,484,487],{"className":485,"code":486,"language":397},[395],"The tables created by the migrations of [functional\u002Flegacy] stay in the database: drop them with a migration of another layer if they are no longer needed.\n",[202,488,486],{"__ignoreMap":219},[377,490,492],{"id":491},"_5-composer","5. Composer",[199,494,495,496,499,500,503],{},"In a terminal, it asks to run ",[202,497,498],{},"composer update functional\u002Flegacy"," (default: yes). Otherwise it prints ",[202,501,502],{},"Run composer update functional\u002Flegacy now to uninstall the layer.",". A failed update exits with 1.",[505,506,507],"warning",{},[199,508,509,510,513,514,517,518,520],{},"Run ",[202,511,512],{},"composer update"," right away. Until Composer runs, Laravel's package manifest still lists the deleted layer's provider, and every ",[202,515,516],{},"artisan"," command fails with a class-not-found error. ",[202,519,512],{}," itself works.",[242,522,524],{"id":523},"after-removing-a-layer","After removing a layer",[526,527,528,536],"ul",{},[529,530,531,532,535],"li",{},"When config, routes or events are cached, run ",[202,533,534],{},"php artisan optimize"," again: those caches still name the layer's classes.",[529,537,538,539,541,542,546,547,550],{},"With ",[202,540,282],{},", the directory stays in its layer folder, so it is still discovered: ",[404,543,544],{"href":119},[202,545,118],{}," shows it as not required. Move it out of ",[202,548,549],{},"osdd.layers.paths"," or delete it later.",[199,552,553,554,557],{},"See ",[404,555,556],{"href":93},"Remove a layer"," for the whole procedure, from the layers that still use it to its tables.",[559,560,561],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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 .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}",{"title":219,"searchDepth":226,"depth":336,"links":563},[564,565,572],{"id":244,"depth":336,"text":245},{"id":374,"depth":336,"text":375,"children":566},[567,568,569,570,571],{"id":379,"depth":357,"text":380},{"id":411,"depth":357,"text":412},{"id":427,"depth":357,"text":428},{"id":455,"depth":357,"text":456},{"id":491,"depth":357,"text":492},{"id":523,"depth":336,"text":524},"Remove a layer that no other layer requires.","md",null,{},true,{"title":138,"description":573},{"loc":139},"92tPC-X38yx_q7or6DQo7tjjfKDe1aTd2qKfg4HH2n8",[582,584],{"title":134,"path":135,"stem":136,"description":583,"children":-1},"Sync phpunit.xml with the test suite and source directory of each layer.",{"title":142,"path":143,"stem":144,"description":585,"children":-1},"Cache the discovered layers for production, or remove that cache.",1794437210447]