složky v sandboxu – proč to je tak?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
had12
Člen | 28
+
0
-

Ahoj,
mám pár šťouravých otázek ohledně struktury složek v sandboxu. Nemůžu si pomoct, ale už delší dobu mě trápí. :)

  1. K čemu je dobrý adresář /vendor/dg? Zkratka „dg“ je tu reklamou na Davida, nebo něčím jiným? Když už mám v sandboxu ten adminer, proč to není oddělené, třeba /vendor/adminer? A jak ten adminer můžu volat na ostrém serveru, je pro to nějaká zkratka?
  2. Proč je samotné Nette umístěné ve složkách /vendor/nette/nette/Nette/? Nestačilo by jenom /vendor/nette?
  3. Proč je defaultně vytvořená složka /vendor/others, když v ní nic není? Chápu, že se do ní mají nahrávat vlastní přídavné skripty, ale proč je nenahrávat třeba do /vendor/cokoliv?
  4. Proč došlo k přejmenování složky z /libs na /vendor?
  5. K čemu je mi dobrá složka /bin a skript, co mi zakládá uživatele v databázi? Pokud má být sandbox univerzální složkou pro tvorbu nového projektu, kterou stačí jenom zkopírovat a upravit připojení k databázi, proč jsou do ní narvané různé blbosti (např. /tests/)? Nestačí jednoduchá stránka homepage?
  6. Nepoužívám-li composer, k čemu je mi pak dobrý soubor /sandbox/composer.json?

Tak nevím, z jakých důvodů je v sandboxu tohle všechno, zřejmě mi nějak unikají důvody proč. Vždyť trvá čtvrt hodiny, než promažu ty blbosti ze sandboxu a otestuju si to, abych mohl konečně začít psát nový projekt… :-(

Šaman
Člen | 2666
+
0
-

Odpověď na první půlku otázek je „protože Composer a jeho balíčky“.

Druhá půlka souvisí s tím, že Sandbox není Skeleton. Sandbox je připravený na rychlé spuštění a pokusy, ale tak, jak je distribuován, není základem nové aplikace. Většina lidí má stejně svůj vlastní Skeleton, často vzniklý promazáním Sandboxu a doplněním vlastních věcí (u mě třeba zkratka pro barDump() a pozměněná adresářová struktura).

Nejsem si jistý, jestli vendor/cokoliv nebude composer nějak přepisovat. Vím jen, že vendor/others ignoruje a ten je bezpečný. Jinak je vendor ve správě Composeru.

Nepoužíváš-li composer, jsou ti jeho soubory na nic.

had12
Člen | 28
+
0
-

aha… díky za odpověď. Teď už mi leccos docvaklo, jen je mi líto, že neexistuje takový skeleton, který by byl nezávislý na nějakejch composerech a netbeansech… okuchat sandbox do fungující podoby je pro začátečníka nadlidský úkol.

Tomáš Votruba
Moderator | 1114
+
0
-

@had12: Místo kuchání bych doporučil se naučit s composerem pracovat, je na to pěkný návod

Defakto tě čeká pár řádků copy-paste instalace a pak můžeš pomocí

composer create-project nette/sandbox myApplication dev-master

a F5 spustit celý fční sandbox.

Hlavně do budoucna tě to ušetří stahování různých doplňků a balíčků pomocí myši. Pokud tedy plánuješ programovat dlouhodobě, teď máš skvělou možnost si to usnadnit. Sám jsem se composeru dlouho vyhýbal z podobných důvodů jaké tu popisuješ. Pak jsem došel na to, že jeho prací je mi tu mou usnadnit. A teď je to paráda :).

had12
Člen | 28
+
0
-

no… vážně se mi do toho nechce, ale zkusím to tedy. Když mě to naštve, má to u mě útrum definitivní. Právě se mi podařilo vypilovat skeletona i s bootstrapem a font-awesomem, tak pokud mě to bude štvát, zatratím composer i se vším všudy. ;)

Tomáš Votruba
Moderator | 1114
+
0
-

Chapu, v klidu a pohode. Napis, s cim budes mit pripadne problem. Rad poradim.

Jinak Bootstrap i Fontawesome jdou s composerem take vyuzit, za pomoci doplnku WebLoader.

Filip Procházka
Moderator | 4668
+
0
-

Composer se rozhodně nauč používat a neměň složku do které instaluje závislosti (tedy vendor/), to libs/ co tam jednu chvíli bylo je obskurdita která nemá žádnou přidanou hodnotu.

Ohledně vendor/others, na to se vykašli a udělej si složku libs/, do které si budeš dávat svoje knihovny které nemáš v composeru a knihovny dalších lidí které oni nemají v composeru. Do složky vendor/ se zkrátka nesahá.

A díky tomu že použiješ autoloader, který ti vygeneruje composer, tak nějakou strukturu složek v vendor/ vůbec řešit nemusíš, proště jenom místo

require_once __DIR__ . '/../libs/Nette/loader.php;

napíšeš

require_once __DIR__ . '/../vendor/autoload.php;

A úplně všechny třídy všech knihoven které jsi nainstaloval přes composer se ti budou na požádání krásně autoloadovat bez jakéhokoliv dalšího nastavování a stresování s robotloaderem.

Proto je taky dobrý zařídit aby RobotLoader nenačítal vendor/ ale jenom tvoje app/ a libs/ (což jde snadno změnit v tvém bootstrapu).

had12
Člen | 28
+
0
-

ok, zkusím to, ale ne hned, práce mám nad hlavu a času málo. :-) každopádně kdyby něco, tak se sem ozvu. Díky za tipy i za motivaci ;)