ugrás a tartalomhoz

Composer package root path

szobek · 2017. Már. 23. (Cs), 16.42
Sziasztok!

Egy egyszerű dolgot szeretnék megcsinálni, és ehhez szükségem lenne egy composer package-re.
A lényeg: egy mappában összegyűjtve szeretném tárolni az általános php/laravel/html projektekhez a szükséges dolgokat, pl: gulp file example, sass alapok, appconfig js, stb. Sikerült is csinálnom egy
teszt package-et (éljen-éljen!! ), de nem sikerül belőnöm azt, hogy a telepítési mappa ne a vendorba menjen, hanem a project root részén hozzon létre egy mappát.

a composer.json jelenleg:


{
 "name": "szobek/front-end-dev",
 "description": "It's a directory for my all laravel and other project. Included: examples (gulp.js, appconfig.js, etc), angular files, sass files with todos, bootstrap, jquery, moment js.",
 "type": "project",
 "license": "MIT",
 "authors": [
 {
 "name": "szobek",
 "email": "szobek##kukac##szobekweb.hu"
 }
 ],
 "minimum-stability": "dev",
 "require": {
 "php": ">=5.3.0",
 "composer/installers": "~1.0"
 },
 "extra": {
 "installer-paths": {
 "front_end": ["vendor/package"]
 }
 }
}

Elvileg az extra kulcsban kéne beállítani, de még nem jöttem rá, hogy hogyan, hiába nézem a doksit, nem igazán esik le...
Ha valaki csinált már ilyet, kérem segítsen a telepítési mappa belövésével.
Előre is köszönöm a segítséget!

Üdv:
Szobek
 
1

Off

Hidvégi Gábor · 2017. Már. 23. (Cs), 17.23
Hehe, jót nevettem. A következőt írod: "Egy egyszerű dolgot szeretnék megcsinálni", aztán sorolod a következőket: "php, laravel, html, projekt, gulp file example, sass alapok, appconfig js, teszt package, vendor, project root, composer.json". Ez oximoron, nem csodálom, hogy nem jött össze elsőre : )
2

Nem ennyire össszetett

szobek · 2017. Már. 23. (Cs), 17.27
A lényeg, hogy egy mappát tudjak telepíteni/letölteni, a projekt formája (laravel, html5, hybrid app, stb) lényegtelen, csak az a cél, hogy ha a composer.json-be beírom a package nevét, akkor ne a vendorba töltődjön be, hanem a projekt root mappájába menjen. A package most is működik, ki is lehet próbálni, csak sajnos nem oda telepít ahova szeretném...
3

Csomag

Hidvégi Gábor · 2017. Már. 23. (Cs), 21.01
Látom, nagyon komolyan veszed magad. A sorakozó válaszokból látszik, mennyire triviális a kérdésed, pedig hidd el, sokan állnak titokban sorba, hogy pontokat gyűjthessenek maguknak.

Én a Commanderben F7-tel hozok létre mappát, és F5-tel másolgatok fájlokat immáron huszonöt éve, ennél egyszerűbbet nem tudok ajánlani. Sajnos csak ennyivel tudtam segíteni.
4

Ezért kár volt hozzászólnod.

bamegakapa · 2017. Már. 24. (P), 08.07
Ezért kár volt hozzászólnod. Gratulálok.
5

Kedves Gábor. Eddig én is így

szobek · 2017. Már. 24. (P), 10.31
Kedves Gábor. Eddig én is így csináltam, de ha van rá megoldás, hogy egy composer fájllal mindent telepítsek egy paranccsal (laravel, angular, bootstrap, stb...), és mindig a legfrissebb komponenseket, akkor mért ne használjam ki ezt a lehetőséget. Hiszen erre használják. Vagy ha azt írtam volna, hogy ez egy általános html modul, amit szeretnék sokszor használni, akkor más meglátásod lenne? Sokszor van, hogy melóhelyen kell ez a mappa, sokszor otthon, vagy munkatársamnak kell, stb. De itt most nem a szükségességéről szeretnék vitázni, hanem egy segítséget szerettem volna kérni.
6

Félre ne érts!

Hidvégi Gábor · 2017. Már. 24. (P), 10.44
Nem vitatom a szükségességét annak, amit leírtál. A mindig a legfrissebb komponenseket viszont igen, mert azzal nagyokat lehet csúszni.

Ezek a "szoftverek" nagyon összetettek, és sosem tudhatod, a fejlesztők mit rontottak el az új verzióban. Mostanában javascript keretrendszereket vizsgálok, ha jól emlékszem, a vue.js-nél volt olyan, hogy az API tíz százalékát változtatták meg visszafele nem kompatibilis módon, vagy például a react bizonyos böngészőkön 30%-ot lassult egy verzióváltásnál.

Szóval én inkább a kézi telepítést és frissítést javaslom, úgy, hogy előbb egy saját gépen végigteszteled az új verziót.
7

composer verziókövető

Pepita · 2017. Már. 24. (P), 11.01
Composerben meg tudod adni a verziót pontosan / részben is, pl "elasticsearch/elasticsearch": "5.0.*", szobek szerintem hasonlóan csinálja, emiatt még egyáltalán nem indokolt a "kézi" frissítés.

Egyszerűen annyi, hogy amikor ki akarod próbálni a (mondjuk) 5.1.0 verziót, akkor ezt az egy sort módosítod egy json fájlban, rebuild, és már keresheted is a verzióváltás okozta hibákat. :)

Ennek a lényege abban rejlik, hogy nem tudsz kifelejteni egy (több) "alkatrészt", mint a kézi másolgatásnál.

Szobek, a helyes válasz szerintem itt van.
8

Köszönöm a kifejtést

szobek · 2017. Már. 24. (P), 11.13
Valóban így van, ahogy leírtad, és eddig nem is volt ilyennel problémánk szerencsére, de persze ami késik... :) És igen, köszönöm a linket, de valamiért így is a vendorba pakolta... Ezzel próbálkoztam, de valamiért így is a vendorba ment. Ha megnézed a fent írt példakódomban, ott is így van. De az istenért nem tudok rájönni, hogy mi lehet a baj. Mert a package típusa se mindegy, de azt is megadtam a json-ban...
11

Mert a példádban is

Pepita · 2017. Már. 24. (P), 11.56
a vendor mappa szerepel?
 "installer-paths": {
 "front_end": ["vendor/package"]
 }
Bár nem tudom biztosan, nálunk az ilyesmit nem én állítom be, csak verziót váltok / újat hozok néha, sorry, annyira nem értek hozzá.
12

Mert a példakódban is ez

szobek · 2017. Már. 24. (P), 12.06
Mert a példakódban is ez szerepel ezen az oldalon:
ha jól értem ez csak a típust jelöli.
9

Kézi

Hidvégi Gábor · 2017. Már. 24. (P), 11.29
Egyszerűen annyi, hogy amikor ki akarod próbálni a (mondjuk) 5.1.0 verziót, akkor ezt az egy sort módosítod egy json fájlban
Tehát kézi a frissítés : ) Hogy az adott verziót utána parancssorból vagy composerrel telepíted/frissíted, már részletkérdés.
10

Azért ne felejtsd el:

Pepita · 2017. Már. 24. (P), 11.52
Egyrészt erre (is) céloztam:
Én a Commanderben F7-tel hozok létre mappát, és F5-tel másolgatok fájlokat immáron huszonöt éve

Másrészt a példámban is ott a "*", és létezik "latest" verzió is.
Csak jeleztem, hogy ha félsz automatikusan mindig legfrissebbre váltani valamiből, akkor arra is van jobb megoldás a kézi másolgatásnál.
De te az élő fába is belekötsz. :)
13

Mi úgy oldottuk meg ezt a

smokey · 2017. Már. 26. (V), 00.10
Mi úgy oldottuk meg ezt a problémát, hogy egy git repoba kitettük a skeleton projectet, amit minden project indulásnál forkolunk (ahány típusú project, annyi repo; jelenleg 2 db van: AngularJS frontend project, PHP Silex backend project).

Ezeknek része gyébként egy-egy composer.json vagy egy bower.json is, ami összeszedi a project egyéb függőségét is.

Kicsit úgy érzem, mintha két problémát szeretnél egy olyan eszközzel megoldani, ami csak az egyikre szolgál normális megoldást. Lehet a forkolást sem erre specializálták, de nálunk működik így.

Egyébként berendezkedtünk a fenti projecttípusokra, amennyire csak lehetett, egy rakat saját komponens ki van téve composer illetve bower packegbe. Rengeteg időt spórolunk a fejlesztéssel így. Természetesen a cél szentesíti az eszközt: nem mindig ezt használjuk, nem adjuk el csak azért, mert ezünk van. Ha kell, természetesen tök mást használunk.
14

Szia. Igen, nálam is hasonló

szobek · 2017. Már. 27. (H), 08.06
Szia. Igen, nálam is hasonló lesz szerintem a megoldás. Igazából nem 2 probléma, mert én ugyan azt a mappát szoktam használni a projektekre, egyszerűbb, átláthatóbb. A laravel projektekhez és a mobil appokhoz is megfelelő a mappaszerkezet, mert ebben csak a komponensek vannak, és innen generálom gulppal a kész fájlokat. Csak az a probléma, hogy így sem látom a megoldást arra, hogy a rootba telepítsem azt a mappát... A Vendorral az a baj, hogy ugye az benne van az ignore fájlban, így nem lehet csoportosan szerkeszteni.
15

Értem mit szeretnél, de

smokey · 2017. Már. 27. (H), 22.19
Értem mit szeretnél, de szerintem ez akkor is két probléma:

1. Szeretnél vendorokat, külső függőségeket kezelni

Ezt a composer megoldja.

2. Szeretnél egyéb dolgokat kezelni - gulp file example, sass alapok, appconfig js

A fenti három pont közül (és gyanítom a stb-ben is van pár ilyen) kettő szerintem nem composer által kezelendő külső függőség, hanem egy alap, egy skeleton, egy váz, ami alkalmazás secifikussá fog válni, nem third partyként fog viselkedni,

- gulp file example: minden projectnek lesz saját igénye
- appconfig js: config, tehát alkalmazás/környezet specifikus
- sass alapok: amit ezek szerint ki lehet terjeszteni > ennek szerintem vendorban a helye

Amit te szeretnél, arra én composert nem használnék, mert ha növeled a package verzióját, és adott esetben nem fix verzióval hivatkozod be egy composer.json-be, és mondjuk felülírtad a tartalmát a project egyik igénye miatt, és futtatsz rajt egy composer updatet, akkor jogosan írja felül a composer az általad módosított fájlokat az ő saját verziójával, kvázi elvesztek a project specifikus módosításaid, amiket viszont illik verziókezelni, kvázi nem third partyként - adott esetben composerrel - használni.

Van az a pont, ahol duplikálni kell bizonyos dolgokat azért, hogy ne szivasd meg saját magad, ezért javasoltam a skeleton projectet, ahol összerakod a project vázát:
- gulp fájllal, sass alapokkal, keret index fájllal, előre legyártott könyvtárszerkezettel, config fájlokkal, default bower.json-nel, default composer.json-nel

Ezek mindegyike projectenként változhat, ezért nem tartom célszerűnek őket egy composer packagbe kitenni, mert ezek az állományok nem kiterjesztődnek, hanem módosulnak, felülírodnak.
16

Szia! Köszönöm a kifejtést és

szobek · 2017. Már. 28. (K), 07.45
Szia! Köszönöm a kifejtést és fejet hajtok előtted :) Igazából olyan megoldáson kezdtem gondolkodni, hogy egy másolással oldom meg egy php fájlból a composer telepítés után. De lehet, hogy maradnék a composernél.
De gondolkozok még kicsit, és ha jutottam valamire, közzéteszem, ha érdekel valakit egyáltalán. :)