Organizace projektů na disku
- Skřetík
- Člen | 11
Ahoj,
mám dotaz k organizaci, jak to řešíte vy (a případně proč si
myslíte že je to dobře). Postupně jsem se propracoval k tomu, že mám na
disku něco ve smyslu
C:\Users\User\PhpstormProjects\Sandbox
alternativně
C:\Users\User\NetbeansProjects\Sandbox`
ten se následně skrze IDE kopíruje do dalšího adresáře kde je root lokálního webserveru (tzn. C:\wamp64\www\Sandbox). Důvod je, abych v projektu samotném neměl zbytečně obsah dat od uživatele (obrázky, soubory), sessions, node_modules, a hlavně u nette temp kde je zkompilovaný kód, což IDE nedělá moc dobře, abych měl local.neon jen v kopii a tak dále.
U pár dalších projektů jsem pak composer spouštěl v projektu samotném (tedy i vendor se zrcadlil), abych měl v gitu i composer.lock. Negativum samozřejmě je množství místa – stačí aby projekt potřeboval google knihovnu, vendor naskočí na 10k+ souborů, a je to nepříjemné. Include vendora do IDE z kopie byl v takovém případě lepší volba, jenže zase člověk řešil separátně že musí zkopírovat composer.lock do projektu, aby případný další programátor měl stejné knihovny ve stejných verzích (nebo poctivě psát všude konkrétní verzi knihovny již do composeru). Další varianta byl pak jen symlink projektu do kopie, což sice šetří místo, ale zase je potřeba řešit obrázky/session atd. což taky není ideální.
Jakou cestu používáte vy, a případně proč?
Děkuji
- Mysteria
- Člen | 797
Nějak nechápu to kopírování. Proč nemáš normálně ty projekty v rootu lokálního serveru? V Době před Dockerem jsem to měl taky tak a bez problémů. PhpStormu by taky nějaký vendor nebo cache neměla vadit, samozřejmě předpokládá se že máš SSD, na HDD to asi nebude úplně ono. Případně stačí složky excludnout, pokud je to hodně pomalé.
- Toanir
- Člen | 57
Jestli tě trápí zbuilděný nebo jiný „nežádaný“ soubory, zkus si vyhledat možnosti jak je ignorovat v daným programu. Pro git slouží soubor .gitignore a třeba PHPStorm umí ignorovat celý složky (Pravý klik > Mark directory as > Excluded)
K rozložení projektů: Můj oblíbený setup je lehce komplikovaný ale vyhovuje mi protože to připomíná produkční prostředí. :P
Baví mě mít projekty v adresářový struktuře odpovídající
repozitářový struktuře (třeba na githubu), tj všechno cpu na
D:\Projects\<uživatel nebo společnost>\<název projektu>
V týhle složce mám rozjetý .git, nainstalovaný vendor a node_modules a případně zbuilděný frontendový soubory v <kořen projektu>\www\dist\
Tyhle projekty mi potom spouští apache (wampp) kterej načítá konfigurace jednotlivejch projektů pomocí
# soubor httpd.conf
Include D:/web-dev/sites-enabled/*.conf
Include D:/web-dev/sites-enabled/**/*.conf
Ukázka konfigurace jednotlivých projektů (nepovím, jak jsem k tomu přišel – konfigurace apache je pro mě skoro černá skříňka :P tohle si kopíruju mezi novými projekty)
# soubor D:\web-dev\sites-enabled\personal\paf.conf
<VirtualHost *:80>
ServerName paf.local
DocumentRoot "D:\Projects\Thoronir42\paf\www"
ErrorLog "D:\web-dev\logs\paf.err.log"
CustomLog "D:\web-dev\logs\paf.custom.log" common
</VirtualHost>
<Directory "D:\Projects\Thoronir42\paf\www">
Options indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Order allow,deny
Allow from all
Require all granted
</Directory>
Ve finále přidám lokální DNS záznam pro stránku (díky čemuž jsou lokální projekty dostupný pod pěknými URL, např http://paf.local):
# soubor C:\Windows\System32\drivers\etc\hosts
127.0.0.1 paf.local
Je to docela dost nastavení najednou ale celkově mi to přijde optimální
protože jsou potom projekty na sobě nezávislý.
Zároveň projekty nesídlí ve složce webovýho serveru a když chci zkoušet
jiný verze PHP, nainstaluju si další instanci WAMPP, kde jen nastavím
zahrnutí konfiguráků.
- joe
- Člen | 313
Celé mi to přijde jako komplikace. Všechny projekty bych měl v rootu,
v tvém případě v složce C:\wamp64\www\
Pokud projekty verzuješ v Gitu, pak stačí správně nastavit
.gitignore
, vyignorovat soubory a složky, které nechceš – tj.
třeba node_modules
, vendor
, .idea
,
složku pro NetBeans (sakra, to ještě někdo moje dřív oblíbený IDE
ještě dneska používá na PHP, už nevím v jakém je stavu teď). Soubory
jako composer.lock
a package-lock.json
naopak
verzuj.
Popravdě nechápu ten důvod kopírování.
Osobně to mám teď už všechno tak, že server na počítači už nainstalovaný ani nemám, ale řeším vše přes Docker (způsobí, že všichni vývojáři rozběhnout projekt ve stejném prostředí) a Traefik, ale mám teď ve správě jen pár projektů, pro velký počet by to mohla být komplikace.
- Skřetík
- Člen | 11
V NetBeans mám starší projekty, a nechtělo se mi je přesouvat na PHPStorm kvůli nastavování.
Kopírování je tak trochu relikt minulosti, ale je třeba nepříjemné když po switchi branche mi mizí soubory typu local.neon, deployment.ini, deployment.log atd., protože v gitu jsou ignorované, a PHPStorm mi to při každém switchi branche maže. A dávat do gitu přístupy k databázi, serveru, přihlašovací údaje k službám atd. se mi nechce.
Editoval Skřetík (13. 1. 2021 13:49)