গুরুত্বপূর্ণ আচরণের পার্থক্যের সংক্ষিপ্তসার:
সম্পর্কিত বিকল্পগুলি এখানে আলোচনা করা হয়নি:
devDependencies
dependencies
devDependencies
কেবল চালানোর জন্য প্রয়োজন, কেবল বিকাশ করার জন্য, যেমন: ইউনিট পরীক্ষা, জাভাস্ক্রিপ্ট প্রতিস্থাপন, সংশোধন, কফি স্ক্রিপ্ট ...
আপনি যদি কোনও প্যাকেজ বিকাশ করতে চলেছেন তবে আপনি এটি ডাউনলোড করুন (উদাহরণস্বরূপ git clone
), এর মূলটিতে যা যা রয়েছে package.json
এবং চালনা করুন:
npm install
যেহেতু আপনার আসল উত্স রয়েছে তাই এটি স্পষ্ট যে আপনি এটি বিকাশ করতে চান, তাই ডিফল্টরূপে উভয়ই dependencies
(যেহেতু আপনার অবশ্যই অবশ্যই বিকাশ চালাতে হবে) এবং devDependency
নির্ভরতাও ইনস্টল করা আছে।
তবে, আপনি কেবলমাত্র একজন শেষ ব্যবহারকারী যা কেবল এটি ব্যবহারের জন্য প্যাকেজ ইনস্টল করতে চান, আপনি যে কোনও ডিরেক্টরি থেকে এটি করতে পারবেন:
npm install "$package"
সেক্ষেত্রে, আপনি সাধারণত না গঠন নির্ভরতা, তাই আপনি শুধু পেতে কি প্যাকেজ ব্যবহার করতে প্রয়োজন হয় চাই: dependencies
।
আপনি যদি সত্যিই সেই ক্ষেত্রে বিকাশ প্যাকেজ ইনস্টল করতে চান তবে আপনি কমান্ড লাইন থেকে dev
কনফিগারেশন বিকল্পটি সেট করতে পারেন true
:
npm install "$package" --dev
বিকল্পটি false
ডিফল্টরূপে যেহেতু এটি অনেক কম সাধারণ ক্ষেত্রে।
peerDependencies
(3.0 এর আগে পরীক্ষিত)
সূত্র: https://nodejs.org/en/blog/npm/peer-d dependency/
নিয়মিত নির্ভরতা সহ, আপনার নির্ভরতার একাধিক সংস্করণ থাকতে পারে: এটি নির্ভরতাটির অভ্যন্তরে কেবল ইনস্টল করা থাকে node_modules
।
উদাহরণস্বরূপ যদি dependency1
এবং dependency2
উভয়ই dependency3
বিভিন্ন সংস্করণে নির্ভর করে তবে প্রকল্পের গাছটি দেখতে পাবেন:
root/node_modules/
|
+- dependency1/node_modules/
| |
| +- dependency3 v1.0/
|
|
+- dependency2/node_modules/
|
+- dependency3 v2.0/
প্লাগইনগুলি হ'ল প্যাকেজগুলি যা সাধারণত অন্য প্যাকেজের প্রয়োজন হয় না, যাকে এই প্রসঙ্গে হোস্ট বলা হয় । পরিবর্তে:
- প্লাগইনগুলি হোস্টের দ্বারা প্রয়োজনীয়
- প্লাগইনগুলি একটি স্ট্যান্ডার্ড ইন্টারফেস দেয় যা হোস্টটি প্রত্যাশা করে
- কেবলমাত্র হোস্টটিকে সরাসরি ব্যবহারকারী দ্বারা ডাকা হবে, সুতরাং এর একটি একক সংস্করণ অবশ্যই থাকতে হবে।
উদাহরণস্বরূপ যদি dependency1
এবং dependency2
পিয়ার নির্ভর করে dependency3
তবে প্রকল্পের গাছটি দেখতে পাবেন:
root/node_modules/
|
+- dependency1/
|
+- dependency2/
|
+- dependency3 v1.0/
আপনি কখনও dependency3
নিজের package.json
ফাইলটিতে উল্লেখ না করলেও এটি ঘটে ।
আমি মনে করি এটি বিপর্যয় নিয়ন্ত্রণের নকশা প্যাটার্নের একটি উদাহরণ ।
পিয়ার নির্ভরতার একটি নমুনা উদাহরণ গ্রান্ট, হোস্ট এবং এর প্লাগইন its
উদাহরণস্বরূপ, https://github.com/gruntjs/grunt-contrib-uglify এর মতো গ্রান্ট প্লাগইনে আপনি দেখতে পাবেন:
grunt
ইহা একটি peer-dependency
- কেবলমাত্র এটির
require('grunt')
অধীন tests/
: এটি প্রোগ্রাম দ্বারা আসলে ব্যবহৃত হয় না।
তারপরে, যখন ব্যবহারকারী কোনও প্লাগইন ব্যবহার করবেন, তখন তিনি স্পষ্টতই Gruntfile
একটি grunt.loadNpmTasks('grunt-contrib-uglify')
লাইন যুক্ত করে প্লাগইনটির প্রয়োজন হবে , তবে এটি grunt
ব্যবহারকারী সরাসরি কল করবে।
এটি যদি কাজ করে না তবে প্রতিটি প্লাগইনের জন্য পৃথক গ্রান্ট সংস্করণ প্রয়োজন।
ম্যানুয়াল
আমি মনে করি ডকুমেন্টেশন প্রশ্নের উত্তরটি বেশ ভালভাবে জবাব দেয়, সম্ভবত আপনি নোড / অন্যান্য প্যাকেজ পরিচালকদের সাথে যথেষ্ট পরিচিত নন। আমি সম্ভবত এটি বুঝতে পারি কারণ আমি রুবি বান্ডলার সম্পর্কে কিছুটা জানি।
মূল লাইনটি হ'ল:
কোনও প্যাকেজের মূল থেকে এনপিএম লিঙ্ক বা এনপিএম ইনস্টল করার সময় এই জিনিসগুলি ইনস্টল করা হবে এবং অন্যান্য এনপিএম কনফিগারেশন প্যারামিটারের মতো পরিচালনা করা যাবে। বিষয়টির আরও তথ্যের জন্য এনপিএম-কনফিগার (7) দেখুন।
এবং তারপরে এনপিএম-কনফিগার (7) এর অধীনে সন্ধান করুন dev
:
Default: false
Type: Boolean
Install dev-dependencies along with packages.
optionalDependencies
এখন আছে।