2012-05-22 15 views
10

पर प्रत्येक परिनियोजन के बाद एनपीएम रीफ्रेश से बचें मेरे पास हेरोोक पर होस्ट की गई एक नोड.जेएस वेबसाइट है, जिसे मैं गिट के साथ तैनात करता हूं। मैं पैकेज.जेसन में संदर्भित कई नोड मॉड्यूल का उपयोग करता हूं; हर बार जब मैं पैकेज का नया संस्करण तैनात करता हूं, तब तक हेरोोकू को 'रीफ्रेश' करने से रोकने का कोई तरीका है, जब तक पैकेज.जेसन नहीं बदला?हरोकू

नोट: यह विशेष रूप से 'मूल' मॉड्यूल के लिए उपयोगी होगा, जिसका संकलन थोड़ा समय लेता है; .js-only मॉड्यूल के लिए, मैं उन्हें पैकेज.जेसन से हटा रहा था, और गिट रेपो में अपने node_modules/फ़ोल्डर जोड़ रहा था।

+0

सहमत हैं, निर्माण कैशिंग का एक बड़ा हिस्सा बहुत अच्छा होगा। लेकिन मैं समझता हूं कि यह जल्दी से मुश्किल हो सकता है; गलत कैशिंग से कोई कैशिंग अभी भी बेहतर नहीं है। –

उत्तर

6

मैं आधिकारिक Heroku Node.js Buildpack की देखभाल करने वाले कर रहा हूँ:

heroku config:set BUILDPACK_URL=https://github.com/ddollar/heroku-buildpack-nodejs

यहाँ का जवाब देखें।

हमारे पास बीटा में बिल्डपैक का एक नया संस्करण है जिसमें विशेष रूप से उपयोग किए गए उपयोग के लिए डिज़ाइन किए गए कैशिंग समर्थन की सुविधा है। आप https://github.com/heroku/heroku-buildpack-nodejs/tree/diet#about-this-refactor

पर इसके बारे में अधिक पढ़ सकते हैं अंततः इस Heroku पर डिफ़ॉल्ट Node.js buildpack बन जाएगा, लेकिन अब आप उपयोग करना चाहते हैं यदि आप BUILPACK_URL config वर स्पष्ट रूप से सेट करना होगा:

heroku config:set BUILDPACK_URL=https://github.com/heroku/heroku-buildpack-nodejs#diet -a my-node-app 
git commit -am "fakeout" --allow-empty 
git push heroku 
+0

यह बहुत तेज़ है :) इसे हाल ही में सेट करें, – Guard

+1

के लिए ठीक काम करता है अब यह – evilcelery

+3

डिफ़ॉल्ट है ... क्या उसकेोकू अभी भी सभी निर्भरताओं का पुनर्निर्माण करता है? –

0

आप दोनों .js और देशी NPM संकुल (कम से कम की "ताज़ा" फिर से डाउनलोड करने के भाग।) जोड़ सकते हैं और अभी भी से बचने "रीफ्रेश करें",

अपने node_modules/ निर्देशिका के मूल निवासी संकुल को शामिल करें। जब आप हरोकू में तैनात होते हैं, npm install पैकेज की डाउनलोडिंग को छोड़ देगा। npm rebuild भी चलाया जाता है। देशी पैकेजों को फिर से संकलित करने में कुछ समय लगेगा, लेकिन यह बहुत सहनशील होना चाहिए जब तक कि आपके पास बहुत से मूल पैकेज नहीं हैं।

सिडेनोटे: Heroku doc on what Heroku does when you push a nodejs app

Sidenote:npm rebuild की जरूरत है क्योंकि वहाँ "रहस्यमय विफलताओं कि node and native code modules after a node upgrade के बीच हो सकता है"।

0

Heroku node.js buildpack क्लोन करें, और rebuild कमांड को हटाने के लिए इसे संशोधित करें।

कमांड वर्तमान में यहां चलाया गया है: https://github.com/heroku/heroku-buildpack-nodejs/blob/master/bin/compile#L180, लेकिन यह बदलने के लिए बाध्य है।

आप कमांड को संशोधित करके अपने खुद के buildpack का उपयोग करता है एक ऐप बनाने के नीचे अपने स्वयं के रेपो मिलान करने के लिए चला सकते हैं:
heroku create --buildpack http://github.com/heroku/heroku-buildpack-nodejs.git

या के साथ किसी मौजूदा ऐप की buildpack बदलने के लिए:
heroku config:add BUILDPACK_URL=git://github.com/heroku/heroku-buildpack-nodejs.git

संबंधित मुद्दे