2011-09-29 17 views
9

मैंने इस परिदृश्य में कुछ बार भाग लिया है और अभी भी जवाब नहीं मिला है। मैं एक नया नोड.जेएस प्रोजेक्ट शुरू कर रहा हूं, और यह परियोजना कुछ अन्य पुस्तकालयों पर निर्भर होगी। तर्क के लिए, मान लीजिए कि कुछ पूरी तरह से जेएस पुस्तकालय हैं जिन्हें नई परियोजना में गिट सबमिड्यूल के रूप में जोड़ा जा सकता है, लेकिन कुछ ऐसे टुकड़े हैं जिन्हें कुछ अतिरिक्त प्रयासों की आवश्यकता होती है (जैसे सिस्टम निर्भरताएं जो एनपीएम इंस्टॉल करती हैं, या सी पुस्तकालय जिन्हें संकलित किया जाना चाहिए)।एनपीएम के साथ गिट पर एक परियोजना में मैं नोड.जेएस निर्भरताओं को कैसे संभाल सकता हूं?

  • अन्य लोगों के पुस्तकालयों हमारे अपने रेपो के लिए प्रतिबद्ध हैं नहीं, और बदले submodules हैं या में खींच रहे हैं:

    सबसे अच्छा तरीका है इस परियोजना के शुरू करने और इसे जोड़ने के लिए git, निम्नलिखित दो आवश्यकताओं के साथ करने के लिए क्या है गतिशील रूप से और एनपीएम द्वारा स्थापित।

  • नहीं दिए गए निर्देशों का सिर्फ रेपो क्लोन करने के लिए अपनाई जाने वाली है और एक काम के माहौल है कि एक बड़ी सूची है करने के लिए की जरूरत है। Git submodules अद्यतन --init --recursive ठीक है, एक NPM आदेश चलाकर package.json पढ़ सकते हैं और निर्भरता स्थापित करने के लिए ठीक है (जैसे एक आदेश मौजूद है?) है चल रहा है, लेकिन स्थापित एक "NPM के माध्यम से चलाने के लिए हर किसी के लिए मजबूर कर रहा _ _ "प्रत्येक एकल निर्भरता ठीक नहीं है, और अगर ऐसा करने की ज़रूरत नहीं है तो मैं ऐसा करने के लिए 'मेक' या 'चींटी' का उपयोग नहीं करना चाहूंगा।

यह करने के लिए सबसे अच्छा तरीका है के किसी भी विचार? ऐसा लगता है कि यह एक साधारण, मूल बात है, लेकिन मुझे ऐसा करने का एक उदाहरण नहीं मिला जो मैं करने की कोशिश कर रहा हूं।

संपादित करें: व्याकरण

+0

वैसे, आप 'गिट क्लोन - रिकर्सिव ... foo' का उपयोग कर सकते हैं जो 'गिट क्लोन' जैसा ही है ...foo && सीडी foo && Git submodule अद्यतन --init --recursive' – Pauan

उत्तर

10

संपादित नीचे पर ध्यान न दें, लेकिन संदर्भ के लिए छोड़ दिया है। कभी कभी मैं स्पष्ट रूप से सुबह में नहीं लगता है :)

एक package.json फ़ाइल बनाने के लिए, अपने निर्भरता जोड़ सकते हैं और अपने को स्थापित करने के लिए बस हो जाता है: अपनी परियोजना निर्देशिका से

npm install 

git ignore सभी अतिरिक्त परियोजनाएं।


npm submodule foo 

यह, आदि git submodule तो GitHub के माध्यम से node_modules में संकुल को स्थापित करता है पहचान लेगा कि वे लिंक कर रहे हैं। जब भी एनपीएम पैकेज में गिट यूआरआई शामिल होता है तो यह काम करता है। दुर्भाग्य से एक अच्छी संख्या नहीं है, तो आप उन पर भाग्य से बाहर हैं।

ही, ध्यान दें कि जब आप ऐसा करते हैं, npm मॉड्यूल पर किसी भी अब काम नहीं करेगा, जैसे आप npm के माध्यम से अद्यतन नहीं कर सकते, तो आप के माध्यम से git


यह क्या करना है या फिर आप की तरह कुछ कर सकता है:

./modules.js

modules.exports = [ '[email protected]', '[email protected]', '[email protected]' ]; 

।/

#!/usr/bin/env node 
var modules = require('./modules') 
    , spawn = require('child_process').spawn; 

for(var i=0, l=modules.length; i<l; i++){ 
    spawn('npm', [ 'install', modules[i] ]); 
} 
+0

Sheezus - यह इतना मूर्ख है कि मैं इस बारे में कोई तर्क के साथ 'NPM स्थापित' पता नहीं था लगता है! यही मैं क्या जरूरत है ... हालांकि अपने कस्टम समाधान बहुत चालाक के रूप में अच्छी तरह से है! सहायता के लिए :) धन्यवाद। –

+0

अपने मूल anwser को हटाने नहीं के लिए धन्यवाद, यह मैं अभी क्या जरूरत थी। :) – mik01aj

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