2012-03-07 19 views
5

Ho un'app node.js che ho appena distribuito su Heroku che dipende dal modulo canvas. Tuttavia, quel modulo richiede la libreria grafica cairo e per farla breve, ho bisogno di usare una versione precomipolata che è inclusa con this fork of canvas.package.json per ambienti diversi?

Normalmente, le mie dipendenze package.json assomigliano:

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

Ma al fine di ottenere la mia app per lavorare su Heroku, devo tirare nella forcella da github

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

E ' possibile avere una versione "Heroku-only" di package.json? O c'è un'altra sezione in package.json in cui posso "sovrascrivere" la dipendenza dalla tela negli ambienti dev?

+0

Stai distribuendo la stessa app su Heroku e da qualche altra parte? Se Heroku è il tuo unico obiettivo, perché la necessità di mantenere 2 file package.json? – Marco

+0

macchina locale, macchina heroku, ma potrei aggiungere altri ambienti in futuro. Se qualcun altro controlla il progetto, l'installazione di npm fallirà a meno che la loro architettura non corrisponda a quella di heroku –

risposta

2

Mai usato Heroku ma il formato package.json definisce il campo devDependencies, vedere Nodejitsu cheatsheet. Quindi installare con $ npm install -d.

+0

Non pensavo che devDependencies avrebbe sovrascritto diverse versioni dello stesso pacchetto, ma sembra che sta funzionando. Tuttavia sembra che stia usando devDependencies anche senza il flag --dev. Esiste anche una variabile env che sta cercando? –

+2

È possibile configurare npm per l'esecuzione in modalità produzione con 'npm config set production true' o la variabile env' export NPM_CONFIG_PRODUCTION = "true" ' – kevin

1

Forse potresti usare un ramo specifico Heroku in Git e unirmi a quello precedente alla distribuzione (assicurandoti che non si unisca sul pacchetto package.json).

+0

E se non sto usando git :)? –

+3

Quindi non stai schierando su Heroku;) –

+0

Hahah, touché. Suppongo che avrei potuto trovare un modo migliore per dire "Vorrei che ci fosse un modo per farlo senza git" :) –

2

C'è uno strumento chiamato penv che sembra promettente. Dal loro sito:

A volte abbiamo bisogno di una diversa proprietà package.json per i nostri diversi ambienti come produzione, messa in scena e sviluppo. (Es: jitsu deploys)

Con penv è possibile personalizzare il file package.json con le proprietà definite all'interno di un file environments.json.

Attualmente proveremo ora.

+0

Provato, il lavoro è stato completato –

Problemi correlati