@ প্রকার / * `নির্ভরতা` বা` দেব-নির্ভরতা` into তে যায় কিনা আমি কীভাবে সিদ্ধান্ত নেব?


195

আমি আমার প্রকল্পে টাইপস্ক্রিপ্ট 2 ব্যবহার করি। আমি কিছু জেএস লাইব্রেরি ব্যবহার করতে চাই, তবে সেই লাইব্রেরির জন্য টাইপও করব। আমি সহজ সঙ্গে টাইপ ইনস্টল করতে পারেন npm install @types/some-library। আমি --saveবা --save-devতাদের উচিত কিনা তা নিশ্চিত নই । এটি আমার কাছে মনে হয় যে এমনকি DefinetelyTyped GitHub Readme ধরণের উভয় সংস্করণ উল্লেখ করে তবে সেগুলি কখনই ব্যাখ্যা করে না। আমি ভাবব যে @ টাইপগুলি এগুলি হওয়া উচিত devDependencies, কারণ উন্নয়নের জন্য ধরণের প্রয়োজনীয়তা রয়েছে এবং রানটাইমে ব্যবহৃত হয় না, তবে আমি অনেকবার @ টাইপগুলিকে কেবল দেখেছি dependencies। আমি বিভ্রান্ত

@ টাইপ / * এ যায় dependenciesবা যায় সে বিষয়ে আমি কীভাবে সিদ্ধান্ত নেব devDependencies? আসলে কি আরও কিছু বা কম সরকারী নির্দেশাবলী রয়েছে?


আপনি কি একটি বান্ডিল তৈরি করছেন বা এটি কি এমন প্যাকেজ যা অন্যরা ব্যবহার করবে? আমি এটি দেখতে পাচ্ছি আপনার কেবলমাত্র পরবর্তী ক্ষেত্রে dependenciesএবং এর devDependenciesমধ্যে পার্থক্য করা দরকার ।
ভ্যালেন্টিন

আমি স্ক্র্যাচ থেকে জেএস / টিএসে কিছু গেম তৈরি করি। আমি ওয়েবপ্যাক দিয়ে সমস্ত কিছু বান্ডিল করি। একেবারে এটিমের কোনও ব্যাকএন্ড নেই, তবে এটি সম্ভব যে আমি এটাকে একদিন এককভাবে তৈরি করতে সমস্ত কিছু ইলেক্ট্রনে গুটিয়ে রেখেছি। আমি মনে করি না যে কেউ এটিকে কখনও তাদের নিজস্ব অ্যাপ্লিকেশনে নির্ভরতা হিসাবে ব্যবহার করবে, তবে আমার ধারণা এটি সম্ভব হতে পারে (জিটিএ গেমসে মিনি গেমগুলি ভাবেন; এবং আমার গেমটি উন্মুক্ত উত্স)। তবুও, আমি সেরা অনুশীলনগুলি শিখতে এবং অনুসরণ করতে চাই এবং এটিই মূল কারণ আমি এই গেমটি করি make আমি আশা করি আমি আমার ব্যবহারের ক্ষেত্রে যথেষ্ট পরিমাণে ব্যাখ্যা করেছি। :)
কামিল

1
হ্যাঁ, এটি বোধগম্য, কেবলমাত্র নিশ্চিত করতে চেয়েছিলেন যে আমার আসল উত্তরটি আপনার ব্যবহারের ক্ষেত্রে প্রাসঙ্গিক। আমি এখনও মনে করি যে মধ্যে পার্থক্য devDependenciesএবং dependenciesঅপ্রাসঙ্গিক যখন একটি বান্ডিল বিল্ডিং, এটা এর এমন কিছু বিষয় যা create-react-appপ্রয়োগ পাশাপাশি কিন্তু শেষ পর্যন্ত এটা আপনার উপর নির্ভর করে চয়ন করতে
ভ্যালেন্টিন

উত্তর:


133

ধরা যাক আপনি "A" এমন একটি প্যাকেজ বিকাশ করছেন যা ডেভডিপেন্ডেন্সে @ টাইপ / কিছু মডিউল প্যাকেজ রয়েছে। কোনও কারণে আপনি @ প্রকার / কিছু-মডিউল থেকে প্রকারটি রফতানি করছেন

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

     }
}

এখনই প্যাকেজ "এ" এর টাইপস্ক্রিপ্ট গ্রাহকরা সোমটাইপ কী তা অনুমান করতে অক্ষম, যেহেতু প্যাকেজ "এ" এর ডেভিনিডেন্সগুলি ইনস্টল করা হয়নি।

সেই বিশেষ ক্ষেত্রে আপনাকে নিয়মিত "নির্ভরতা" সহ @ প্রকার / * প্যাকেজ স্থাপন করা দরকার। অন্যান্য ক্ষেত্রে "ডেভিনির্ভরতা" যথেষ্ট ভাল।


6
সুতরাং আপনি বোঝাচ্ছেন যে, আমি যদি কেবল প্রয়োগের ধরণটি ব্যবহার করি তবে এটির ধরণের সংজ্ঞা কি হতে পারে devDependencies?
ফ্র্যাঙ্কলিন ইউ

6
হ্যাঁ @ ফ্র্যাঙ্কলিনইউ প্রকারটি ঘোষণাপত্রের ফাইলটিতে উপস্থিত হওয়ার সাথে সাথে আপনাকে এটি চালু করা দরকার dependencies। অন্যথায় devDependenciesভাল
wookieb

1
তবে একটি প্যাকেজ টিএস এবং জেএস উভয়ের পক্ষে কাজ করে। জেএস বিকাশকারীদের কোডটি সংকলনের জন্য এই ধরণের প্রয়োজন নেই। প্রকারের সংজ্ঞাটি যুক্ত করা dependenciesনির্ভরশীলতা গাছকে ফুলিয়ে দেবে।
টাইলার দীর্ঘ

1
পছন্দ করুন এটি নিখুঁত নয় তবে এটি বাস্তব। Ptionচ্ছিকভাবে আপনি "alচ্ছিক নির্ভরতা" ব্যবহার করতে পারেন তবে আমি বিশ্বাস করি স্কেল এ এটি খুব বিরক্তিকর হতে পারে।
wookieb

55

আপনি যদি কেবল একটি বান্ডিল তৈরি করে থাকেন তবে dependenciesএবং এর মধ্যে পার্থক্য করার প্রয়োজন নেই devDependencies। এই বৈশিষ্ট্যnpm অন্যদের দ্বারা ব্যবহৃত হতে পারে এমন প্যাকেজ প্রকাশের সময় সাধারণত কার্যকর হয় এবং আপনি এগুলি অনর্থক নির্ভরতার সাথে স্প্যাম করতে চান না।

অন্যান্য ব্যবহারের ক্ষেত্রেও হতে পারে যেখানে বিভাজন নির্ভরতা নির্ভরযোগ্য হতে পারে তবে আপনার যদি এর জন্য কোনও এক্সপ্রেশন প্রয়োজন না হয় তবে আমার পরামর্শটি হ'ল যে কোনও একটি বেছে নিন এবং সেখানে সমস্ত কিছু রাখুন। পরে যদি প্রয়োজন দেখা দেয় তবে তাদের ভাগ করে নেওয়া শক্ত নয়।

এই অনুশীলন আইআরএলটির একটি সুপরিচিত উদাহরণ হ'ল create-react-appডিফল্টরূপে আন-ইজেক্টেড বয়লারপ্লেট এটি সমস্ত কিছু তৈরি করে dependencies, এই থ্রেড এবং এই উত্তরটি দেখুন


7
আপনি প্যাকেজ, যে সঠিক, কিন্তু আপনি যদি হয়, এটা উন্নয়ন বনাম রানটাইম এবং সবকিছু কিছুই করার আছে প্রকাশ না করে থাকেন কি এই প্যাকেজ নির্মাণের দরকার বনাম কি এই প্যাকেজ ব্যবহার করতে দরকার
যোগু

1
@ যোগু এই কারণেই আমি প্রথম স্থানে আলাদা হয়েছি তাই হ্যাঁ, আমি আপনার সাথে সম্পূর্ণ একমত
ভ্যালেন্টিন

12
আমি এই পরামর্শের সাথে একমত নই। devDependenciesআপনি যখন npm install --production(বা npm ci --production) করেন তখন ইনস্টল করা হয় না এবং উত্পাদনের কোড চালানোর সময় এটি উপলব্ধ হয় না। এটি কেবল একটি গ্রন্থাগার নয়, একটি পরিষেবার জন্য খুব অর্থপূর্ণ পার্থক্য।
ব্র্যাড উইলসন

2
@ ব্র্যাডউইলসন আপনার একটি বক্তব্য আছে, সূর্যের নীচে অনেকগুলি এনপিএম ওয়ার্কফ্লো রয়েছে, যদি আপনার ব্যবহারের ক্ষেত্রে আপনার পার্থক্য প্রয়োজন হয় তবে তা সব উপায়ে করুন। এই দ্বিধা আপনার নিজের উত্তর দিতে নির্দ্বিধায়।
ভ্যালেন্টিন

আমি অন্যান্য ব্যবহারের ক্ষেত্রে অস্তিত্বের উল্লেখ করতে আমার উত্তর আপডেট করেছি যেখানে পার্থক্যটি অর্থবহ হতে পারে এবং প্রকৃত বিশ্বের উদাহরণ দিয়েছিল। সাহায্য করার জন্য ধন্যবাদ!
ভ্যালেন্টিন

15

কোনও নোড.জেএস অ্যাপ্লিকেশন উত্পাদনে স্থাপনের বিশেষ ক্ষেত্রে, অ্যাপ্লিকেশনটি চালানোর জন্য প্রয়োজনীয় নির্ভরতাগুলি কেবল ইনস্টল করতে চায়।

npm install --production অথবা

npm ci --production অথবা

yarn --production

সেক্ষেত্রে, ধরনের হওয়া উচিত devDependencies, তাদের ইনস্টলেশন bloating থেকে রাখা।

মন্তব্য: আমি সচেতন এটি সম্পর্কে আরও একটি উত্তর ব্র্যাড উইলসনের একটি মন্তব্যে উল্লেখ করা হয়েছিল। যদিও এই পয়েন্টটি একটি উত্তর হতে উপযুক্ত বলে মনে হচ্ছে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.