Yeoman generátor pro Nette projekty
- chemix
- Nette Core | 1310
Ahoj
připravil jsem základní Yeoman generátor pro Nette github.com/chemix/generator-nette.
V tuto chvíli umí vygenrovat základ aplikace a stáhnout composer
závislosti (kod braný z nette/web-project) plus si můžete zvolit zdali
chcete nainstalovat Adminer. Další generátor je pro presenter spolu se
šablonou a generátor pro componentu (php + latte).
TODO:
- generátor pro extension
- konfigurace pro nazvy slozek
- Application generator
BasePresenter ano/nedatabáze (zeptat se na credentials i bez uzivatelu)uživatelé (ze sandboxu)- ? kdyby/console
- ? nextras/migrations
nápady vítány
instalace
musíte mít nainstalovaný node.js a npm (nodejs.org)
následně nainstalujete Yeoman (yeoman.io)
npm install -g yo
a generator-nette
npm install -g generator-nette
Použití
Pak už stačí vytvořit adresář a v něm zavolat yo nette
pro vygenerování aplikace.
Příkazy
yo nette
– základní aplikace
yo nette:presenter name
– vygeneruje presenter
yo nette:component name
– vygeneruje componentu
Video
- Stene
- Člen | 6
@chemix Adresáře jsou v jednotném čísle, a první písmeno názvu je vždy velké (components ⇒ Component, presenters ⇒ Presenter).
Základní konfigurace je jen návrh, rozhodně se s tím nemusíš psát hned ty. Klidně si to dopíšeme v pull requestu, pokud tam obecnou konfiguraci budeš chtít začlenit.
Editoval Stene (7. 9. 2015 13:44)
- Oli
- Člen | 1215
Myslím, že by nebylo od věci implementovat možnost vytvářet (zejména komponenty) relativně od místa, kde se právě nacházím. A generovat to jako PSR-4. Mám spoustu modulů načítaných composerem a autoload nastaven na PSR-4. Používám symlinky. Co jsem se na to zběžně koukal, tak by to neměl být problém. Pak by to mohlo vypadat třeba takhle:
yo nette:component Component\Grid\ArticlesGrid
Což by vygenerovalo něco jako
misto-kde-jsem-byl\Compoenent\Grid\ArticlesGrid.php
namespace Component\Grid;
class ArticlesGrid {}
Problém zatím vidím jen v tom, že u composeru si nadefinuješ, jakej
namespace se má vždy prefixovat, viz. https://github.com/…omposer.json#L23.
Tam mě nic kromě parametru (např. -psr-4 ArticleModule
)nenapadá
a parametr mě přijde takovej nesystemovej :-)
- chemix
- Nette Core | 1310
generator-nette@0.3.1
pridana podpora pro uzivatele ze sandboxu (plus dotazani na prihlaseni do databaze)
+ generator-nette@0.3.2
(na databazi se ptame i bez
uzivatelu)
+ generator-nette@0.3.3
(BasePresenter (optional), uprava
Homepage template)
+ generator-nette@0.3.4
(pokud se nepouziva N\DB nedavame
zavyslost do composer.json)
+ generator-nette@0.3.5
(ukladani konfigurace zdali se pouziva
BasePresenter)
Q:
davat do toho treba nejake komponenty z kdyby? nextras? console? migrations?
- chemix
- Nette Core | 1310
Co obsahuje váš základní sandbox/skeleton
Podelte se o napaday co bych mohl pridat do Nette generatoru … Mate nejaky svuj sandbox? Co by mel generator obsahovat ve verzi 1.0.0?
Napady:
Pracuji na pridání Kdyby\ Translation, vec co se hodi lidem co delaji multi web
Chtel bych pridat Nextras\ Migrations pro snadnejsi rozbehnuti databaze a tvorbu aktualizaci
Pridani prepinace zdali se pojede na dva moduly? Admin/Frontend nebo jen jen jeden (webproject/sandbox).
Premyslim o pridani nejakeho frontendoveho balicku, tj jQuery, NetteForms.js, Nette.Ajax.js, Bootstrap 3 (nebo neco mensiho? purecss.io) Grunt minifikator/builder?
+ je tu nekdo kdo by mi pomohl s generatorem DI extension?
- enumag
- Člen | 2118
@chemix Jestli v projektu je nebo není nette nehraje roli (aspoň můj gulpfile o nette vůbec neví) takže by ti měly postačit obecné tutoriály ke gulpu. Dám ti ale dva tipy, které v nich nenajdeš:
- Ve většině tutoriálů najdeš na začátku gulpfile.js něco na tento způsob:
var gulp = require('gulp');
var jshint = require('gulp-jshint');
var sass = require('gulp-sass');
var concat = require('gulp-concat');
var uglify = require('gulp-uglify');
var rename = require('gulp-rename');
// seznam pluginů ti poroste čím déle budeš gulp používat
gulp.task('css', function () {
return gulp.src('scss/*.scss')
.pipe(sass())
.pipe(gulp.dest('css'));
});
// další tasky
Osobně mám raději tento způsob:
var plugins = require('gulp-load-plugins')();
var gulp = require('gulp');
gulp.task('css', function () {
return gulp.src('scss/*.scss')
.pipe(plugins.sass()) // zde změna
.pipe(gulp.dest('css'));
});
Vyžaduje gulp-load-plugins.
- Zpravidla v máš integrované pluginy pro minifikaci CSS a JS. Problém je že pak tasky obzvlášť v případě JS trvají hrozně dlouho protože minifikace je pracná což se pro vývoj nehodí. Obcházím to takhle:
var plugins = require('gulp-load-plugins')();
var gulp = plugins.param(require('gulp'), process.argv); // podstatný magický řádek
gulp.task('css', function (dev) { // zde přidán parametr
return gulp.src('scss/*.scss')
.pipe(plugins.sass())
.pipe(plugins.if(!dev, plugins.cssmin())) // místo klasického .pipe(plugins.cssmin())
.pipe(gulp.dest('css'));
});
Nyní gulp css
spustí task normálně s minifikací kdežto
gulp css --dev
jej spustí bez minifikace. U CSS to nehraje moc
roli, ale u JS se mi to velmi osvědčilo.
Vyžaduje gulp-param a gulp-if.
- chemix
- Nette Core | 1310
@enumag to je presne to co nechci :) nacitat vsechny css z adresare, pripadne je definovat v gulp file…
ja mam na to https://github.com/…tfile.coffee
kde akorat reknu ze ma kontrolovat @layout.latte
ve kterem podle
toho zdali chci minifikovanou verzi nebo vyvojovou verzi si prepinam pomoci
promenne pomoci komentaru je zajistena minifikace definovanych css/js
souboru https://github.com/…layout.latte
- David Kudera
- Člen | 455
SRP mám hodně rád, všude.. „Definice“ buildu v latte? Určitě nic pro mě, minimálně ale díky za rozšíření obzorů, takový způsob jsem neznal..
Jinak ale používám téměř to stejné jako @enumag: https://github.com/…/gulpfile.js#… (outdated). Už teď např. vím, že se mi hodně líbí to rozhodnutí, jestli minifikovat nebo ne. Pro deploy myslím super…
- chemix
- Nette Core | 1310
@enumag preprocesor resim v jinem tasku, watch
. Jelikoz
kazdy muze pouzivat jakykoli preprocesor. Treba i dva na jednom projektu
(stylus – mé css, sass – foundation)
jinak pak mam latte soubor ve kterem mam vicero css a js (idealni pro vyvoj) a nasledne tam je plugin co najde vyskyty css a js a pripravi cesty pro dalsi ukoly (spojeni + minifikace)
- newPOPE
- Člen | 648
@enumag je to nieco taketo https://github.com/…grunt-usemin#… tiez som to pouzival a to som do projektu nemusel vobec zasahovat (ziadny update configu atd.) Zo sablony si vytiahne co potrebuje min, concat, … urobi co ma a prepise sablonu. Je to pohodlne a nemusis sa o nic starat len zmenis sablonu ak potrebujes dalsi subor.
@chemix s cim by si potreboval pomoct s extensions? Pripadne napis message.
Editoval newPOPE (18. 9. 2015 14:31)