मैं एक पैकेज बना रहा हूं जिसे मैं एनपीएम पर प्रकाशित करना चाहता हूं। मैं टाइपस्क्रिप्ट में पैकेज लिख रहा हूं, और मेरी tsconfig फ़ाइल संकलित जावास्क्रिप्ट के साथ टाइपस्क्रिप्ट घोषणा फ़ाइल को उत्सर्जित करने के लिए स्थापित है ताकि टाइपस्क्रिप्ट का उपयोग करने वाला कोई अन्य व्यक्ति अपने आईडीई - सुंदर मानक में उचित प्रकार की जानकारी प्राप्त कर सके। मैं निश्चित रूप से टाइप किए गए कुछ पैकेजों का उपयोग कर रहा हूं, लेकिन मुझे यकीन नहीं है कि उन्हें किस निर्भरता प्रकार का होना चाहिए। अगर कोई टाइपस्क्रिप्ट प्रोजेक्ट में मेरे पैकेज का उपयोग कर रहा है, तो मेरी घोषणा फाइलों को प्रासंगिक @types पैकेज स्थापित करने की आवश्यकता होगी, लेकिन यदि वे जावास्क्रिप्ट का उपयोग कर रहे हैं तो उन्हें इन्हें स्थापित करने की आवश्यकता नहीं होगी। मैं सोच रहा हूं कि @types पैकेज मेरे पैकेज के package.json फ़ाइल की वैकल्पिक निर्भरता में होना चाहिए। क्या यह सही है?

2
Ben Guest 28 फरवरी 2019, 16:01

1 उत्तर

सबसे बढ़िया उत्तर

ब्रायन टेर्लसन के अनुसार, रेंजेड पीयर डिपेंडेंसीज को एक नियम के रूप में इस्तेमाल किया जाना चाहिए।

सामान्य निर्भरता (अनुशंसित नहीं)

आप @types का संस्करण चुनते हैं, लेकिन इसकी कोई गारंटी नहीं है कि यह आपके उपभोक्ताओं द्वारा उपयोग किए जाने वाले संस्करण से मेल खाएगा। उदाहरण के लिए, आप @types/node@10.0.0 चुन सकते हैं जब आपके उपयोगकर्ता नोड 11 पर हों।

विकास निर्भरता (अनुशंसित नहीं)

क्योंकि जब आपके उपभोक्ता आपके पैकेज को स्थापित करते हैं तो वे स्थापित नहीं होते हैं, उन्हें इसे अपने प्रोजेक्ट में स्वयं जोड़ना होगा (यह मानते हुए कि वे टाइपस्क्रिप्ट का उपयोग कर रहे हैं)।

विकास निर्भरता आपके स्रोत कोड में दिखाई देती है (कभी-कभी अनुशंसित)

यदि आपका @types/* का उपयोग न्यूनतम है, तो आपके कोड में प्रयुक्त प्रकार की परिभाषा को प्रतिबिंबित करना समझ में आता है। नकल करें कि तीसरे पक्ष की परिभाषाएं क्या कर रही हैं और इसे अपने कोड में रखें। नकारात्मक पक्ष यह है कि आपको अपनी परिभाषाओं को उनके मूल संस्करण के साथ समन्वयित रखना होगा।

सहकर्मी निर्भरता (अनुशंसित)

एक बीच का मैदान। वे आपके पैकेज और आपके उपभोक्ताओं के पैकेज द्वारा स्थापित और पुन: उपयोग किए जाएंगे। दिमाग में एकमात्र समस्या तब आती है जब कई पुस्तकालय कुछ @types/* पर निर्भर करते हैं, लेकिन उनके संस्करण मेल नहीं खाते।

5
Karol Majewski 28 फरवरी 2019, 13:28