Nette, Composer, Adresářová struktura – vylepšení?

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

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
+
0
-

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)

nanuqcz
Člen | 822
+
0
-

Na oficiálních stránkách jsem nenašel nic o tom, že by měl sloužit jen pro PHP knihovny. Píše se tam o knihovnách obecně. O tomto svědčí také fakt, že ony „non-PHP“ knihovny na packagistu jsou, a je jich tam dost.

Filip Procházka
Moderator | 4668
+
0
-

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.

enumag
Člen | 2118
+
0
-

@Filip Procházka: +1

Jakékoli CSS a JS řeším buď přes CDN pokud to jde anebo je normálně postaru kopíruju. Nástroj na správu CSS a JS závislostí asi ještě neexistuje (hodil by se).

Filip Procházka
Moderator | 4668
+
0
-

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
+
0
-

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
+
0
-

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ě).

Filip Procházka
Moderator | 4668
+
0
-

Nesouhlasíš s tím, že mně vyhovuje WebLoader? ;D

enumag
Člen | 2118
+
0
-

Nesouhlasím s tím, že WebLoader řeší daný problém. ;D Slovíčkařit snad nemusíme. :-)

LeonardoCA
Člen | 296
+
0
-

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
+
0
-

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
+
0
-

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)