Building Your Workspace 🏗️
সঠিক এনভায়রনমেন্ট সেটআপ করা একজন ডেভেলপারের জন্য অর্ধেক যুদ্ধ জয়ের মতো। এই অধ্যায়ে আমরা শিখবো কীভাবে একটি প্রোডাকশন-রেডি নোড জেএস এনভায়রনমেন্ট তৈরি করতে হয়।
২.১ Installation: The Foundation ⚙️
Node.js ইন্সটল করার সময় সবসময় LTS (Long Term Support) ভার্সনটি বেছে নেওয়া উচিত। কেন? কারণ এটি স্টেবল এবং বড় প্রজেক্টের জন্য নিরাপদ।
📌 Verification (টার্মিনালে চেক করুন):
node -v # আউটপুট: v20.x.x (আপনার ভার্সন) npm -v # আউটপুট: 10.x.x (প্যাকেজ ম্যানেজার ভার্সন)
💡 Pro Tip: একাধিক প্রজেক্টে ভিন্ন ভিন্ন নোড ভার্সন ব্যবহারের জন্য NVM (Node Version Manager) ব্যবহার করা শিখলে আপনি এক ধাপ এগিয়ে থাকবেন।
২.২ Node REPL: Your Playground 🎮
REPL হলো একটি ইন্সট্যান্ট ফিডব্যাক লুপ। এটি কোনো ফাইল না খুলেই লজিক টেস্ট করার জন্য সেরা জায়গা।
💻 টার্মিনালে লিখুন:
// সরাসরি ম্যাথ বা লজিক টেস্ট করুন > const crypto = require('crypto'); > crypto.randomBytes(16).toString('hex'); // আউটপুট: '7e2f...' (একটি র্যান্ডম স্ট্রিং তৈরি হলো)
🔍 ব্যবহার: এটি মূলত লজিক ভেরিফাই করার জন্য ব্যবহৃত হয়। ক্যালকুলেশন, স্ট্রিং ম্যানিপুলেশন, বা ছোট ফাংশন টেস্ট করার জন্য পারফেক্ট!
২.৩ VS Code: The Modern IDE 🖥️
একজন Node.js ডেভেলপারের জন্য VS Code-কে অপ্টিমাইজ করা জরুরি।
⌨️ Integrated Terminal:
বার বার উইন্ডো সুইচ না করে Ctrl + ` চেপে টার্মিনাল ব্যবহার করুন।
🔌 Essential Extensions:
কোডের ভুল ধরে
অটো-ফরম্যাট
ফাইল পাথ অটো-কমপ্লিট
২.৪ package.json: The Project's Manifest 📄
package.json হলো আপনার প্রজেক্টের "Identity Card"। এটি ছাড়া কোনো নোড প্রজেক্ট সম্ভব নয়।
📦 Manifest File Create:
npm init -y
📝 একটি প্রফেশনাল package.json-এর উদাহরণ:
{
"name": "zarratin-backend",
"version": "1.0.0",
"description": "Premium Attar Shop API",
"main": "server.js",
"scripts": {
"start": "node server.js",
"dev": "nodemon server.js"
},
"dependencies": {
"express": "^4.18.2"
},
"devDependencies": {
"nodemon": "^3.0.1"
}
}
📌 Dependencies: প্রজেক্ট রান করতে যা লাগে।
🛠️ DevDependencies: শুধু ডেভেলপমেন্টের সময় যা লাগে (যেমন: টেস্টিং টুলস)।
২.৫ npm vs npx: The Big Confusion 🤔
ইন্টারভিউতে বা কাজের ক্ষেত্রে এটি প্রায়ই আমাদের কনফিউজ করে। সহজভাবে বুঝে নিন:
📦 npm
Manager: এটি লাইব্রেরি ইন্সটল করে এবং স্টোর করে রাখে।
→ আপনার প্রজেক্টে এক্সপ্রেস যুক্ত হলো
⚡ npx
Executor: এটি কোনো প্যাকেজ ইন্সটল না করেই সরাসরি রান করে।
→ কমান্ডটি একবার রান হবে, কিন্তু হার্ডড্রাইভে জায়গা দখল করবে না
💡 Interview Q&A (Chapter 2)
প্রশ্ন ১: package.json এবং package-lock.json এর মধ্যে পার্থক্য কী?
উত্তর: package.json এ প্যাকেজের ভার্সন রেঞ্জ (যেমন: ^4.1.0) থাকে। আর package-lock.json এ প্যাকেজের exact version এবং তার সমস্ত সাব-ডিপেন্ডেন্সির লিস্ট থাকে। এটি নিশ্চিত করে যে আপনার টিমের সবাই যেন ঠিক একই ভার্সন ব্যবহার করছে।
প্রশ্ন ২: npm install করার সময় -g ফ্ল্যাগ কেন ব্যবহার করা হয়?
উত্তর: -g মানে হলো Global। এটি প্যাকেজটিকে আপনার নির্দিষ্ট প্রজেক্টে না রেখে সরাসরি আপনার কম্পিউটারের ওএস-এ ইন্সটল করে। ফলে আপনি যেকোনো ফোল্ডার থেকে ওই কমান্ডটি ব্যবহার করতে পারেন (যেমন: nodemon বা typescript)।
প্রশ্ন ৩: Node.js এ dependencies এবং devDependencies আলাদা রাখা কেন জরুরি?
উত্তর: প্রোডাকশন সার্ভারে যখন অ্যাপ ডিপ্লয় করা হয়, তখন npm install --production দিলে শুধু dependencies ইন্সটল হয়। এতে সার্ভারে বাড়তি ওজনের টেস্টিং বা ফরম্যাটিং টুলস ইন্সটল হয় না, ফলে অ্যাপ দ্রুত কাজ করে।
প্রশ্ন ৪: আপনি ভুল করে একটি বড় ফাইল বা node_modules ডিলিট করে দিয়েছেন। এখন কী করবেন?
উত্তর: ভয়ের কিছু নেই! যেহেতু আপনার কাছে package.json আছে, আপনি শুধু টার্মিনালে npm install বা npm i লিখলেই আপনার প্রজেক্টের সব প্রয়োজনীয় প্যাকেজ আবার ডাউনলোড হয়ে যাবে।
🎯 অধ্যায় ২ এর সারাংশ (Summary)
- ✓ LTS Version ব্যবহার করা সবচেয়ে নিরাপদ এবং স্টেবল
- ✓ REPL দ্রুত লজিক টেস্ট করার জন্য পারফেক্ট টুল
- ✓ package.json প্রজেক্টের কন্ট্রোল সেন্টার - dependencies এবং devDependencies আলাদা করে রাখা জরুরি
- ✓ npm vs npx: npm ইন্সটল করে, npx রান করে (ইন্সটল ছাড়া)
- ✓ node_modules ডিলিট হয়ে গেলেও package.json থাকলে npm install দিয়ে সব ফিরিয়ে আনা যায়
📖 পরবর্তী অধ্যায় (Chapter 3):
আমরা Node.js-এর Built-in Core Modules (fs, path, http) নিয়ে কাজ শুরু করবো—যেখানে আমরা আমাদের প্রথম সার্ভার 🚀 তৈরি করবো!