Reseni composer autoload ignore

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

Ahoj,

nikde jsem nenasel, jestli autoloader v composeru podporuje ignorovani nejakych adresaru z projektu.
Jde mi o to, ze vytvorim nejakou komponentu, dam ji treba na github a mam tam adresare src/, ve kterem jsou samostatne knihovny, ktere pak pristanou ve vendor-dir, ale je tam i napr. examples/. Ty bych prave chtel ignorovat, protoze pokud do nich dam napr. celou tridu nejakeho presenteru, abych ukazal pouziti, tak mi ji autoloader nacte a pokud se jmenuje treba DefaultPresenter, tak je problem.

Mozna by se to dalo vyresit tim, ze bych udelal namespace Example a v nem mel tyto ukazkove zdrojaky. Ale stejne je pak zbytecne je autoloadovat do projektu. Proto by se hodilo je ignorovat.

Prehlidnul jsem neco a nejaky zpusob ignorovani existuje, nebo se to resi uplne jinak?

Diky za odpoved pro composer novacka:)

mkoubik
Člen | 728
+
0
-

Naopak se specifikují jen adresáře, které chceš autoloadovat.

fabian
Člen | 20
+
0
-

Aha. Mam v projektu:

	"autoload": {
"psr-0": {
    "Fmlabs\\GoogleAuth\\": "src/",
    "Fmlabs\\GoogleAuthenticator\\": "src/"
		}
	}

a v autoload_namespaces.php vidim:

'Fmlabs\\GoogleAuthenticator\\' => $vendorDir . '/fabiancz/nette-google-oauth2/src/',
'Fmlabs\\GoogleAuth\\' => $vendorDir . '/fabiancz/nette-google-oauth2/src/',

coz je asi v poradku, ale problem bude, ze jsem zapomel

->addDirectory(__DIR__ . '/../libs')

v bootstrapu, ze?:)

Filip Procházka
Moderator | 4668
+
0
-
  1. Měl by jsi mít svoji knihovnu, ve svém namespace a používat PSR-0 – už tímhle zajistíš, že se ti bude autoloadovat pouze a jenom knihovna samotná
  2. Pokud ti vadí složka examples ve vendor/, tak to má jednoduché řešení – vytvoříš soubor .gitattributes, díky kterému se při stahování zip balíku z githubu nebudou do něj přidávat soubory, které dáš jako ignorované
  3. na knihovně vytvoříš tag, a tento tag budeš vyžadovat v composer.json – tím zajistíš, aby Composer závislost instaloval pomocí zip balíku (ten bez examples) a nikoliv pomocí git clone

// edit:
Jop, když máš Composer, tak nepotřebuješ RobotLoader na libs :)

pepakriz
Člen | 246
+
0
-
  1. na knihovně vytvoříš tag, a tento tag budeš vyžadovat v composer.json – tím zajistíš, aby Composer závislost instaloval pomocí zip balíku (ten bez examples) a nikoliv pomocí git clone

Jen doplním, tag není třeba když se použije composer update --prefer-dist. Stáhne se zip.

fabian
Člen | 20
+
0
-

Diky za odpovedi. Hlavni problem byl fakt s tim zapomenutym libs/ v robot loaderu (stydici se smajlik s cervenejma tvarickama;)