npm যেভাবে পড়ে সেভাবে package.json পরীক্ষা করুন: নাম, ভার্সন, লাইসেন্স, ডিপেন্ডেন্সি ও সিনট্যাক্স
আপনার ব্রাউজারে চলে। আপনি যা লেখেন তা কোথাও পাঠানো হয় না। যাচাই করা হয়েছে 16 অক্টোবর, 2026।package.json ভ্যালিডেটর সেই ফাইলটি পরীক্ষা করে যা npm কোনো প্যাকেজ ইনস্টল বা প্রকাশ করার আগে পড়ে। ফাইলটি পেস্ট করুন এবং দেখুন লাইনসহ JSON সিনট্যাক্স ত্রুটি, npm যে সতর্কতাগুলো হুবহু দেখায়, নামটি অনুমোদিত কি না, লাইসেন্সটি 734টি SPDX শনাক্তকারীর একটি কি না, এবং ডিপেন্ডেন্সির এমন ভার্সন যা আসল রেঞ্জ নয়।
এই পৃষ্ঠাটি ইংরেজি মূল লেখা থেকে যন্ত্রের সাহায্যে অনুবাদ করা হয়েছে। এই অনুবাদটি এখনও কোনো মানুষ পর্যালোচনা করেননি, তাই ইংরেজি সংস্করণটিকেই নির্ভরযোগ্য ধরুন। ইংরেজি মূল লেখাটি পড়ুন
package.json পেস্ট করুন, ফাইলটি খুলুন, অথবা একটি উদাহরণ দেখুন-এ ক্লিক করুন।
আগে যেকোনো JSON সিনট্যাক্স ত্রুটি ঠিক করুন: এর লাইন ও কলাম দেখানো হয়, সাধারণ কারণসহ।
npm কী বলে পড়ুন: এই ফাইলের জন্য npm নিজে যে সতর্কতা ও ত্রুটি দেখায়, হুবহু।
অতিরিক্ত পরীক্ষাগুলো দেখুন, যেমন ভার্সন নির্দিষ্ট না করা ডিপেন্ডেন্সি, এবং শেয়ার করতে রিপোর্ট কপি করুন-এ ক্লিক করুন।
npm package.json কিছু জায়গায় কঠোরভাবে আর কিছু জায়গায় শিথিলভাবে পড়ে: ভুল ভার্সন সবকিছু থামিয়ে দেয়, অথচ বিবরণ না থাকলে শুধু একটি সতর্কতা আসে। এই পেজ ফাইলটি তিন স্তরে পরীক্ষা করে এবং প্রতিটি আলাদাভাবে দেখায়।
1. JSON সিনট্যাক্স। প্রথম ভুলটি তার লাইন, কলাম ও সাধারণ কারণসহ দেখানো হয়: শেষে বাড়তি কমা, মন্তব্য, একক উদ্ধৃতিচিহ্ন বা উদ্ধৃতিচিহ্ন ছাড়া কী। ডুপ্লিকেট কী-গুলোও তালিকায় আসে, কারণ JSON.parse নিঃশব্দে শুধু শেষটি রাখে এবং প্রথম মানটি হারিয়ে যায়।
2. npm কী বলে। এই ফাইলের জন্য npm নিজে যে সতর্কতা ও ত্রুটি দেখায়, হুবহু, যেমন "No repository field." বা "Invalid version"। এগুলো npm-এর নিজস্ব normalize-package-data, validate-npm-package-name ও validate-npm-package-license নতুন করে লিখে পাওয়া, এবং পরীক্ষাগুলো 80টি নমুনা ফাইল, 44টি নাম ও 54টি লাইসেন্স স্ট্রিংয়ে ওই প্যাকেজগুলোর উত্তরের সাথে মিলিয়ে দেখে।
| npm বার্তা | কী করবেন |
|---|---|
| Invalid version: "1.0" | তিনটি সংখ্যা লিখুন, যেমন 1.0.0 |
| No license field. | "license": "MIT" বা অন্য কোনো SPDX id যোগ করুন |
| license should be a valid SPDX license expression | হুবহু id ব্যবহার করুন, যেমন Apache-2.0 |
| scripts['server'] should probably be scripts['start']. | স্ক্রিপ্টের নাম বদলে start করুন |
| name can no longer contain capital letters | নতুন প্যাকেজে ছোট হাতের অক্ষর ব্যবহার করুন |
3. অতিরিক্ত পরীক্ষা। *, latest বা খালি স্ট্রিং হিসেবে লেখা ডিপেন্ডেন্সি; অবৈধ ভার্সন রেঞ্জ, npm-এর একই নিয়মে পরীক্ষিত; dependencies ও devDependencies দুটোতেই থাকা প্যাকেজ; ট্যাগ ছাড়া git ডিপেন্ডেন্সি; প্রকাশিত প্যাকেজে লোকাল পাথ; module বা commonjs ছাড়া অন্য কোনো "type"; engines রেঞ্জ; এবং npm init-এর রেখে যাওয়া অস্থায়ী টেস্ট স্ক্রিপ্ট।
"private": true চিহ্নিত ফাইল কখনো প্রকাশিত হয় না, তাই npm এর সতর্কতা দেখায় না; পেজটি তা জানিয়ে দেয়। সবকিছু আপনার ব্রাউজারে চলে; আপনি যা পেস্ট করেন তার কিছুই কোথাও পাঠানো হয় না।
license ফিল্ডে হুবহু একটি SPDX শনাক্তকারী থাকতে হবে, যেমন MIT, ISC বা Apache-2.0, অথবা (MIT OR Apache-2.0)-এর মতো সমন্বয়। "mit", "Apache 2.0" বা "BSD"-এর মতো কাছাকাছি লেখা ব্যর্থ হয়। ক্লোজড-সোর্স কোডের জন্য UNLICENSED লিখুন, অথবা নিজের ফাইল দেখাতে SEE LICENSE IN LICENSE.txt লিখুন।
নতুন প্যাকেজে নয়। নাম অবশ্যই ছোট হাতের অক্ষরে, সর্বোচ্চ 214 অক্ষরের, URL-নিরাপদ হতে হবে, ডট বা আন্ডারস্কোর দিয়ে শুরু হতে পারবে না এবং http-এর মতো Node.js কোর মডিউল হতে পারবে না। কিছু পুরোনো প্যাকেজে বড় হাতের অক্ষর আছে কারণ নিয়ম পরে এসেছে, এবং npm এখনো সেগুলো ইনস্টল করে, কিন্তু নতুন এমন প্যাকেজ প্রত্যাখ্যান করে।
ভার্সন অবশ্যই তিনটি সংখ্যার একটি পূর্ণ সেমান্টিক ভার্সন হতে হবে, যেমন 1.0.0 বা 2.1.0-beta.1। 1.0, latest বা খালি স্ট্রিং লিখলে npm প্যাকেজটি পড়তেই পারে না। npm শুরুর v গ্রহণ করে এবং সরিয়ে দেয়, তাই v1.2.3 পড়া হয় 1.2.3 হিসেবে।
সাধারণত হ্যাঁ। দুটোই যেকোনো ভার্সন গ্রহণ করে, তাই এক মাসের ব্যবধানে দুটি ইনস্টল ভাঙনধরা পরিবর্তনসহ ভিন্ন মেজর ভার্সন পেতে পারে। ^4.17.21-এর মতো ক্যারেট রেঞ্জ লিখুন, যা সংশোধন ও ফিচার নেয় কিন্তু পরের মেজর ভার্সনের আগে থেমে যায়, এবং লক ফাইল কমিট করুন যাতে প্রতিটি ইনস্টল একই হয়।
না। package.json কঠোর JSON, যাতে মন্তব্য নেই, তাই // বা /* থাকা লাইন npm-কে ফাইলটি পড়তে দেয় না। একটি প্রচলিত সমাধান হলো "//" নামের একটি কী, যার মান একটি স্ট্রিং; npm অচেনা কী উপেক্ষা করে। এই পেজের সিনট্যাক্স পরীক্ষা মন্তব্যের লাইনটি দেখিয়ে দেয়।
package.json-এ repository না থাকলে npm সতর্ক করে, কারণ npm ওয়েবসাইট এখান থেকেই সোর্স কোডের লিংক দেয়। "repository": {"type": "git", "url": "git+https://github.com/user/repo.git"} যোগ করুন। সতর্কতাটি কিছুই থামায় না, এবং "private": true চিহ্নিত প্যাকেজের ক্ষেত্রে npm এটি পুরোপুরি বাদ দেয়।
হার ও নিয়ম বদলায়; কোনো অঙ্কের ওপর নির্ভর করার আগে সূত্রটি দেখে নিন।
এখনও আটকে আছেন? package.json ভ্যালিডেটর সম্পর্কে প্রশ্ন করুন আর যিনি জানেন তিনিই উত্তর দিতে পারেন। কোনো অ্যাকাউন্ট লাগবে না।