2012-03-07 24 views
5

Tengo una aplicación node.js que acabo de implementar en Heroku que depende del módulo canvas. Sin embargo, ese módulo requiere la biblioteca de gráficos de cairo y, para abreviar, necesito usar una versión precompilada que se incluye con this fork of canvas.package.json para diferentes entornos?

Normalmente, mis dependencias package.json aspecto:

"dependencies" : { 
    "canvas" : "0.10.0", 
    "express" : "2.5.6", 
    "jade" : "0.20.1" 
    } 

Pero con el fin de conseguir mi aplicación para trabajar en Heroku, debo tirar en el tenedor de github

"dependencies" : { 
    "canvas" : "git://github.com/elspoono/node-canvas-heroku.git#master", 
    "express" : "2.5.6", 
    "jade" : "0.20.1" 
    } 

¿Es posible tener una versión "solo de Heroku" de package.json? ¿O hay otra sección en package.json donde puedo "anular" la dependencia del lienzo en entornos dev?

+0

¿Estás implementando la misma aplicación en Heroku y en otro lugar? Si Heroku es tu único objetivo, ¿por qué es necesario mantener 2 archivos package.json? – Marco

+0

máquina local, máquina heroku, pero puedo agregar otros entornos en el futuro. Si alguien más revisa el proyecto, la instalación de npm fallará a menos que su arquitectura coincida con el –

Respuesta

2

Never used Heroku pero el formato package.json define el campo devDependencies, ver Nodejitsu cheatsheet. Luego instálelo con $ npm install -d.

+0

No pensé que devDependencias anulara las diferentes versiones del mismo paquete, pero parece que esta funcionando. Sin embargo, parece estar usando devDependencies incluso sin el indicador --dev. ¿Hay una variable env que también esté buscando? –

+2

Puede configurar npm para que se ejecute en modo de producción con 'npm config set production true' o la variable env' export NPM_CONFIG_PRODUCTION = "true" ' – kevin

1

Tal vez podría usar una rama específica de Heroku en Git y combinarla antes de implementar (asegurándose de no fusionar su paquete.json).

+0

de heroku ¿Y si no estoy usando git :)? –

+3

Entonces no estás desplegando en Heroku;) –

+0

Hahah, touché. Supongo que podría haber llegado a una mejor manera de decir "Desearía que hubiera una manera de hacerlo sin git" :) –

2

Hay una herramienta llamada penv que parece prometedora. Desde su sitio:

A veces necesitamos una diferentes propiedades package.json para nuestros diferentes entornos, como producción, montaje y desarrollo. (Por ejemplo, implementa jitsu)

Con penv puedes personalizar tu archivo package.json con propiedades definidas dentro de un archivo environments.json.

En realidad vamos a probarlo ahora.

+0

Probándolo, hace el trabajo –

Cuestiones relacionadas