2012-04-14 12 views
9

Diciamo che ho una dipendenza esterna come Bootstrap. Mi piacerebbe importare alcuni LESS da lì, perché in questo modo posso usare i mixin Bootstrap nel mio codice.Dipendenze esterne (come il bootstrap) in Meteor

Poiché Meteor sta già compilando e concatenando tutti i LESS nella mia struttura (giusto?), Copiare la directory LESS e aggiornarlo manualmente una volta ogni tanto non è una soluzione. Infatti, con la directory LESS predefinita, sembra che ogni file sorgente di LESS apparirà nell'output due volte: una volta perché è importato in bootstrap.less, una volta a causa del file stesso.

C'è un modo per far sì che la meteora ignori alcuni percorsi? public/ suoni vicini; ma non voglio davvero servire il repository bootstrap.

Inoltre, questo potrebbe risolverlo per MENO, ma qual è il modo appropriato per gestire le estensioni JS nel bootstrap?

risposta

3

Ho trovato una soluzione potenziale. Meteor vuole raggruppare tutto in sua directory ... Quindi cerchiamo di mettere le dipendenze al di fuori della sua portata :)

con la seguente struttura di directory:

. 
|-- ext 
| `-- bootstrap 
`-- myapp 
    |-- .meteor 
    `-- ... 

Nel mio file meno, effettuare le seguenti operazioni:

@BOOTSTRAP: "../../ext/bootstrap/less"; 
@import "@{BOOTSTRAP}/reset.less"; 

Questo ancora non funziona, ma penso che questo sia attribuibile a a LESS bug.

Purtroppo il messaggio di errore prodotto da Meteor è completamente inutile qui:

[[[[[ ~/Code/igl/igl ]]]]] 

Running on: http://localhost:3000/ 
Errors prevented startup: 
Exception while bundling application: 
ReferenceError: err is not defined 
    at /usr/local/meteor/packages/less/package.js:33:62 
    at [object Object].add_file (/usr/local/meteor/app/lib/bundler.js:193:5) 
    at /usr/local/meteor/app/lib/bundler.js:97:16 
    at Array.forEach (native) 
    at Function.<anonymous> (/usr/local/meteor/app/lib/third/underscore.js:76:11) 
    at /usr/local/meteor/app/lib/bundler.js:96:11 
    at Array.forEach (native) 
    at Function.<anonymous> (/usr/local/meteor/app/lib/third/underscore.js:76:11) 
    at Object.add_files (/usr/local/meteor/app/lib/bundler.js:95:9) 
    at [object Object].on_use (/usr/local/meteor/app/lib/packages.js:136:11) 
Your application is crashing. Waiting for file change. 
+1

FWIW Ho appena finito l'hacking arounds questo: 'cat PATH_TO_BOOTSTRAP/inferiore/* | grep -v importare | egrep -v \^//> bootstrap-concat.less'.Brutto come il peccato, ma funziona un fascino e mi permette di importare tutto :) – lvh

+1

l'ultimo meteorite include un pacchetto per boostrap, non è sicuro se questo risolverà il tuo problema ma potenzialmente se esegui un aggiornamento meteorico e poi meteor aggiungi boostrap dovresti avere ora twitter boostrap sulla tua app. – climboid

+0

Il vantaggio dell'utilizzo di LESS è la facile personalizzazione: sai se il pacchetto bootstrap di Meteor viene compilato in modo dinamico da LESS? –

0

Dalla mia esperienza, è una cattiva idea di direttamente includere i file Bootstrap MENO di un progetto Meteor:

  • E ' renderà il tuo ambiente di sviluppo molto più lento, poiché molti file aggiuntivi devono essere convertiti da Meteor e recuperati dal tuo browser.
  • Non soddisfa le dipendenze di pacchetti di terze parti che dipendono esplicitamente dal pacchetto core di bootstrap. Se aggiungi uno di questi, finirai con due bootstrap nel tuo progetto.
  • Le risorse dei pacchetti vengono caricate prima dei file di progetto. Se si dispone di un pacchetto esterno che estende il bootstrap, lo stile verrà caricato prima del bootstrap.
  • Dover rinominare tutte le importazioni per terminare con .lessimport rende difficile tenere il passo con le nuove versioni di bootstrap.
  • L'ordine in cui i file javascript bootstrap vengono caricati da Meteor (in ordine alfabetico) non è corretto, causando errori Javascript che possono essere risolti solo rinominando i file.

Ho creato uno script di shell per generare un pacchetto Meteor di bootstrap personalizzato da una distribuzione precompilata o dal proprio clone del repository Git di Bootstrap.

Lo si può trovare qui, insieme con le informazioni di utilizzo: https://github.com/wojas/meteor-package-bootstrap

Problemi correlati