Grunt একটি অত্যন্ত নমনীয় টাস্ক রানার, যা আপনাকে সহজে এবং কার্যকরভাবে টাস্ক তৈরি করতে এবং সেগুলি চালাতে সহায়তা করে। কখনও কখনও, আপনাকে একটি বা একাধিক টাস্কের জন্য ডায়নামিক কনফিগারেশন প্রয়োজন হতে পারে, বিশেষত যখন আপনার অনেক ফাইল বা টাস্ক থাকে যেগুলির কনফিগারেশন একই ধরনের হয় তবে তাদের সংখ্যায় ভিন্নতা থাকে। এই পরিস্থিতিতে Dynamic Task Creation এবং Execution আপনার কাজকে সহজ এবং কোডের পুনঃব্যবহারযোগ্যতা বাড়াতে সাহায্য করবে।
এই গাইডে আমরা শিখবো কিভাবে Dynamic Task Creation এবং Execution করা যায় Grunt-এ।
Dynamic Task Creation কী?
Dynamic Task Creation মানে হল এমন টাস্ক তৈরি করা যা চলাকালীন সময়ে ডায়নামিকভাবে কনফিগার করা যায়। উদাহরণস্বরূপ, যদি আপনার অনেক ফাইল থাকে এবং সেগুলির জন্য একই ধরনের টাস্ক রান করতে হয়, তবে আপনি ডায়নামিকভাবে টাস্কের জন্য কনফিগারেশন তৈরি করতে পারেন যাতে আপনাকে প্রতিটি ফাইলের জন্য আলাদা কনফিগারেশন লিখতে না হয়।
Grunt-এ Dynamic Task Creation কিভাবে করবেন?
Grunt-এ ডায়নামিক টাস্ক তৈরি করতে আমরা grunt.initConfig() এর মধ্যে একটি সাধারণ কনফিগারেশন তৈরি করি এবং তারপর JavaScript কোডের মাধ্যমে সেটি ডায়নামিকভাবে কনফিগার করতে পারি। এটি Gruntfile.js ফাইলের মধ্যে করা হবে।
উদাহরণ: Dynamic Task Creation
ধরা যাক, আমাদের কয়েকটি JavaScript ফাইল মিনিফাই করতে হবে এবং আমরা চাই না প্রতিটি ফাইলের জন্য আলাদা uglify টাস্ক তৈরি করতে। আমরা ডায়নামিকভাবে uglify টাস্ক তৈরি করব এবং প্রতিটি ফাইলের জন্য আলাদা কনফিগারেশন তৈরি করব।
১. Gruntfile.js কনফিগারেশন
module.exports = function(grunt) {
grunt.initConfig({
// ডায়নামিকভাবে টাস্ক কনফিগার করা
uglify: {
options: {
mangle: true
}
}
});
grunt.loadNpmTasks('grunt-contrib-uglify');
// ডায়নামিকভাবে ফাইলের জন্য টাস্ক তৈরি
grunt.registerTask('minifyFiles', function() {
var files = ['src/js/app.js', 'src/js/helper.js']; // ফাইল তালিকা
var config = {};
files.forEach(function(file) {
config[file] = {
files: [{
expand: true,
src: [file],
dest: 'dist/js/',
ext: '.min.js'
}]
};
});
// ডায়নামিক কনফিগারেশন সেট করা
grunt.config.set('uglify', config);
// `uglify` টাস্ক চালানো
grunt.task.run('uglify');
});
// ডিফল্ট টাস্ক
grunt.registerTask('default', ['minifyFiles']);
};
এখানে, files এর মধ্যে বিভিন্ন ফাইলের নাম রাখা হয়েছে, এবং সেগুলির জন্য ডায়নামিকভাবে uglify টাস্ক কনফিগার করা হয়েছে। এরপর, grunt.task.run() ব্যবহার করে uglify টাস্কটি চালানো হচ্ছে।
২. টাস্ক চালানো
এই কোডের মাধ্যমে আপনি Gruntfile.js-এ ডায়নামিকভাবে ফাইল মিনিফিকেশন টাস্ক তৈরি করতে পারবেন। এর ফলে একাধিক ফাইলের জন্য একই টাস্ক রান করতে পারবেন।
grunt
এটি সমস্ত JavaScript ফাইল মিনিফাই করে dist/js/ ফোল্ডারে সেভ করবে।
Dynamic Task Execution
Dynamic Task Execution মানে হল একটি টাস্কের মধ্যে অন্য টাস্ক বা কাজ এক্সিকিউট করা, যা Grunt এর আরেকটি শক্তিশালী বৈশিষ্ট্য। উদাহরণস্বরূপ, আপনি যদি নির্দিষ্ট কিছু শর্তের ভিত্তিতে একাধিক টাস্ক একসাথে চালাতে চান, তবে grunt.task.run() ব্যবহার করে আপনি সেটি করতে পারেন।
উদাহরণ: Dynamic Task Execution
ধরি, আপনি grunt-contrib-clean এবং grunt-contrib-copy টাস্ক দুটি একসাথে চালাতে চান, তবে শর্ত অনুযায়ী। এখানে grunt.task.run() ব্যবহার করে দুইটি টাস্ক একসাথে এক্সিকিউট করা হবে।
module.exports = function(grunt) {
grunt.initConfig({
clean: {
build: ['dist']
},
copy: {
main: {
files: [{
expand: true,
cwd: 'src/',
src: ['**/*.html', '**/*.js'],
dest: 'dist/'
}]
}
}
});
grunt.loadNpmTasks('grunt-contrib-clean');
grunt.loadNpmTasks('grunt-contrib-copy');
grunt.registerTask('build', function() {
var taskList = ['clean', 'copy'];
// যদি কোনো কনফিগারেশন বা শর্ত থাকে, তবে টাস্ক ডায়নামিকভাবে চালানো
if (grunt.file.exists('src/special-config.json')) {
taskList.push('special-task'); // বিশেষ টাস্ক যোগ করা
}
grunt.task.run(taskList); // টাস্ক এক্সিকিউট করা
});
grunt.registerTask('default', ['build']);
};
এখানে, grunt.task.run() ব্যবহার করে আপনি clean এবং copy টাস্ক একসাথে চালাচ্ছেন। যদি কোনো শর্ত পূর্ণ হয়, তবে special-task টাস্কও এক্সিকিউট হবে।
সারাংশ
Dynamic Task Creation এবং Execution Grunt-এর শক্তিশালী বৈশিষ্ট্য যা আপনাকে আপনার কোডকে আরও নমনীয় এবং পুনঃব্যবহারযোগ্য করতে সহায়তা করে। আপনি Gruntfile.js-এ ডায়নামিক কনফিগারেশন তৈরি করে একাধিক টাস্ক সহজে চালাতে পারেন। grunt.task.run() ব্যবহার করে আপনি একাধিক টাস্ক একসাথে এক্সিকিউট করতে পারেন, যা আপনার ডেভেলপমেন্ট প্রক্রিয়াকে আরও দ্রুত এবং কার্যকরী করে তোলে।
Grunt-এর মাধ্যমে টাস্ক কনফিগারেশন ডায়নামিকভাবে তৈরি ও এক্সিকিউট করা আপনার প্রোজেক্টের কাজের গতি বাড়াতে সাহায্য করবে, এবং একই কোডের মধ্যে অনেক ফাইল বা কাজের জন্য একাধিক টাস্ক ব্যবহারের সুযোগ প্রদান করবে।
Read more