2012-07-26 5 views
53

io siamo stati in grado di installare i repository che non dispongono di un file composer.json come questo:Come installare jQuery con Composer?

{ 
     "type": "package", 
     "package": { 
      "name": "yahoo/yui-compressor", 
      "version": "2.0.4", 
      "dist": { 
       "url": "http://yui.zenfs.com/releases/yuicompressor/yuicompressor-2.4.7.zip", 
       "type": "zip" 
      } 
     } 
    }, 

Ho preso il "tipo": "zip" parte dalla documentazione, ma non sono riuscito a trovare molti altri tipi. Ad esempio, ho bisogno di installare jQuery, ma non so cosa mettere in tipo ("js" non ha funzionato).

{ 
     "type": "package", 
     "package": { 
      "name": "jquery/jquery", 
      "version": "1.7.2", 
      "dist": { 
       "url": "http://code.jquery.com/jquery-1.7.2.js", 
       "type": "js" 
      } 
     } 
    } 

Qualche idea?

EDIT: sto aggiungendo la piena soluzione per aiutare @CMCDragonkai:

"require": { 
     "vendorname/somefile": "1.2.3", 
    }, 
    "repositories": [ 
     { 
      "type": "package", 
      "package": { 
       "name": "vendorname/somefile", 
       "version": "1.2.3", 
       "dist": { 
        "url": "http://example.com/somefile.txt", 
        "type": "file" 
       } 
      } 
     } 
    ] 
+1

Attualmente sto usando un [CDN] (http://docs.jquery.com/Downloading_jQuery#CDN_Hosted_jQuery), ma mi piacerebbe piace ottenere jQuery da Composer o da sottomoduli git. Non mi piace l'idea di mettere le librerie di terze parti nei miei repository. BTW, [popolarità di JS su GitHub] (https://github.com/languages) è sopravvalutato a causa di tutto questo copypasta JS in atto. –

+1

Il 2013 è quasi finito e non c'è ancora il pacchetto jquery/jquery. Questo è veramente strano – Sliq

+0

Choco! Ciao! Ora hai il file jQuery js nella directory del venditore e quale ora? Devi aggiungere src a questo file manualmente o il compositore deve caricarlo da solo? Sto cercando di caricare jQuery automaticamente e inserirlo nel mio sito. È possibile o non capisco per che cosa usa il compositore? –

risposta

32

Questa è semplicemente una caratteristica mancante. Probabilmente dovrebbe esserci un nuovo tipo di dist che è solo un singolo file di testo in chiaro da scaricare e lasciato così com'è. Si prega di presentare una richiesta di funzionalità sulla questione inseguitore github: https://github.com/composer/composer/issues/

EDIT:

La caratteristica actually exists ma non è stato documentato.

"type": "file" 
+1

Grazie, ho archiviato questo problema proprio ora: https://github.com/composer/composer/issues/946 – ChocoDeveloper

+0

Stof ha commentato il problema, la funzione esiste. Ho modificato la tua risposta. – ChocoDeveloper

+0

Sarebbe bello sapere se esiste un modo per ottenere più file da un repository. Alcuni plugin includono fogli di stile e immagini, questo implicherebbe la creazione di un pacchetto per file? – Jens

39

In realtà c'è un modo più semplice da installare jQuery, basta digitare:

{ 
    "require": { 
     "components/jquery": "1.9.*" 
    } 
} 

Esso utilizza Component Installer for Composer e per impostazione predefinita tutte le attività da parte dei componenti sono installati sotto components, ma può essere adattano. (see docs).

+0

Questo non ha nulla relativo alla gestione dei pacchetti di componenti javascript, vero? – CMCDragonkai

+0

'components/jquery' è [un repository Shim per jQuery] (https://github.com/components/jquery#jquery-component) e lo stesso repository funziona con Bower, Component e Composer –

+0

Questo funziona ma installa anche circa 1.8 MB di PHP non correlato. – spinkus

2

Come già sottolineato, la prima parte della soluzione è la definizione dei propri repository e l'opzione di definizione del repository "type: ": "file". Ma un problema successivo è quello di convincere il compositore a mettere il JQuery dove lo vuoi. Allo stato attuale, il compositore sembra essere limitato al download della fonte di dipendenza sotto vendor-dir (che è fastidioso ma probabilmente correlato ai requisiti di autoloading). La soluzione generale a questa limitazione è scrivere un plug-in del compositore che lo superi. Sembra che ci siano alcuni plugin in grado di gestirlo. La soluzione più semplice e leggera che ho trovato è PHP Composer Asset Manager, dedicata alla gestione di "asset" non PHP/Composer. Tuttavia, ha almeno una limitazione in quanto le modifiche apportate dal plugin non sono gestite/rilevate dal compositore. Ancora utilizzabile.

Ecco un completo composer.json installare JQuery utilizzando tale plugin:

{ 
    "name": "foo/bar", 
    "require": 
    { 
    "phpclasses/assets": "*", 
    "jquery/jquery": "*" 
    }, 
    "repositories": [ 
    { 
    "type": "composer", 
    "url": "http://www.phpclasses.org/" 
    }, 
    { 
     "type": "package", 
     "package": { 
     "name": "jquery/jquery", 
     "version": "1.7.2", 
     "type": "jquery", 
     "dist": { 
      "url": "http://code.jquery.com/jquery-1.7.2.js", 
      "type": "file" 
     } 
     } 
    } 
    ], 
    "extra": { 
    "assets": { 
     "actions": [ 
     { 
      "type": "copy", 
      "target": "webroot/js", 
      "pattern": "\\.js$" 
     } 
     ], 
     "packages": { 
     "jquery/jquery": "*" 
     } 
    } 
    } 
} 
+0

Attenzione: vale la pena notare che i nomi dei pacchetti, come elaborati dal plug-in Asset Manager, sono tutti ** in minuscolo **. Se hai usato i pacchetti lettere maiuscole nel "require", non saranno mai abbinati al plugin anche se li scrivi nello stesso modo nella sezione "pacchetti". – Gabriel

+1

Nota anche hook per gli eventi - https://getcomposer.org/doc/articles/scripts.md. Sto usando questi ora. BACIO. – spinkus