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:

ESLint
কোডের ভুল ধরে
Prettier
অটো-ফরম্যাট
Path Intellisense
ফাইল পাথ অটো-কমপ্লিট

২.৪ 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: এটি লাইব্রেরি ইন্সটল করে এবং স্টোর করে রাখে।

npm i express

→ আপনার প্রজেক্টে এক্সপ্রেস যুক্ত হলো

⚡ npx

Executor: এটি কোনো প্যাকেজ ইন্সটল না করেই সরাসরি রান করে।

npx cowsay "Hello Node"

→ কমান্ডটি একবার রান হবে, কিন্তু হার্ডড্রাইভে জায়গা দখল করবে না

💡 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) নিয়ে কাজ শুরু করবো—যেখানে আমরা আমাদের প্রথম সার্ভার 🚀 তৈরি করবো!

🔒 কপিরাইট সুরক্ষিত কন্টেন্ট 🔒

কপি, স্ক্রিনশট, প্রিন্ট করা সম্পূর্ণ নিষিদ্ধ।