Npm
এন. পি. এম হল এন. পি. এম, ইনকর্পোরেটেড দ্বারা পরিচালিত জাভাস্ক্রিপ্ট প্রোগ্রামিং ভাষার জন্য একটি প্যাকেজ ম্যানেজার। এন. পি. এম হল জাভাস্ক্রিপ্ট রানটাইম এনভায়রনমেন্ট Node.js-এর জন্য ডিফল্ট প্যাকেজ ম্যানেজার এবং এটি Node.js ইনস্টলারে একটি প্রস্তাবিত বৈশিষ্ট্য হিসাবে অন্তর্ভুক্ত করা হয়েছে। এটি একটি কমান্ড লাইন ক্লায়েন্ট নিয়ে গঠিত, যা এন. পি. এম নামেও পরিচিত, এবং এন. পি. এম রেজিস্ট্রি নামে পাবলিক এবং পেইড-ফর প্রাইভেট প্যাকেজগুলির একটি অনলাইন ডাটাবেস নিয়ে গঠিত। রেজিস্ট্রি ক্লায়েন্টের মাধ্যমে অ্যাক্সেস করা হয়, এবং উপলব্ধ প্যাকেজগুলি এন. পি. এম ওয়েবসাইটের মাধ্যমে ব্রাউজ এবং অনুসন্ধান করা যেতে পারে। প্যাকেজ ম্যানেজার এবং রেজিস্ট্রি এন. পি. এম, ইনকর্পোরেটেড দ্বারা পরিচালিত হয়। ইতিহাস এন. পি. এম আইজাক জেড শ্লুয়েটার দ্বারা তৈরি করা হয়েছিল যার ফলস্বরূপ "মডিউল প্যাকেজিং ভয়ঙ্করভাবে করা হয়েছে" এবং অন্যান্য অনুরূপ প্রকল্প যেমন পি. ই. এ. আর (পিএইচ. পি) এবং সি. পি. এ. এন (পার্ল) থেকে অনুপ্রেরণা নিয়ে। এন. পি. এম হল পিএম-এর জন্য একটি জাভাস্ক্রিপ্ট প্রতিস্থাপন, একটি শেল স্ক্রিপ্ট। যদিও "এন. পি. এম" সাধারণত "নোড প্যাকেজ ম্যানেজার"-এর সংক্ষিপ্ত রূপ হিসাবে বোঝা যায়, এটি আনুষ্ঠানিকভাবে "এন. পি. এম একটি সংক্ষিপ্ত রূপ নয়" বোঝায়। ব্যবহার এন. পি. এম এমন প্যাকেজগুলি পরিচালনা করতে পারে যা একটি নির্দিষ্ট প্রকল্পের স্থানীয় নির্ভরতা, পাশাপাশি বিশ্বব্যাপী ইনস্টল করা জাভাস্ক্রিপ্ট সরঞ্জাম। যখন একটি স্থানীয় প্রকল্পের জন্য নির্ভরতা ব্যবস্থাপক হিসাবে ব্যবহার করা হয়, তখন এনপিএম package.json ফাইলের মাধ্যমে একটি কমান্ডের মাধ্যমে একটি প্রকল্পের সমস্ত নির্ভরতা ইনস্টল করতে পারে। package.json ফাইলে, প্রতিটি নির্ভরতা শব্দার্থিক সংস্করণ পদ্ধতি ব্যবহার করে বৈধ সংস্করণগুলির একটি পরিসীমা নির্দিষ্ট করতে পারে, যা ডেভেলপারদের অবাঞ্ছিত ব্রেকিং পরিবর্তনগুলি এড়ানোর পাশাপাশি তাদের প্যাকেজগুলিকে স্বয়ংক্রিয়ভাবে আপডেট করার অনুমতি দেয়। এন. পি. এম ডেভেলপারদের জন্য একটি নির্দিষ্ট সংস্করণের সাথে তাদের প্যাকেজগুলিকে ট্যাগ করার জন্য সংস্করণ-বাম্পিং সরঞ্জামও সরবরাহ করে। এন. পি. এম package-lock.json ফাইলটিও সরবরাহ করে যার মধ্যে package.json-এ শব্দার্থিক সংস্করণের মূল্যায়নের পরে প্রকল্প দ্বারা ব্যবহৃত সঠিক সংস্করণের এন্ট্রি রয়েছে। ক্লায়েন্ট এন. পি. এম-এর কমান্ড-লাইন ইন্টারফেস ক্লায়েন্ট ব্যবহারকারীদের রেজিস্ট্রিতে উপলব্ধ জাভাস্ক্রিপ্ট মডিউলগুলি ব্যবহার এবং বিতরণ করার অনুমতি দেয়। 2018 সালের ফেব্রুয়ারিতে, সংস্করণ 5.7-এ একটি সমস্যা আবিষ্কৃত হয়েছিল যেখানে লিনাক্স সিস্টেমে সুডো এনপিএম চালানো সিস্টেম ফাইলগুলির মালিকানা পরিবর্তন করবে, স্থায়ীভাবে অপারেটিং সিস্টেমটি ভেঙে দেবে। এন. পি. এম সংস্করণ 6-এ, নিরীক্ষা বৈশিষ্ট্যটি ডেভেলপারদের ইনস্টল করা প্যাকেজগুলিতে নিরাপত্তা দুর্বলতা সনাক্ত এবং ঠিক করতে সহায়তা করার জন্য চালু করা হয়েছিল। নিরাপত্তা দুর্বলতার উৎস নোড সিকিউরিটি প্ল্যাটফর্ম (এন. এস. পি)-এ পাওয়া রিপোর্ট থেকে নেওয়া হয়েছে এবং এন. পি. এম-এর এন. এস. পি অধিগ্রহণের পর থেকে এন. পি. এম-এর সাথে একীভূত করা হয়েছে। রেজিস্ট্রিতে রেজিস্ট্রি প্যাকেজগুলি এসমাস্ক্রিপ্ট মডিউল (ই. এস. এম) বা কমন. জে. এস ফরম্যাটে থাকে এবং জে. এস. ও. এন ফরম্যাটে একটি মেটাডেটা ফাইল অন্তর্ভুক্ত করে। 13 লক্ষেরও বেশি প্যাকেজ প্রধান এন. পি. এম রেজিস্ট্রিতে পাওয়া যায়। রেজিস্ট্রিতে জমা দেওয়ার জন্য কোনও পরীক্ষা-নিরীক্ষা প্রক্রিয়া নেই, যার অর্থ হল যে সেখানে পাওয়া প্যাকেজগুলি সম্ভাব্যভাবে নিম্নমানের, অনিরাপদ বা দূষিত হতে পারে। পরিবর্তে, এন. পি. এম প্যাকেজগুলি নিম্নমানের, অনিরাপদ বা বিদ্বেষপূর্ণ হয়ে নীতি লঙ্ঘন করলে সেগুলি সরিয়ে ফেলার জন্য ব্যবহারকারীর প্রতিবেদনের উপর নির্ভর করে। এন. পি. এম প্যাকেজগুলির গুণমান বিচার করতে ডেভেলপারদের সহায়তা করার জন্য ডাউনলোডের সংখ্যা এবং নির্ভরশীল প্যাকেজগুলির সংখ্যা সহ পরিসংখ্যান প্রকাশ করে। অভ্যন্তরীণভাবে এন. পি. এম সর্বজনীনভাবে উপলব্ধ তথ্য পরিচালনার জন্য এন. ও. এস. কিউ. এল কাউচ ডিবি-র উপর নির্ভর করে। নিরাপত্তা এবং ব্যাঘাত নির্ভরতা শৃঙ্খল সমস্যা মার্চ 2016 সালে, এন. পি. এম লেফট-প্যাড নামে একটি প্যাকেজের পরে সংবাদমাধ্যমের দৃষ্টি আকর্ষণ করেছিল, যার উপর অনেক জনপ্রিয় জাভাস্ক্রিপ্ট প্যাকেজ নির্ভর করত, যা স্ব-শিক্ষিত সফ্টওয়্যার ইঞ্জিনিয়ার আজের কোকুলু এবং কিকের মধ্যে নামকরণের বিরোধের ফলে অপ্রকাশিত ছিল। যদিও প্যাকেজটি তিন ঘন্টা পরে পুনরায় প্রকাশিত হয়েছিল, এটি ব্যাপক ব্যাঘাত ঘটায়, যার ফলে ভবিষ্যতে অনুরূপ ঘটনা রোধ করতে এন. পি. এম প্রকাশ না করার বিষয়ে তার নীতি পরিবর্তন করে। 2020 সালের এপ্রিলে, ইস-প্রমিস নামে একটি ছোট প্যাকেজের ফলে অনেক বড় এবং গুরুত্বপূর্ণ অ্যাপ্লিকেশনের উপর নির্ভরশীলতার কারণে বিশ্বব্যাপী সার্ভারহীন অ্যাপ্লিকেশন এবং স্থাপনায় বিভ্রাট ঘটে। 2018 সালের জুলাই মাসে, জনপ্রিয় এসলিন্ট-স্কোপ প্যাকেজের রক্ষণাবেক্ষণকারীর এন. পি. এম শংসাপত্রগুলি আপস করা হয়েছিল যার ফলে এসলিন্ট-স্কোপ, সংস্করণ 3.7.2-এর একটি দূষিত রিলিজ হয়েছিল। দূষিত কোডটি এসলিন্ট-স্কোপ চালিত মেশিনের এন. পি. এম শংসাপত্রগুলি অনুলিপি করে আক্রমণকারীর কাছে আপলোড করে। 2018 সালের নভেম্বরে, এটি আবিষ্কার করা হয়েছিল যে জনপ্রিয় প্যাকেজ ইভেন্ট-স্ট্রিমের সংস্করণ 3.3.6-এর উপর নির্ভরতা হিসাবে একটি দূষিত প্যাকেজ যুক্ত করা হয়েছে। ফ্ল্যাটম্যাপ-স্ট্রিম নামে পরিচিত দূষিত প্যাকেজে একটি এনক্রিপ্ট করা পেলোড ছিল যা নির্দিষ্ট অ্যাপ্লিকেশন থেকে বিটকোইন চুরি করেছিল। এন. পি. এম প্রশাসকরা আপত্তিকর প্যাকেজটি সরিয়ে ফেলেন। 2022 সালের জানুয়ারিতে, জনপ্রিয় প্যাকেজ রঙগুলির রক্ষণাবেক্ষণকারী একটি অসীম লুপে আবর্জনা পাঠ্য মুদ্রণের পরিবর্তনগুলিকে ধাক্কা দেয়। রক্ষণাবেক্ষণকারী আরও একটি জনপ্রিয় প্যাকেজ, ফেকার এবং এন. পি. এম-এ এর প্যাকেজের সংগ্রহস্থলটি সাফ করে দিয়েছিলেন এবং এর পরিবর্তে একটি আর. ই. ডি. এম. ই দিয়ে প্রতিস্থাপন করেছিলেন যাতে লেখা ছিল, "অ্যারন সোয়ার্টজের আসলে কী হয়েছিল?" 2022 সালের মার্চ মাসে, ডেভেলপার ব্র্যান্ডন নোজাকি মিলার প্যাকেজ নোড-আইপিসির একটি সংস্করণ প্রকাশ করেন যাতে দূষিত কোড রয়েছে যা ইউক্রেনে রাশিয়ার আক্রমণের প্রতিবাদে বেলারুশিয়ান এবং রাশিয়ান আইপি ঠিকানা ব্যবহারকারীদের কাছ থেকে ফাইলগুলি মুছে ফেলবে। Vue.js, যা নির্ভরশীলতা হিসাবে নোড-আইপিসি ব্যবহার করে, তার নির্ভরশীলতাগুলিকে একটি নিরাপদ সংস্করণে পিন করেনি, যার অর্থ হল যে Vue.js এর কিছু ব্যবহারকারী দূষিত প্যাকেজ দ্বারা প্রভাবিত হয়েছিলেন যদি নির্ভরতাটি সর্বশেষ প্যাকেজ হিসাবে আনা হয়। ইউনিটি হাবের সংস্করণ 3.1-এও প্রভাবিত নির্ভরতা সংক্ষিপ্তভাবে উপস্থিত ছিল; তবে সমস্যাটি অপসারণের জন্য একই দিনে একটি হটফিক্স প্রকাশ করা হয়েছিল। বিকল্প মডুলার জাভাস্ক্রিপ্ট ইনস্টল করার জন্য এন. পি. এম-এর বেশ কয়েকটি ওপেন সোর্স বিকল্প রয়েছে, যার মধ্যে আই. ই. ডি, পি. এন. পি. এম, এন. পি. এম. ডি এবং সুতা রয়েছে, যার মধ্যে শেষটি 2016 সালের অক্টোবরে ফেসবুক প্রকাশ করেছিল। এগুলি সর্বজনীন এন. পি. এম রেজিস্ট্রির সাথে সামঞ্জস্যপূর্ণ এবং ডিফল্টরূপে এটি ব্যবহার করে, তবে বিভিন্ন ক্লায়েন্ট-সাইড অভিজ্ঞতা প্রদান করে, সাধারণত এন. পি. এম ক্লায়েন্টের তুলনায় কর্মক্ষমতা এবং নির্ধারণের উন্নতির উপর দৃষ্টি নিবদ্ধ করে। আরও দেখুন সফ্টওয়্যার সংগ্রহস্থল রেফারেন্স বাহ্যিক লিঙ্ক কমান্ড-লাইন সফ্টওয়্যার মুক্ত প্যাকেজ ম্যানেজমেন্ট সিস্টেম মুক্ত সফ্টওয়্যার জাভাস্ক্রিপ্ট জাভাস্ক্রিপ্ট প্রোগ্রামিং সরঞ্জামগুলিতে প্রোগ্রাম করা মাইক্রোসফ্ট মুক্ত সফ্টওয়্যার সফ্টওয়্যার শৈল্পিক লাইসেন্স 2010 সফ্টওয়্যার ব্যবহার করে