2016-11-24 6 views
13

तो एक package.json एक files प्रोप है, और/या एक directories प्रोप:पैकेज.जेसन में 'फाइल' और 'निर्देशिका' गुणों का उपयोग कैसे करते हैं?

"files": [ 
    "./src/assets/fonts/" 
    ], 
    "directories": { 
    "assets:": "./src/assets" 
    } 

क्या उनमें से उपयोग करने के लिए कुछ तरीके हैं? प्रलेखन का उल्लेख नहीं है कि उन्हें निर्दिष्ट किए जाने के बाद उनके साथ क्या किया जा सकता है।

उदाहरण के लिए, files docs कहते हैं:

"फ़ाइलें" क्षेत्र अपनी परियोजना में शामिल करने के लिए फ़ाइलों की एक सरणी है। यदि आप सरणी में किसी फ़ोल्डर को नाम देते हैं, तो इसमें उस फ़ोल्डर के अंदर फ़ाइलों को भी शामिल किया जाएगा।

"आपके प्रोजेक्ट में शामिल" का क्या अर्थ है? कहां शामिल करें? वे अब कैसे स्वीकार्य हैं कि वे पहले नहीं थे?

directories section में, डॉक्स कहते हैं:

भविष्य में, यह जानकारी अन्य को रचनात्मक तरीके से इस्तेमाल किया जा सकता है।

इसका उपयोग किए जा रहे मौजूदा रचनात्मक तरीकों क्या हैं?

+1

मुझे यकीन नहीं है कि यह क्यों कम किया गया था - क्या कोई इसे ऊपर उठा सकता है, यह एक वैध सवाल है। – Baz

उत्तर

15

"अपनी परियोजना में शामिल करें" का अर्थ है कि फाइलें पैक किए गए टैरबॉल में होंगी जो npm publish चलाते समय बनाई गई है। वास्तव में प्रकाशन को ट्रिगर किए बिना निरीक्षण के लिए टैरबॉल उत्पन्न करने के लिए आप npm pack भी चला सकते हैं। इस तरह आप वास्तव में जेनरेट की गई टैरबॉल खोल सकते हैं और निरीक्षण कर सकते हैं कि कौन सी फाइलें/शामिल नहीं थीं।

जबकि .npmignore (या .gitignore एक प्रॉक्सी के रूप में, अगर कोई .npmignore) फ़ाइलों की एक काली सूची के रूप में कार्य की अनदेखी करने (जिससे डिफ़ॉल्ट रूप से सब कुछ शामिल है), files सरणी एक श्वेत सूची है। यही है, डिफ़ॉल्ट रूप से सब कुछ शामिल करने के बजाय, यदि files सरणी निर्दिष्ट है तो सब कुछ डिफ़ॉल्ट रूप से बाहर रखा गया है और केवल उन फ़ाइलों को स्पष्ट रूप से सूचीबद्ध किया जाएगा जिन्हें पैक किए गए टैरबॉल में शामिल किया जाएगा।

उदाहरण के तौर पर, कहें कि आपका पैकेज ब्राउज़र में खपत के लिए एक लाइब्रेरी है। आपका कोड lib/ में है, और आप ब्राउज़र-संगत lib में संकलित करने के लिए ब्राउज़र को चलाते हैं dist/index.js पर। आप .gitignore में सूचीबद्ध फ़ाइलों के समूह के साथ शुरू करते हैं, जिसका उपयोग defacto .npmignore के रूप में किया जाता है जो मौजूद नहीं है। लेकिन अब dist/ जेनरेट की गई फाइलों से भरा है, आप उन्हें गिट रेपो से अनदेखा करना चाहते हैं। यदि आप उन्हें .gitignore पर जोड़ते हैं, तो उन्हें गिट रेपो, से बाहर रखा जाएगा, लेकिन उन्हें पैकेज टैरबॉल से भी अनदेखा कर दिया जाएगा। तो आपके पास दो विकल्प हैं: .gitignore को .npmignore के रूप में डुप्लिकेट करें, लेकिन .gitignore में केवल dist/ सूचीबद्ध करें। यदि आप ऐसा करते हैं, तो आपको सिंक में लगभग दो फाइलें रखना होगा-लेकिन-काफी नहीं। इस तरह से tedius और त्रुटि प्रवण है।

अन्य विकल्प .npmignore नहीं है, और इसके बजाय files सरणी में केवल उन फ़ाइलों को सूचीबद्ध करें जिन्हें आप वास्तव में पैकेज में चाहते हैं। README.*, package.json, CHANGELOG.* (शायद कुछ अन्य) स्वचालित रूप से टैरबॉल में शामिल किए जाते हैं। तो आप बस "files": [ "dist" ] जोड़ें और आप कर चुके हैं।अब आपके पैकेज टैरबॉल में lib से मूल स्रोत जेएस शामिल नहीं होगा, न ही tests/ आदि, बल्कि इसके बजाय केवल dist/ में वास्तविक संकलित lib शामिल होगा।

directories का सवाल है, मैं आम तौर पर सूची lib (es5 के लिए), src, dist, test, output (ब्राउज़र या वी एम-विशिष्ट बनाता है के लिए) (जैसे अस्थायी उत्पन्न फ़ाइलों के लिए (ES6, coffeescript, टाइपप्रति आदि स्रोतों के लिए) कवरेज रिपोर्ट, आदि), doc, आदि। हालांकि इस संपत्ति का उपयोग सीधे एनपीएम या अन्य उपकरणों द्वारा नहीं किया जाता है, यह निर्देशिका संरचना को स्पष्ट बनाता है। (बल्कि कई भर से

"scripts": { 
    "clean": "rm -rf $npm_package_directories_dist $npm_package_directories_output", 
    "lint": "eslint $npm_package_directories_src", 
    "test": "teenytest $npm_package_directories_test", 
} 

इस तरह, निर्देशिका केवल एक बार निर्दिष्ट कर रहे हैं, और अगर वे बदलने के लिए, वे केवल एक ही स्थान में बदल की जरूरत है: इसके अलावा, यह निर्देशिका NPM लिपियों में संदर्भ योग्य तो तरह बना देता है package.json)।

+0

महान उत्तर, धन्यवाद! – Baz

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