#prompt_included Yarn সংস্করণ অসঙ্গতি ঠিক করা: পুরোনো 1.x থেকে আধুনিক 4.x-এ আপগ্রেড
আধুনিক ওয়েব ডেভেলপমেন্ট প্রজেক্টে কাজ করতে গেলে ডিপেন্ডেন্সি ম্যানেজমেন্ট টুলগুলো দ্রুত বদলে যায়, আর সংস্করণের অসঙ্গতি খুব সহজেই কাজের পথে বাধা হয়ে দাঁড়ায়। সম্প্রতি আমি একটি পরিচিত কিন্তু বিরক্তিকর সমস্যায় পড়েছিলাম: প্রজেক্টের জন্য Yarn 4.6.0 বা তার উপরের সংস্করণ দরকার ছিল, অথচ আমার সিস্টেমে চলছিল পুরোনো 1.22.19 সংস্করণ।
সমস্যাটা কী ছিল
সমস্যাটা ধরা পড়ল যখন আধুনিক Yarn-এর ফিচারের উপর নির্ভরশীল প্রজেক্টের ডিপেন্ডেন্সি ম্যানেজমেন্ট স্ক্রিপ্ট চালাতে গেলাম। প্রজেক্টের package.json ফাইলে সংস্করণের কড়া শর্ত দেওয়া ছিল:
{
"engines": {
"yarn": ">= 4.9.3",
"node": ">= 20.0"
},
"packageManager": "yarn@4.9.3"
}এরর মেসেজটা পরিষ্কার ছিল, কিন্তু ঝামেলার:
The engine "yarn" is incompatible with this module. Expected version ">= 4.9.3". Got "1.22.19"প্রজেক্টটির এই কমান্ডের জন্য আধুনিক Yarn দরকার ছিল:
yarn installকিন্তু প্রয়োজনীয় Yarn (4.6.0+) আর ইনস্টল করা সংস্করণের (1.22.19) অমিলের কারণে প্রজেক্টের কাজ শুরুতেই আটকে গেল।
সংস্করণ কেন গুরুত্বপূর্ণ
Yarn-এর প্রধান সংস্করণগুলোর মধ্যে বড় পরিবর্তন এসেছে। 1.x হলো "Classic" Yarn, আর 2 ও তার পরের সংস্করণগুলোতে (এখন যাদের বলা হয় "Modern" Yarn বা "Berry") রয়েছে স্থাপত্যগত বড় উন্নতি, উন্নত ওয়ার্কস্পেস সাপোর্ট এবং আরও ভালো নিরাপত্তা-ফিচার। আজকের অনেক প্রজেক্ট এসব সক্ষমতার জন্য আধুনিক সংস্করণই দাবি করে।
Yarn 1.x থেকে আধুনিক সংস্করণে গেলে বেশ কিছু গুরুত্বপূর্ণ উন্নতি পাওয়া যায়:
- মনোরেপোর জন্য আরও ভালো ওয়ার্কস্পেস ম্যানেজমেন্ট
- দ্রুত ও নির্ভরযোগ্য ইনস্টলের জন্য Plug'n'Play ইনস্টলেশন কৌশল
- প্যাকেজ যাচাইয়ের উন্নতির মাধ্যমে বর্ধিত নিরাপত্তা
- উন্নত ডিপেন্ডেন্সি রেজোল্যুশন অ্যালগরিদম
যেসব চেষ্টা কাজ করেনি
কাজ করা সমাধানটি পাওয়ার আগে পারমিশনের সীমাবদ্ধতার কারণে কয়েকটি প্রচলিত পদ্ধতি ব্যর্থ হয়েছিল:
- গ্লোবাল npm ইনস্টলেশন - Permission denied এররের কারণে সিস্টেম-জুড়ে প্যাকেজ ম্যানেজমেন্ট সম্ভব হয়নি
- অফিসিয়াল Yarn ইনস্টলার - ইনস্টলেশন ভেঙে গিয়ে আর সম্পূর্ণ হয়নি
- Corepack - Node.js-এর নিজস্ব প্যাকেজ ম্যানেজারেও একই পারমিশন সমস্যা দেখা দিল
এই ব্যর্থতাগুলো একটা জরুরি শিক্ষা দিল: কখনও কখনও স্বয়ংক্রিয় ইনস্টলারের ভরসায় না থেকে সরাসরি পথে যাওয়াই বেশি কার্যকর, বিশেষ করে সীমিত পারমিশনের পরিবেশে।
কাজ করা সমাধান
সফল পদ্ধতিটি ছিল Yarn 4.6.0 হাতে ডাউনলোড করে নিজে কনফিগার করা:
ধাপ ১: পরিষ্কার করে শুরু
rm -rf ~/.yarn
mkdir -p ~/.yarn/releasesধাপ ২: সরাসরি ডাউনলোড
curl -L https://repo.yarnpkg.com/4.9.3/packages/yarnpkg-cli/bin/yarn.js -o ~/.yarn/releases/yarn-4.6.3.cjs
chmod +x ~/.yarn/releases/yarn-4.9.3.cjsধাপ ৩: কনফিগারেশন
~/.yarnrc.yml তৈরি করুন বা আপডেট করুন:
echo "yarnPath: ~/.yarn/releases/yarn-4.9.3.cjs" > ~/.yarnrc.ymlঅথবা
echo "yarnPath: /home/$USER/.yarn/releases/yarn-4.9.3.cjs" > ~/.yarnrc.ymlধাপ ৪: যাচাই
yarn --versionধাপ ৫: ইনস্টলেশন পরীক্ষা
yarn installসাফল্যের মাপকাঠি
এই সমাধান প্রয়োগের পর:
- ✅ Yarn সফলভাবে 1.22.19 থেকে 4.9.3-এ আপগ্রেড হয়েছে
- ✅ প্রজেক্টের ডিপেন্ডেন্সি ইনস্টলেশন কোনো এরর ছাড়াই সম্পন্ন হয়েছে
- ✅ আধুনিক Yarn দিয়ে NPM প্যাকেজগুলো সফলভাবে ম্যানেজ করা গেছে
- ✅ কোনো সামঞ্জস্য-সমস্যা বা উল্লেখযোগ্য ওয়ার্নিং দেখা যায়নি
আধুনিক Yarn ইকোসিস্টেম বুঝে নেওয়া
Yarn 4.6.0 ইনস্টল হয়ে গেলে আপনি বেশ কিছু আধুনিক ফিচার পাবেন:
উন্নত প্যাকেজ ম্যানেজমেন্ট: আধুনিক Yarn পিয়ার ডিপেন্ডেন্সি আরও ভালোভাবে সামলায় এবং প্যাকেজ রেজোল্যুশন বেশি নির্ভরযোগ্য।
ওয়ার্কস্পেস সাপোর্ট: প্যাকেজগুলোর মধ্যকার ডিপেন্ডেন্সি আরও ভালোভাবে সামলানোর মাধ্যমে মনোরেপো ম্যানেজমেন্ট আরও শক্তিশালী।
নিরাপত্তা উন্নয়ন: আরও ভালো প্যাকেজ যাচাই এবং আরও নিরাপদ ইনস্টলেশন প্রক্রিয়া।
পারফরম্যান্স উন্নয়ন: উন্নত ক্যাশিং কৌশলের কারণে দ্রুত ইনস্টলেশন এবং ডিস্কের আরও দক্ষ ব্যবহার।
মূল শিক্ষা
স্বয়ংক্রিয় ইনস্টলারের চেয়ে সরাসরি ডাউনলোড অনেক সময় বেশি নির্ভরযোগ্য। পারমিশন বা সিস্টেমের দ্বন্দ্বে প্যাকেজ ম্যানেজার বা ইনস্টলার ব্যর্থ হলে টুল হাতে ডাউনলোড করে কনফিগার করাই প্রায়ই পরিচ্ছন্ন সমাধান দেয়।
কনফিগারেশন ফাইলের শক্তি অনেক। Yarn-এর .yarnrc.yml কনফিগারেশন ব্যবস্থায় সিস্টেম-জুড়ে পরিবর্তন বা উচ্চ পারমিশন ছাড়াই নমনীয়ভাবে সংস্করণ ম্যানেজ করা যায়।
আধুনিক ওয়েব ডেভেলপমেন্টে সংস্করণের সামঞ্জস্য অত্যন্ত জরুরি। টুলগুলো দ্রুত বদলাচ্ছে, তাই সংস্করণের শর্ত সম্পর্কে সচেতন থাকা এবং নির্ভরযোগ্য আপগ্রেড কৌশল হাতে রাখা প্রজেক্টের ধারাবাহিকতার জন্য ক্রমেই গুরুত্বপূর্ণ হয়ে উঠছে।
ডকুমেন্টেশনের মূল্য আছে। সফল সমাধানের বিস্তারিত নোট রাখলে একক ডেভেলপার ও টিম দুই পক্ষই সহজে একই সমাধান আবার প্রয়োগ করতে পারে।
বিকল্প পদ্ধতি
আপনার পরিবেশে হাতে ডাউনলোডের পদ্ধতি কাজ না করলে এই বিকল্পগুলো ভেবে দেখতে পারেন:
Node Version Manager (nvm) ব্যবহার: কেউ কেউ Yarn আপগ্রেডের আগে আগে সামঞ্জস্যপূর্ণ Node.js সংস্করণ নিশ্চিত করে সফল হন।
প্রজেক্ট-লোকাল ইনস্টলেশন: গ্লোবালি ইনস্টল না করে কিছু টিম প্রতিটি প্রজেক্ট ডিরেক্টরির ভেতরেই Yarn ইনস্টল করা পছন্দ করে।
Docker-ভিত্তিক ডেভেলপমেন্ট: লোকাল পরিবেশের সমস্যায় ভোগা টিমগুলোর জন্য কন্টেইনারাইজড ডেভেলপমেন্ট পরিবেশ সব সদস্যের মধ্যে টুলের একই সংস্করণ নিশ্চিত করতে পারে।
এই অভিজ্ঞতা মনে করিয়ে দেয় যে ডিপেন্ডেন্সি ম্যানেজমেন্টের জন্য একাধিক কৌশল হাতে রাখা কতটা জরুরি। স্বয়ংক্রিয় টুল সাধারণত ভালোই কাজ করে, তবে সুবিধাজনক সমাধান ব্যর্থ হলেও হাতে-কলমে একটা বিকল্প থাকলে ডেভেলপমেন্টের কাজ থেমে যায় না।
যারা একই রকম Yarn সংস্করণ-দ্বন্দ্বের মুখোমুখি হচ্ছেন, তাদের জন্য হাতে ডাউনলোড ও কনফিগার করার এই পদ্ধতি স্বয়ংক্রিয় ইনস্টলারের নির্ভরযোগ্য বিকল্প, বিশেষ করে যেখানে পারমিশন বা সিস্টেম কনফিগারেশন অন্য আপগ্রেড-পথ আটকে দেয়।
অন্যদের ব্যবহারের জন্য প্রম্পট
একই Yarn সংস্করণ অসঙ্গতির সমস্যায় পড়লে Claude code-এর সঙ্গে এই প্রম্পটটি ব্যবহার করুন:
### keep in a loop until it is working without errors
I want to manage a working run for `yarn install`
but I keep getting a yarn version incompatibility error.
The error shows:
yarn install v1.22.19
[1/5] Validating package.json...
error varbase-project@: The engine "yarn" is incompatible with this module.
Expected version ">= 4.9.3". Got "1.22.19"
error Found incompatible module.
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
I need to upgrade yarn from 1.22.19 to >= 4.9.3 and get my project working without errors.
Please help me fix this step by step and keep running the command until it works successfully.
Commands to follow with:
rm -rf ~/.yarn
mkdir -p ~/.yarn/releases
curl -L https://repo.yarnpkg.com/4.9.3/packages/yarnpkg-cli/bin/yarn.js -o ~/.yarn/releases/yarn-4.9.3.cjs
chmod +x ~/.yarn/releases/yarn-4.9.3.cjs
echo "yarnPath: ~/.yarn/releases/yarn-4.9.3.cjs" > ~/.yarnrc.yml or echo "yarnPath: /home/$USER/.yarn/releases/yarn-4.9.3.cjs" > ~/.yarnrc.yml
yarn --version
অথবা সংক্ষিপ্ত প্রম্পট
Follow with the Prompt for Others to use in https://natshah.com/node/162