DevOps & Workflows

DevOps Automation: Securing Code Quality with Git Hooks and Husky

টিমে কাজ করার সময় বা একাধিক প্রজেক্ট একসাথে হ্যান্ডেল করার সময় অনেক ডেভেলপারই ভুলবশত সিনট্যাক্স এরর (Syntax Error) সহ কোড অথবা আন-ফরম্যাটেড কোড গিটহাবে পুশ করে দেন। এর ফলে প্রোডাকশন বা সিআই/সিডি পাইপলাইন (CI/CD Pipeline) ভেঙে যায়। এই সমস্যা ঠেকাতে প্রফেশনাল টিমগুলো গিট হুক্স (Git Hooks) ব্যবহার করে। আর জাভাস্ক্রিপ্ট ইকোসিস্টেমে এই গিট হুক্স অটোমেট করার সবচেয়ে জনপ্রিয় টুল হলো **Husky**।

হাল্কি মূলত আপনার কোড git commit হওয়ার ঠিক আগের মুহূর্তে একটি স্বয়ংক্রিয় গেটকিপার স্ক্রিপ্ট রান করে, যা কোড নিখুঁত না হলে কমিট প্রসেসটি বাতিল করে দেয়।

১. ডিপেন্ডেন্সি মডিউল ইনস্টলেশন

প্রথমে আপনার প্রোজেক্টের ডেভ-ডিপেন্ডেন্সি হিসেবে কড়া পাহাদার টুল Husky ও lint-staged ইনস্টল করুন:

npm install husky lint-staged --save-dev

ধাপ ২: কন্সোল ইনিশিয়ালাইজেশন এবং কনফিগারেশন

আপনার প্রোজেক্টে হাস্কি এনভায়রনমেন্ট অ্যাক্টিভেট করার কমান্ড:

# হাস্কি ডিরেক্টরি সেটাপ করা
npx husky init

এই কমান্ডটি দেওয়ার সাথে সাথে আপনার রুট ফোল্ডারে একটি .husky ডিরেক্টরি তৈরি হবে এবং এর ভেতর pre-commit নামের একটি ফাইল জেনারেট হবে।

ধাপ ৩: প্রি-কমিট গেটকিপার রুলস সেটআপ (`package.json`)

এখন আপনার package.json ফাইলের ভেতরে নিচের অবজেক্টটি যুক্ত করুন যাতে শুধুমাত্র গিট ট্র্যাকিং এরিয়া বা স্টেজড এরিয়ায় থাকা কোডগুলোতে লাইভ কোয়ালিটি টেস্ট বা ফরম্যাটার রান হয়:

{
  "scripts": {
    "prepare": "husky"
  },
  "lint-staged": {
    "**/*.{js,jsx,ts,tsx}": [
      "eslint --fix",
      "prettier --write"
    ],
    "**/*.html": [
      "prettier --write"
    ]
  }
}

সবশেষে .husky/pre-commit ফাইলটি ওপেন করে ভেতরের ডিফল্ট কমান্ডটি পরিবর্তন করে লিখে দিন:

npx lint-staged

উপকারিতা: এখন থেকে আপনি যখনই টার্মিনালে git commit -m "update" কমান্ডটি রান করবেন, কমিট হওয়ার আগেই কোড নিজে নিজেই ফরম্যাট হবে এবং যদি কোডে কোনো বড় ভুল থাকে তবে ফায়ারওয়ালের মতো হাস্কি কমিট ব্লক করে দেবে।