2012-04-14 22 views
9

Digamos que tengo una dependencia externa como Bootstrap. Me gustaría importar algo MENOS a partir de ahí, porque de esa forma puedo usar mezclas de Bootstrap en mi código.Dependencias externas (como bootstrap) en Meteor

Dado que Meteor ya está compilando y concatenando todos los LESS en mi árbol (¿no?), Simplemente copiar el directorio LESS y actualizarlo manualmente de vez en cuando no es una solución. De hecho, con el directorio LESS predeterminado, parece que cada archivo fuente LESS aparecerá en el resultado dos veces: una vez porque se importó en bootstrap.less, una vez debido al archivo en sí.

¿Hay alguna forma de que el meteoro ignore algunos caminos? public/ suena cerca; pero realmente no quiero servir el repositorio bootstrap.

Además, eso podría solucionarlo para LESS, pero ¿cuál es la forma adecuada de manejar las extensiones JS en bootstrap?

Respuesta

3

He descubierto una posible solución. Meteor quiere agrupar todo en su directorio ... así que vamos a poner las dependencias fuera de su alcance :)

Con la siguiente estructura de directorios:

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

En mi archivo MENOS, hago lo siguiente:

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

esto todavía no funciona, pero creo que esto es atribuible a a LESS bug.

Desafortunadamente el mensaje de error producido por Meteor es completamente inútil aquí:

[[[[[ ~/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 acabo terminó la piratería rodeos esto: 'PATH_TO_BOOTSTRAP cat/menos/* | grep -v importación | egrep -v \^//> bootstrap-concat.less'.Feo como el pecado, pero funciona un encanto y me permite importar todo :) – lvh

+1

último meteoro incluye un paquete para boostrap, no estoy seguro de si eso resolvería tu problema, pero potencialmente si haces una actualización de meteorito y luego agregar boostrap meteoro ahora deberías tener twitter boostrap en tu aplicación. – climboid

+0

La ventaja de utilizar LESS es una personalización sencilla: ¿sabe si el paquete de arranque Meteor se compila dinámicamente desde LESS? –

0

Desde mi experiencia, que es una mala idea directamente incluir los archivos Bootstrap MENOS en un proyecto Meteor:

  • Se hará que su entorno de desarrollo sea mucho más lento, ya que muchos archivos adicionales deben ser convertidos por Meteor y recuperados por su navegador.
  • No satisface las dependencias de paquetes de terceros que dependen explícitamente del paquete de bootstrap principal. Si agrega uno de ellos, terminará con dos bootstraps en su proyecto.
  • Los recursos de los paquetes se cargan antes que los archivos del proyecto. Si tiene un paquete externo que amplía el bootstrap, su estilo se cargará antes del arranque.
  • Tener que cambiar el nombre de todas las importaciones para que finalice con .lessimport hace que sea difícil mantenerse al día con las versiones de arranque más recientes.
  • El orden en que Meteor carga (alfabéticamente) los archivos javascript bootstrap es incorrecto, lo que lleva a errores de Javascript que solo se pueden solucionar al cambiar el nombre de los archivos.

Creé un script de shell para generar un paquete Meteor bootstrap personalizado desde una distribución precompilada, o su propio clon del repositorio Bootstrap Git.

Se puede encontrar aquí, junto con la información de uso: https://github.com/wojas/meteor-package-bootstrap

Cuestiones relacionadas