Gruntfile হলো একটি কনফিগারেশন ফাইল, যা Grunt টাস্ক রানারকে বলে দেয় কীভাবে এবং কোন টাস্কগুলো চালানো হবে। এটি মূলত JavaScript ফাইল এবং এখানে আপনি বিভিন্ন টাস্কগুলোকে কনফিগার করে দেন। Gruntfile এ আপনি যে টাস্কগুলো ব্যবহার করতে চান এবং সেগুলোর জন্য যেসব প্লাগইন দরকার তা সংজ্ঞায়িত করতে পারেন।
Gruntfile এ task ডিফাইন করার জন্য আপনাকে সাধারণত দুটি প্রধান অংশে কাজ করতে হয়:
- Grunt.initConfig(): এখানে আপনি আপনার টাস্কগুলোর কনফিগারেশন নির্ধারণ করেন।
- grunt.loadNpmTasks(): এখানে আপনি যেসব প্লাগইন ব্যবহার করবেন তা লোড করেন।
Gruntfile এর মূল কাঠামো
Gruntfile তৈরি করার জন্য প্রথমে আপনাকে grunt এবং grunt-cli ইন্সটল করতে হবে। তারপর Gruntfile এ কনফিগারেশন সেটআপ করতে হবে।
Gruntfile এর সাধারণ কাঠামো নিচে দেওয়া হলো:
module.exports = function(grunt) {
// Grunt কনফিগারেশন সেটআপ
grunt.initConfig({
// আপনার টাস্ক কনফিগারেশন এখানে
});
// গ্রান্ট প্লাগইন লোড করা
grunt.loadNpmTasks('grunt-contrib-uglify'); // উদাহরণ: Uglify প্লাগইন লোড করা
// ডিফল্ট টাস্ক সেট করা
grunt.registerTask('default', ['uglify']);
};
Gruntfile এ Task ডিফাইন করা
ধরা যাক, আপনি একটি JavaScript ফাইল মিনিফাই (minify) করতে চান, এর জন্য grunt-contrib-uglify প্লাগইন ব্যবহার করবেন। এই প্লাগইনটির মাধ্যমে আপনি JavaScript ফাইলের আকার ছোট করতে পারবেন। নিচে একটি উদাহরণ দেওয়া হলো, যেখানে uglify টাস্ক ডিফাইন করা হয়েছে:
module.exports = function(grunt) {
grunt.initConfig({
// Uglify টাস্ক কনফিগারেশন
uglify: {
my_target: {
files: {
'dist/output.min.js': ['src/input.js']
}
}
}
});
// প্লাগইন লোড করা
grunt.loadNpmTasks('grunt-contrib-uglify');
// ডিফল্ট টাস্ক সেট করা
grunt.registerTask('default', ['uglify']);
};
এই উদাহরণে:
uglifyটাস্কের মধ্যেmy_targetএকটি টাস্কের নাম। এর মাধ্যমে আপনিsrc/input.jsফাইলটিকে মিনিফাই করেdist/output.min.jsফাইলে রক্ষা করবেন।grunt.loadNpmTasks('grunt-contrib-uglify')— এখানে প্লাগইনটি লোড করা হয়েছে।grunt.registerTask('default', ['uglify'])— এটি ডিফল্ট টাস্কের জন্যuglifyটাস্ককে সিলেক্ট করেছে, অর্থাৎgruntকমান্ড দিলে এটি স্বয়ংক্রিয়ভাবেuglifyটাস্ক চালাবে।
একাধিক Task একসাথে চালানো
আপনি একাধিক টাস্ক একসাথে চালানোর জন্য একটি অ্যারে ব্যবহার করতে পারেন। যেমন:
module.exports = function(grunt) {
grunt.initConfig({
uglify: {
my_target: {
files: {
'dist/output.min.js': ['src/input.js']
}
}
},
sass: {
dist: {
files: {
'css/styles.css': 'scss/styles.scss'
}
}
}
});
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-sass');
grunt.registerTask('default', ['uglify', 'sass']);
};
এখানে দুটি টাস্ক uglify এবং sass একসাথে ডিফাইন করা হয়েছে। default টাস্ক চালানোর মাধ্যমে প্রথমে uglify এবং তারপর sass টাস্ক একসাথে সম্পন্ন হবে।
গ্রান্টফাইলে টাস্ক ডিফাইন করা ডেভেলপারদের জন্য একটি শক্তিশালী উপায়, যা তাদের কাজের গতি ও কার্যকারিতা বাড়ায়। এইভাবে আপনি Grunt কে কাস্টমাইজ করে আপনার প্রোজেক্টের প্রয়োজনীয় কাজগুলো দ্রুত এবং সহজে সম্পাদন করতে পারেন।