2017-07-18 16 views
12

मैं अपनी परियोजना में टाइपस्क्रिप्ट 2 का उपयोग करता हूं। मैं कुछ जेएस लाइब्रेरी का उपयोग करना चाहता हूं, लेकिन उस पुस्तकालय के लिए भी टाइपिंग। मैं सरल npm install @types/some-library के साथ प्रकार स्थापित कर सकते हैं। मुझे यकीन नहीं है कि मुझे --save या --save-dev होना चाहिए। ऐसा लगता है कि यहां तक ​​कि DefinetelyTyped GitHub readme प्रकार दोनों संस्करणों का उल्लेख करता है, लेकिन उन्हें कभी समझाता नहीं है। मुझे लगता है कि @types devDependencies में होना चाहिए, क्योंकि विकास के लिए प्रकारों की आवश्यकता है और रनटाइम में उपयोग नहीं किया जाता है, लेकिन मैंने dependencies में कई बार @types देखा। मैं उलझन में हूं।मैं कैसे तय करूं कि @ प्रकार/* 'निर्भरता' या 'devDependencies` में जाता है या नहीं?

मुझे कैसे तय करना चाहिए कि @ प्रकार/* dependencies या devDependencies में है या नहीं? क्या वास्तव में कुछ कम या कम आधिकारिक निर्देश हैं?

+0

क्या आप एक बंडल उत्पन्न कर रहे हैं या यह एक पैकेज है जिसका उपयोग दूसरों द्वारा किया जाएगा? जैसा कि मैंने इसे देखा है, आपको बाद के मामले में केवल 'निर्भरता' और 'devDependencies' के बीच भेद करने की आवश्यकता है। – Valentin

+0

मैं स्क्रैच से जेएस/टीएस में कुछ गेम बना देता हूं। मैं वेबपैक के साथ सबकुछ बंडल करता हूं। सभी एटीएम पर कोई बैकएंड नहीं है, लेकिन यह संभव है कि मैं इसे सभी इलेक्ट्रॉनों में लपेटूंगा ताकि इसे कुछ दिन स्टैंडअलोन कर सकें। मुझे नहीं लगता कि कोई भी कभी भी अपने ऐप में निर्भरता के रूप में इसका इस्तेमाल करेगा, लेकिन मुझे लगता है कि यह संभव हो सकता है (जीटीए गेम्स में मिनी गेम्स के बारे में सोचें; और मेरा गेम ओपन सोर्स है)। फिर भी, मैं सीखना और सर्वोत्तम प्रथाओं का पालन करना चाहता हूं और यह मुख्य कारण है कि मैं वह गेम बनाउंगा। मुझे उम्मीद है कि मैंने अपने उपयोग-मामले को काफी स्पष्ट किया है। :) – kamyl

+1

हां, यह समझ में आता है, बस यह सुनिश्चित करना चाहता था कि मेरा मूल उत्तर आपके उपयोग के मामले के लिए प्रासंगिक था। मुझे अभी भी लगता है कि 'devDependencies' और' निर्भरता 'के बीच भेद एक बंडल बनाने के दौरान अप्रासंगिक है, यह कुछ ऐसा है जो' create-react-app 'लागू करता है [साथ ही] (https://stackoverflow.com/a/44872787/1333383) लेकिन आखिरकार यह आपके ऊपर – Valentin

उत्तर

11

मान लीजिए कि आप एक पैकेज "ए" विकसित कर रहे हैं जिसमें devdependencies में @ प्रकार/कुछ-मॉड्यूल पैकेज हैं। किसी कारण से आप @ प्रकार/कुछ मॉड्यूल से प्रकार निर्यात कर रहे हैं

import {SomeType} from 'some-module'; 
export default class APackageClass { 
    constructor(private config: SomeType) { 

    } 
} 

अभी पैकेज के टाइपप्रति उपभोक्ताओं 'ए', पैकेज के devDependencies के बाद से 'ए' स्थापित नहीं हैं अनुमान लगाना क्या SomeType पाने में असमर्थ हैं ।

उस विशेष मामले में आपको नियमित रूप से "निर्भरता" के साथ @ प्रकार/* पैकेज रखना होगा। अन्य मामलों के लिए "devdependencies" काफी अच्छे हैं।

+1

चुनने के लिए है, तो आप इसका मतलब है कि, अगर मैं केवल कार्यान्वयन में प्रकार का उपयोग करता हूं, तो इसकी परिभाषा 'devDependencies' हो सकती है? –

+1

हां @ फ्रैंकलिनयु। जैसे ही घोषणा घोषणा फ़ाइल में दिखाई देता है, आपको इसे 'निर्भरता' पर रखना होगा। अन्यथा 'देवता निर्भरता' ठीक है – wookieb

6

क्या आप एक बंडल उत्पन्न कर रहे हैं? यदि ऐसा है, तो मैं सुझाव दूंगा कि कहीं भी क्या बहस हो रही है। devDependencies और dependencies केवल सार्थक हैं यदि आप एक पैकेज प्रकाशित कर रहे हैं जिसका उपयोग दूसरों द्वारा किया जा सकता है और आप उन्हें बेकार निर्भरताओं के साथ स्पैम नहीं करना चाहते हैं।

टीएल; डीआर इसे devDependencies में रखें। जैसा कि आपने कहा "विकास के लिए प्रकारों की आवश्यकता है और रनटाइम में उपयोग नहीं किया जाता है"

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

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