2012-04-19 13 views
5

के लिए नोड.जेएस प्रोजेक्ट लेआउट मैं अपने पहले क्लाउड फाउंड्री प्रोजेक्ट (... और पहले नोड.जेएस प्रोजेक्ट, और पहले मोंगोडीबी प्रोजेक्ट, और पहले "एक्सप्रेस" प्रोजेक्ट इत्यादि पर काम कर रहा हूं। आदि ...)बिल्ड/टेस्ट बनाम परिनियोजन

एक दिन मैं इस सवाल का पाया, और मेरे GitHub भंडार के संगठन के लिए एक से छलांग बिंदु के रूप में इस सवाल का जवाब प्रयोग किया है:

Folder structure for a Node.js project

एक /node_modules निर्देशिका है जो नहीं है चेक इन नहीं किया गया है। बल्कि npm install द्वारामें विनिर्देश के आधार पर इसे स्वचालित रूप से बनाया गया हैफ़ाइल। ठीक है, अच्छा ... मैंने वह फाइल बनाई है।

(नोट: एक vmc push के दौरान, ऐसा लगता है धक्का दिया करने के लिए सर्वर ऐसा लगता है द्वारा package.json फ़ाइल का कोई परीक्षा केवल node_modules निर्देशिका पर कॉपी करने होती है और अगर यह मौजूद नहीं है कुछ नहीं करता है।। ..इस्हें अपने क्लाइंट पर npm install करना और फिर पुश करना आवश्यक है।)

मुझे अपने आवेदन में कुछ मूल बातें मिल रही हैं, और अब मैं उस बिंदु पर हूं जहां मैं परीक्षण करना शुरू करना चाहता हूं और निर्माण बुनियादी ढांचा। उदाहरण के लिए: मुझे एक बिल्ड प्रक्रिया चाहिए जो मेरी सभी जावास्क्रिप्ट पर लिनिंग चलाएगी। ready.js नामक एक सतत एकीकरण लाइब्रेरी है जो एक अद्यतित निर्माण उपकरण की तरह दिखती है ...

लेकिन मेरी परियोजना की निर्देशिका में होने और npm install ready.js करने में कुछ गलत लगता है। इसका मतलब यह है कि अधिक सामग्री /node_modules निर्देशिका में जा रही है और क्लाउड पर अपलोड करने का इरादा नहीं होने पर क्लाउड पर अपलोड की जाएगी। एक ही टोकन द्वारा: यदि मेरे पास एक निर्माण प्रक्रिया है जो संसाधनों (या जो कुछ भी) का खनन कर रही है तो मैं नहीं चाहता कि स्रोत vmc push के साथ तैनात किया जाए।

मुझे पता है कि यह सब नया है ... लेकिन क्या लक्ष्य निर्माण निर्देशिका में लक्ष्य को डंप करने और वहां से धक्का देने के लिए एक सम्मेलन है? या क्या हर कोई प्रभावी रूप से जिथब रूट से धक्का देता है, और साथ ही सभी बिल्डों और परीक्षणों को भी धक्का देता है? कोई सुझाव का स्वागत करते हैं ... विधियों का उपयोग करना से बचने के लिए तरीकों ...

अद्यतन हैं: मैं एक्सप्रेस और Node.js (साथ ही साथ कई अन्य आम मॉड्यूल) है, जो अपनी करता है का उपयोग कर के लिए एक आवेदन बॉयलरप्लेट पाया "निर्माण प्रक्रिया" सर्वर कोड की जावास्क्रिप्ट अंदर ... के लिए बेहतर या बदतर:

https://github.com/mape/node-express-boilerplate

मैं भी इस पाया, और यह मॉड्यूल के नाम के साथ चाहें शब्द "बॉयलरप्लेट" के संयोजन की तरह लगता है संरचना में शामिल देखें, जिस तरह की चीज़ मैं ढूंढ रहा हूं उसे ढूंढने के लिए एक अच्छी खोज रणनीति है:

https://github.com/swbiggart/node-express-requirejs-backbone

उत्तर

3

NPM आप devDependencies, आप this article को देखने के लिए चाहते हो सकता है निर्दिष्ट करने के लिए अनुमति देता है।

आप devDependencies के तहत अपने सभी देव/परीक्षण पर्यावरण निर्भरताओं को जोड़ सकते हैं और dependencies के तहत सभी उत्पादन-संबंधित मॉड्यूल जोड़ सकते हैं। फिर, आप क्लाउड पर धक्का देने के लिए एक स्क्रिप्ट जोड़ सकते हैं।

मैं क्लाउड फाउंड्री या vmc push वर्कफ़्लो से परिचित नहीं हूं। लेकिन, आप ऑब्जेक्ट में पैकेज में एक कस्टम स्क्रिप्ट जोड़ सकते हैं।जेसन जो देव-पर्यावरण मॉड्यूल स्थापित करता है, आपके परीक्षण चलाता है, एनपीएम कैश को साफ़ करता है, फिर उत्पादन-केवल मॉड्यूल स्थापित करता है और क्लाउड में केवल आपके मॉड्यूल और केवल उन मॉड्यूल को धक्का देता है।

संपादित

मुझे यकीन है कि आप NPM भंडार करने के लिए जोर दे नहीं करता है, तो इन का उपयोग कर सकते नहीं कर रहा हूँ, लेकिन वे एक उदाहरण (मुझे लगता है ...) वैकल्पिक रूप से के रूप में उपयोगी होते हैं, आप कार्यप्रवाह मैं को स्वचालित कर सकता है एक शेल स्क्रिप्ट या नोड स्क्रिप्ट में ऊपर वर्णित है।

/संपादन

आप स्क्रिप्ट उपलब्ध में से किसी में हुक सकता है ... (अधिक जानकारी के लिए man npm-scripts देखें): यहाँ,

preinstall 
      Run BEFORE the package is installed 

    install, postinstall 
      Run AFTER the package is installed. 

    preuninstall, uninstall 
      Run BEFORE the package is uninstalled. 

    postuninstall 
      Run AFTER the package is uninstalled. 

    preupdate 
      Run BEFORE the package is updated with the update command. 

    update, postupdate 
      Run AFTER the package is updated with the update command. 

    prepublish 
      Run BEFORE the package is published. 

    publish, postpublish 
      Run AFTER the package is published. 

    pretest, test, posttest 
      Run by the npm test command. 

    prestop, stop, poststop 
      Run by the npm stop command. 

    prestart, start, poststart 
      Run by the npm start command. 

    prerestart, restart, postrestart 
      Run by the npm restart command. Note: npm restart will run the 
      stop and start scripts if no restart script is provided. 

    Additionally, arbitrary scrips can be run by doing npm run-script 
    <stage> <pkg>. 

नोट publishnpm करने के लिए एक मॉड्यूल प्रकाशित करने के लिए है । आपको अपना पैकेज निजी ("private": true) पर सेट करना चाहिए ताकि आप गलती से अपना कोड एनपीएम रिपोजिटरी प्रकाशित न करें।

+0

देखें [जेड \ पैकेज.जेसन] (https://github.com/visionmedia/jade/blob/master/package.json) उदाहरण के लिए यह सब कैसे फिट बैठता है। –

+0

दिलचस्प सामान जानना, और मेरे लिए नया - धन्यवाद! यह node_modules से संबंधित समस्या के एक धुरी का ख्याल रखेगा ... हालांकि ऐसा लगता है कि एक विशेष विकल्प 'एनपीएम इंस्टॉल - प्रोडक्शन' निर्देशिका से धक्का दे रहा है। उपनिर्देशिकाओं में अनावश्यक "स्रोत फाइलें" रखने का मुद्दा जो क्लाउडफाउंड्री अभी उठाता है, वैसे ही रहेंगे, इसलिए मुझे उम्मीद है कि कुछ क्लाउडफाउंड्री मुहावरे यहां भी लेने के लिए हैं ... – HostileFork

+0

अद्यतन ... मुझे यह "तैयार" मिला। जेएस "और ऐसा लगता है कि मैं जो खोज रहा हूं, उसके साथ ही कम से कम इसे बनाए रखा जा रहा है। मुझे अभी भी यह सुनिश्चित नहीं है कि वर्कफ़्लो कैसे निकाला जाए ... यदि एनपीएम स्क्रिप्ट शामिल होनी चाहिए, या अगर मुझे '/ build' निर्देशिका' बनाने के लिए सीधे जावास्क्रिप्ट "मेकफ़ाइल" लिखना चाहिए जो मैं वास्तव में "पुशिंग" करता हूं: https : //github.com/dsimard/ready.js – HostileFork

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