যদি কোনো একটি প্রজেক্টের জন্য আলাদা কোড ফরম্যাটারের প্রয়োজন হয়, তবে প্রজেক্ট স্তরেই এই নির্বাচনটি নির্ধারণ করুন: সেই প্রজেক্টের কনফিগারেশন ফাইল ব্যবহার করুন এবং আপনি যদি Visual Studio Code-এ কাজ করেন, তবে এর ওয়ার্কস্পেস সেটিংস ব্যবহার করুন। এটি আপনার VS Code ইউজার ডিফল্টগুলোকে অক্ষত রাখে এবং একই সাথে প্রজেক্টের ফরম্যাটিং সংক্রান্ত নির্বাচনটিকে পুনরায় ব্যবহারযোগ্য করে তোলে। নিচের ধাপগুলো macOS এবং VS Code-কে কেন্দ্র করে তৈরি; অন্যান্য এডিটর হয়তো ভিন্ন নিয়ন্ত্রণ ব্যবহার করতে পারে।
এই প্রজেক্টের জন্য "ফরম্যাটার" বলতে কী বোঝায় তা নির্ধারণ করুন
প্রথমে প্রোগ্রামিং ভাষা এবং প্রকৃত প্রয়োজনীয়তা চিহ্নিত করুন। একটি ফরম্যাটার কোডকে একটি নির্দিষ্ট শৈলীতে বা স্টাইলে পুনরায় সাজিয়ে দেয়; অন্যদিকে এডিটরের একটি প্রাথমিক সেটিং কেবল ইন্ডেন্টেশন, লাইন এন্ডিং বা হোয়াইটস্পেস নিয়ন্ত্রণ করতে পারে। উদাহরণস্বরূপ, EditorConfig এমন প্রজেক্ট স্টাইল প্রপার্টি প্রদান করে যা এর সাথে সামঞ্জস্যপূর্ণ এডিটরগুলো পড়তে পারে, অন্যদিকে Prettier হলো নিজস্ব প্রজেক্ট কনফিগারেশন বিশিষ্ট একটি ফরম্যাটার। এই টুলগুলো একে অপরের পরিপূরক হতে পারে, তবে শুধুমাত্র একটি EditorConfig ফাইল কোনো ফরম্যাটার নির্বাচন বা ইনস্টল করে না। EditorConfig-এ এর ফরম্যাট ও এডিটর প্লাগইনগুলোর বিবরণ রয়েছে; Prettier-এর কনফিগারেশন গাইড-এ ব্যাখ্যা করা হয়েছে যে কীভাবে এটি সমর্থিত কনফিগারেশন ফাইলগুলো পড়ে।
আরেকটি ফরম্যাটার যোগ করার আগে প্রজেক্টটিতে ইতিমধ্যে কোন ফরম্যাটার ব্যবহার করা হচ্ছে তা পরীক্ষা করে দেখুন। এর প্যাকেজ ম্যানিফেস্ট, ফরম্যাটার কনফিগারেশন এবং প্রজেক্টের ডকুমেন্টেশন দেখুন। সহকর্মী বা অটোমেটেড চেকগুলো যদি কোনো নির্দিষ্ট টুল বা সংস্করণ প্রত্যাশা করে, তবে সেই সেটআপের সাথে মিল রাখাই সাধারণত সবচেয়ে বাস্তবসম্মত সিদ্ধান্ত। একটি বিপরীতমুখী ফরম্যাটার ইনস্টল করা বা এর অপশন পরিবর্তন করার ফলে কোড কাজ করলেও বিশাল আকারের ডিফারেন্স (diffs) তৈরি হতে পারে।
সেটিংটি কোথায় থাকা উচিত তা নির্ধারণ করুন
VS Code-এ, ইউজার সেটিংস আপনার সমগ্র এডিটর ব্যবহারের ক্ষেত্রে প্রযোজ্য হয়, অন্যদিকে ওয়ার্কস্পেস সেটিংস খোলা প্রজেক্টের ক্ষেত্রে প্রযোজ্য হয় এবং ইউজার সেটিংসের চেয়ে বেশি অগ্রাধিকার পায়। VS Code ওয়ার্কস্পেস সেটিংসগুলোকে প্রজেক্ট রুটের একটি .vscode ফোল্ডারে রাখে; ইউজার সেটিংস আপনার macOS অ্যাকাউন্টের অ্যাপ্লিকেশন সাপোর্ট ডিরেক্টরিতে আলাদাভাবে সংরক্ষণ করা হয়। কমান্ড প্যালেট (⇧⌘P) ব্যবহার করুন এবং প্রজেক্ট সেটিং এডিট করার জন্য Preferences: Open Workspace Settings (JSON) বেছে নিন। কোনো কিছু পরিবর্তন করার আগে নিশ্চিত হয়ে নিন যে সেটিংস এডিটরে Workspace লেখা রয়েছে। VS Code-এর সেটিংস ডকুমেন্টেশন-এ এর স্কোপ এবং লোকেশন সম্পর্কে বিস্তারিত ব্যাখ্যা করা হয়েছে।
এই প্রজেক্টের শুধুমাত্র একটি নির্দিষ্ট ভাষার জন্য ফরম্যাটার নির্বাচন করতে, ওয়ার্কস্পেস সেটিংসে ভাষা-নির্দিষ্ট একটি ডিফল্ট ফরম্যাটার এন্ট্রি যোগ করুন। উদাহরণস্বরূপ, প্রজেক্টটি যদি JavaScript-এর জন্য Prettier VS Code এক্সটেনশন ব্যবহার করে, তবে সেটিংটি দেখতে এমন হবে:
{
"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
}
}
আপনার এডিটরে প্রকৃতপক্ষে ইনস্টল করা ফরম্যাটারের জন্য নির্ধারিত এক্সটেনশন আইডেন্টিফায়ারটি ব্যবহার করুন; এই উদাহরণটি কোনো সার্বজনীন শনাক্তকারী নয়। প্রজেক্টে একাধিক ভাষা অন্তর্ভুক্ত থাকলে, গ্লোবাল ডিফল্ট সেট করার পরিবর্তে সংশ্লিষ্ট প্রতিটি ভাষার জন্য একটি করে এন্ট্রি যোগ করুন। VS Code-এর Format Document With... কমান্ডটি আপনাকে বর্তমান ডকুমেন্টের জন্য উপলব্ধ ফরম্যাটারগুলোর মধ্য থেকে বেছে নেওয়ার সুবিধা দেয়, এবং এর ফরম্যাট অ্যাকশনগুলো কমান্ড প্যালেট থেকে চালু করা যেতে পারে। VS Code-এর ফরম্যাটিং গাইড-এ এই নিয়ন্ত্রণগুলোর বিশদ বিবরণ রয়েছে। এই সীমিত পরিবর্তনের অংশ হিসেবে সেভ করার সাথে সাথে ফরম্যাট করার (format-on-save) সুবিধা চালু করা এড়িয়ে চলুন, যদি না আপনি চান যে ওই প্রজেক্টের প্রতিটি সেভ করার সাথেই যেন ফরম্যাটিং শুরু হয়।
ফরম্যাটারের নিয়মগুলো প্রজেক্টের সাথেই রাখুন
একটি ডিফল্ট ফরম্যাটার কেবল একটি টুল নির্বাচন করে; এটি সেই টুলের সমস্ত ফরম্যাটিং নিয়ম নির্ধারণ করে না। নির্বাচিত ফরম্যাটারটি চিনতে পারে এমন একটি কনফিগারেশন ফাইলে শেয়ার করা নিয়মগুলো সংরক্ষণ করুন। Prettier-এর জন্য এটি প্রজেক্ট রুটে একটি .prettierrc.json ফাইল হতে পারে। একটি ন্যূনতম উদাহরণে কেবল সেই বিকল্পগুলো নির্দিষ্ট করা যেতে পারে যা প্রজেক্টে ব্যবহারের জন্য সম্মতি জানানো হয়েছে:
{
"singleQuote": true
}
Prettier কনফিগারেশনের জন্য ফরম্যাট করা ফাইলটি থেকে শুরু করে এর প্যারেন্ট ডিরেক্টরিগুলোর ওপরের দিকে অনুসন্ধান করে, তাই রুট-লেভেলের কনফিগারেশন তার নিচের ফাইলগুলোর কাজে আসতে পারে। এটি অন্যান্য বেশ কয়েকটি কনফিগারেশন ফরম্যাটও সমর্থন করে; প্রজেক্টের সংস্করণ এবং বিদ্যমান টুলিং দ্বারা সমর্থিত একটি বেছে নিন। Prettier-এর কনফিগারেশন ডকুমেন্টেশন-এ সমর্থিত ফাইল এবং রেজোলিউশন আচরণের তালিকা রয়েছে।
লক্ষ্য যদি কেবল বিভিন্ন এডিটরের মাঝে সামঞ্জস্যপূর্ণ ইন্ডেন্টেশন বা লাইন এন্ডিং বজায় রাখা হয়, তবে এর পরিবর্তে রুটে একটি .editorconfig ব্যবহারের কথা বিবেচনা করুন। উদাহরণস্বরূপ, root = true আরও দূরবর্তী EditorConfig ফাইলগুলোর সন্ধান বন্ধ করে, এবং indent_style, indent_size, ও end_of_line-এর মতো প্রপার্টিগুলো পাঠ্যের প্রাথমিক কনভেনশনগুলো সংজ্ঞায়িত করতে পারে। প্লাগইনভেদে এডিটরের সমর্থন পরিবর্তিত হয়, এবং এই প্রপার্টিগুলো প্রোগ্রামিং ভাষা-সচেতন ফরম্যাটিং নিয়মগুলোর বিকল্প নয়। EditorConfig স্পেসিফিকেশন এবং ওভারভিউ-এ ফাইলগুলো কীভাবে খুঁজে পাওয়া যায় এবং কীভাবে ম্যাচিং নিয়মগুলো প্রয়োগ করা হয় তা বর্ণনা করা হয়েছে।
ফরম্যাট করার আগে স্কোপ যাচাই করে নিন
ওয়ার্কস্পেস সেটিং এবং কনফিগারেশন সেভ করুন, তারপর প্রয়োজন হলে VS Code-এ প্রজেক্ট ফোল্ডারটি পুনরায় খুলুন। প্রতিনিধিত্বমূলক একটি ফাইল খুলুন এবং নির্বাচিত ফরম্যাটারটি নিশ্চিত করতে Format Document With... ব্যবহার করুন। ফরম্যাটারটি তালিকাভুক্ত না থাকলে, এর এক্সটেনশনটি ইনস্টল করা আছে কিনা এবং তা সেই ভাষাকে সমর্থন করে কিনা তা পরীক্ষা করুন; একটি ওয়ার্কস্পেস সেটিং নিজে থেকে কোনো এক্সটেনশন ইনস্টল করতে বা ফরম্যাটার সমর্থন যোগ করতে পারে না।
ব্যাপকভাবে ফরম্যাটিং প্রয়োগ করার আগে, সোর্স কন্ট্রোল বা ডিফারেন্স (diff) ভিউতে প্রভাবিত ফাইলগুলো পর্যবেক্ষণ করুন। প্রথমে একটি ছোট প্রতিনিধিত্বমূলক সেটে ফরম্যাট প্রয়োগ করুন, বিশেষ করে যদি প্রজেক্টে আগে থেকেই স্টাইল রুল বা জেনারেটেড ফাইল থাকে। ফলাফল অপ্রত্যাশিত হলে, থামুন এবং প্যারেন্ট ডিরেক্টরিতে কোনো বিরোধপূর্ণ কনফিগারেশন, ভাষা-নির্দিষ্ট সেটিং, বা অন্য কোনো ফরম্যাটার যা প্রজেক্টটি ইতিমধ্যে প্রত্যাশা করে তা আছে কিনা পরীক্ষা করুন। এডিটরের সোর্স কন্ট্রোল টুলের মাধ্যমে অবাঞ্ছিত ফরম্যাটিং পরিবর্তনটি রিভার্ট বা পূর্বাবস্থায় ফিরিয়ে আনুন, তারপর প্রজেক্ট কনফিগারেশনটি সমন্বয় করুন এবং একটি ছোট সেটে প্রক্রিয়াটির পুনরাবৃত্তি করুন।
এটি সিদ্ধান্তটিকে প্রজেক্টের সাথে সংযুক্ত রাখে: VS Code-এর ইউজার ডিফল্টগুলো তাদের নিজস্ব পৃথক স্কোপে থাকে, অন্যদিকে প্রজেক্টটি তার নিজস্ব ফরম্যাটার নির্বাচন এবং নিয়মগুলো বহন করতে পারে। আপনি যদি এডিটর পরিবর্তন করেন, তবে ওয়ার্কস্পেস সেটিংটি স্থানান্তরিত হবে না, তাই সেই এডিটরটি সমর্থন করলে ফরম্যাটারের প্রজেক্ট কনফিগারেশনের ওপর নির্ভর করুন।
সোর্সসমূহ
User and workspace settings — Visual Studio Code
Basic editing — Visual Studio Code
Configuration File — Prettier
EditorConfig — EditorConfig