Nette, Composer, Adresářová struktura – vylepšení?
- nanuqcz
- Člen | 822
Ahoj,
vytvořím si nový Nette projekt:
composer create-project nette/sandbox muj_projekt
Poté chci nainstalovat nějaké závislosti. Řekněme že chci v projektu používat jQuery a twitter/bootstrap.
cd muj_projekt
composer require kraksoft/jquery 1.*
composer require twitter/bootstrap 2.*
Poté se mi jQuery uloží do
libs\kraksoft\jquery\kraksoft-jquery-992794b\js\jquery.js
, a
Twitter/Bootstrap do
libs\twitter\bootstrap\twitter\bootstrap\twitter-bootstrap-249ff5a\
.
Adresář libs
je, jak víte, v Nette aplikaci nepřístupný
veřejnosti, protože je umístěn „nad“ rootem webového
serveru. A tak nemůžu ve výsledku použít ani stažené jQuery,
ani Bootstrap.
Jak toto řešit? Předem odpovím na dvě výtky, které vás možná napadnou:
- „však si ten nette/sandbox uprav“ – v tom případě mi dáváte za pravdu, že Nette/Sandbox není uzpůsoben pro použití s Composerem. Měl by se tedy opravit.
- „tak si ty dvě věci potom přesuň do složky www“ – v tom případě se vytrácí veškeré výhody Composeru (aktualizace závislostí, řešení vnořených závislostí, apod.) a nechápu, proč bych ho měl používat
Na skutečnost, že dávat některé adresáře „nad“ úroveň rootu není nejlepší řešení, se snažím upozorňovat už dlouho. A teď mi Composer (tím, že s ním Nette není plně kompatibilní) dává za pravdu.
Díky za názory
Editoval nanuqcz (15. 1. 2013 13:41)
- rixi
- Člen | 109
composer je nastroj na spravu php zavislosti, preto neexistuje officialny postup ako si do aplikacie naincludovat „staticke“ veci ako twitter bootstrap alebo jquery.
twitter bootstrap sa da vsak celkom pekne includnut cez LESS, ktory by bol
umiestneny v /www
@import '../../../vendor/twitter/bootstrap/twitter/bootstrap/less/bootstrap.less';
jquery
a dalsie javascriptove subory kopirovat do
/www
napriklad pomocou funkcii file_exists()
a
copy()
.
Editoval rixi (15. 1. 2013 14:14)
- Filip Procházka
- Moderator | 4668
Ber jako fakt, že by to tak být nemělo. Sami autoři Composeru se tomu velice brání, ale zakazovat to nikomu nechtějí.
Když tedy překousneme, že používáš nástroj na správu PHP závislostí, aby ti instaloval JavaSriptové a CSS knihovny (slyšíš jak to zní, jako bys znásilňoval něčí babičku?), můžeš buď použít zmíněný less (či jiný preprocessor), nebo WebLoader.
- Filip Procházka
- Moderator | 4668
Něco se chystá, ale nevím jestli se to chytne: http://twitter.github.com/bower/
Více mi vyhovuje nástroj typu WebLoader.
- rixi
- Člen | 109
Filip Procházka wrote:
Něco se chystá, ale nevím jestli se to chytne: http://twitter.github.com/bower/
skusali ste to niekto? vyzera to dobre
Editoval rixi (15. 1. 2013 16:13)
- enumag
- Člen | 2118
Filip Procházka napsal(a):
Něco se chystá, ale nevím jestli se to chytne: http://twitter.github.com/bower/
Zajímavé, někdy to vyzkouším, ale nechci teď kvůli tomu rozjíždět Node.js. Má-li s tímhle managerem někdo zkušenosti, jsou vítány.
Více mi vyhovuje nástroj typu WebLoader.
Nesouhlasím, dependency manager chci hlavně kvůli tomu aby za mne hlídal nové verze (takhle je musím kontrolovat ručně).
- LeonardoCA
- Člen | 296
Osobně si myslím, že bower bude/je stejným standartem jako composer pro php. Je integrován i v yeoman. Přemýšlím o tom jak ty dva světy backend/frontend závislostí šikovně propojit. Jakmile tohle někdo dořeší, myslím si, že výsledek bude o level nebo dva lepší než všechno co je aktuálně dostupné.
Na druhou stranu si nejsem jistý jestli je budoucnost v takovém propojování a nebo spíše v tom zapomenout na php úplně a raději začít vyvíjet v js i na server side. (Ale moc se mi nechce opouštět nette sotva jsem se s ním trochu seznámil)
Btw. technologicky se mi hodně líbí třeba řešení trello.com.
http://blog.fogcreek.com/…-tech-stack/
Editoval LeonardoCA (16. 1. 2013 1:35)
- enumag
- Člen | 2118
A co teprve ti kdo už v Nette x let pracují. :-) Na JS se mi od prvopočátku nějak nelíbí syntax, a hlavně OOP. Což tuším řeší CoffeeScript a podobné projekty ale nevím nakolik je to použitelné a debugovatelné – laděnka nechutně rozmazluje. :-D
Zpět k tématu… Třeba takové Wysiwygy se skládají ze spousty JS, trochy CSS a pluginů pro upload který potřebuje i nějaké to PHP. Instalovat tyhle věci přes něco jako composer / bower si moc neumím představit, protože tam je nutná detailní konfigurace.
- LeonardoCA
- Člen | 296
Ještě do toho moc nevidím, protože jsem si všechno neošahal, ale myslím si, že základ je neplést dohromady (1.) řešení závislostí + stáhnutí různých knihoven a (2.) konfiguraci. To jsou dvě různé věci a měly by být řešené samostatně.
Druhá věc je že na sebe mohou plynule navazovat a konfigurace by mohla být spuštěná přímo z composeru (pokud je to vůbec potřeba).
Editoval LeonardoCA (16. 1. 2013 1:56)