2013-02-06 15 views
29

jest dla strony klienta Javascript, co npm jest po stronie serwera i odczytuje plik component.json, aby rozpoznać zależności, które powinny zostać pobrane przy uruchomieniu, więc byłbym szczęśliwy, że heroku uruchomi go w czasie kompilacji.Jak mogę wywołać npm na linii komend heroku (aby zainstalować komponenty altanowe)?

Niestety nie mogę powołać NPM lub altanę z konsoli Heroku lub polecenia jednorazowej (heroku run "npm help") (heroku run bash ->npm help), jak to jest możliwe z prowizji Rubiego. Włożyłem npm i węzeł (najnowsze/x wersje) w moim package.json, ale w sekcji silników, a nie zależności.

Myślę, że można to rozwiązać, dostosowując node buildpack, ale uważam to za zbyt trudne zadanie tylko do aktywacji czegoś tak oczywistego.

+0

do odpowiedzi poniżej: co zrobić, jeśli chcesz sprawdzić, czy buildpack można bezpiecznie npm zainstalować pakiet, który ma zależności binarne. Dodanie zależności package.json wymaga przetestowania 'git push heroku', podczas gdy' 'auoku run npm install ....' do testowania, nie wpływając na twoją produkcję. Wciąż muszę jeszcze wymyślić, jak uruchomić npm z 'opcją bucka heroku ' –

Odpowiedz

61

Można również skonfigurować polecenie postintall, coś takiego w swoim package.json

"dependencies": { 
    "bower": "0.6.x" 
}, 
"scripts": { 
    "postinstall": "./node_modules/bower/bin/bower install" 
} 

Następnie npm install zainstaluje również zależnościami Bower.

Zalety: jedno polecenie, aby rządzić nimi wszystkimi.

Przeciw: niepotrzebnie umieszczasz altanę jako zależność.

+0

Doskonałe rozwiązanie, nie wiedziałem jednak o tym skrypcie poinstalacyjnym. Musisz kopać więcej w npm docs ... –

+1

, aby zainstalować zależności dla najnowszej altanki, wykonaj: 'npm install --save bower' –

+0

Awesome! Nie myślałem o tym rozwiązaniu. – JHannes

6

Można użyć run takiego:

heroku run npm install git://github.com/webjay/kaiseki 
+0

cóż, to tylko wywoływanie npm (właściwie nagłówek był trochę mylący) -> pytanie dotyczy głównie instalacji zależności bower po instalacji. Za przykład wziąłem tylko przykład. Twoja linia poleceń wywołałaby npm poprawnie, ale mogę nie zapomnieć o ręcznym wywołaniu -> rozwiązanie z xavier.seignard robi wszystko automatycznie przy uruchomieniu czasu. – Stefan

+8

To jest bardzo bezużyteczne. Tworzy tymczasowe dyno, uruchamia polecenie, a następnie je niszczy. Twoje prawdziwe dynos pozostaną nienaruszone. – sbichenko

0

Można użyć altanę bezpośrednio jak to

"dependencies": { 
    "bower": "^1.7.9" 
}, 
"scripts": { 
    "postinstall": "sudo bower install --allow-root " 
} 
Powiązane problemy