Ruby on Rails অ্যাপ্লিকেশনের পারফরম্যান্স উন্নত করতে SCSS (Sass) এবং JavaScript ফাইল গুলোকে compress বা minify করা গুরুত্বপূর্ণ। এটি ফাইলের আকার কমিয়ে দিয়ে পেজ লোড স্পিড বাড়ায় এবং সার্ভারের উপর লোড কমায়। Rails এ SCSS এবং JavaScript ফাইল মিনিফাই এবং কম্প্রেস করার জন্য কিছু বিল্ট-ইন টুলস এবং জেমস (gems) রয়েছে যা এই প্রক্রিয়াকে সহজ করে তোলে।
SCSS ফাইল Compress এবং Minify করা
SCSS (Sass) ফাইল কম্প্রেস বা মিনিফাই করার জন্য Rails-এ সাধারণত Sass এর অপশন ব্যবহৃত হয়। Sass স্বয়ংক্রিয়ভাবে minify অপশন এনাবল করে দেয় যখন আপনি প্রোডাকশন পরিবেশে অ্যাপ্লিকেশন চালান।
1. SCSS ফাইল Compress করার জন্য প্রোডাকশন পরিবেশে Configuration
প্রথমে, config/environments/production.rb ফাইলে Sass এর config.assets.css_compressor সেটিং ব্যবহার করে SCSS ফাইল কম্প্রেস বা মিনিফাই করার জন্য কনফিগার করুন:
config.assets.css_compressor = :sass
এই কনফিগারেশনটি Sass কোডগুলো প্রোডাকশন পরিবেশে কম্প্রেস এবং মিনিফাই করে।
2. SCSS ফাইল Minify করার জন্য Autoprefixer ব্যবহার
SCSS ফাইল মিনিফাই করার জন্য Autoprefixer একটি গুরুত্বপূর্ণ টুল, যা CSS-এর পুরনো ব্রাউজার সাপোর্ট যোগ করে, যাতে ফাইলটি সবার জন্য উপযোগী হয়। Autoprefixer সাধারণত Webpacker বা Sprockets এর সাথে ইনস্টল হয়।
প্রোডাকশন পরিবেশে SCSS ফাইল মিনিফাই করার জন্য আপনি Webpacker ব্যবহার করলে, নিচের কনফিগারেশন যুক্ত করতে পারেন:
// config/webpack/environment.js
const { environment } = require('@rails/webpacker')
const cssnano = require('cssnano')
environment.loaders.get('style').use.push({
loader: 'postcss-loader',
options: {
ident: 'postcss',
plugins: [
require('autoprefixer'),
cssnano({ preset: 'default' })
]
}
})
module.exports = environment
এটি CSS ফাইল মিনিফাই এবং কম্প্রেস করতে সাহায্য করবে।
JavaScript ফাইল Compress এবং Minify করা
JavaScript ফাইল কম্প্রেস এবং মিনিফাই করার জন্য Rails এ Uglifier বা Terser ব্যবহার করা যায়। Uglifier একটি জনপ্রিয় জেম যা JavaScript কোড মিনিফাই করার জন্য ব্যবহৃত হয়, তবে বর্তমানে Terser অধিক কার্যকরী এবং আধুনিক JavaScript কোডের জন্য বেশি উপযোগী।
1. Uglifier ব্যবহার করে JavaScript Minify করা
Rails এর পুরনো ভার্সনগুলিতে Uglifier জেমটি ডিফল্টভাবে ইন্সটল থাকে, যা JavaScript ফাইল মিনিফাই করে। প্রোডাকশন পরিবেশে এটি কার্যকরী করতে নিম্নলিখিত কনফিগারেশন ব্যবহার করুন:
# config/environments/production.rb
config.assets.js_compressor = :uglifier
এই কনফিগারেশনটি আপনার সমস্ত JavaScript ফাইল কম্প্রেস এবং মিনিফাই করবে যখন অ্যাপ প্রোডাকশন পরিবেশে চলবে।
2. Terser ব্যবহার করে JavaScript Minify করা
নতুন ভার্সনে Terser জেমটি JavaScript কোড মিনিফাই করার জন্য বেশি কার্যকরী। Rails 6 এবং তার পরবর্তী সংস্করণে Webpacker ব্যবহৃত হয়, যা Terser দ্বারা JavaScript কোড মিনিফাই করে।
আপনি যদি Webpacker ব্যবহার করেন, তবে Terser নিজেই ডিফল্টভাবে সক্রিয় থাকে। তবে, আপনি কনফিগারেশন ফাইলটি পরিবর্তন করে নিশ্চিত করতে পারেন:
// config/webpack/production.js
const TerserPlugin = require('terser-webpack-plugin')
environment.plugins.append('Terser', new TerserPlugin({
terserOptions: {
compress: {
drop_console: true // এটি কনসোল লগ সরিয়ে ফেলবে
}
}
}))
module.exports = environment
এটি Terser প্লাগইন ব্যবহার করে JavaScript কোড মিনিফাই করবে এবং কোডের আকার কমিয়ে দেবে।
SCSS এবং JavaScript ফাইল Minify এবং Compress করার জন্য অন্যান্য টুল
1. Webpacker (for Rails 6 and above)
Rails 6 এবং তার পরবর্তী সংস্করণে Webpacker ব্যবহার করা হয়। এটি একটি আধুনিক টুল যা JavaScript এবং CSS (SCSS) ফাইল কম্প্রেস এবং মিনিফাই করার জন্য ব্যবহৃত হয়। Webpacker স্বয়ংক্রিয়ভাবে মিনিফিকেশন এবং কম্প্রেশন পরিচালনা করে যখন আপনি RAILS_ENV=production পরিবেশে অ্যাপ্লিকেশন চালান।
2. Sprockets (for older Rails versions)
Rails 5 এবং তার আগের সংস্করণে Sprockets ব্যবহৃত হয়। Sprockets-এ SCSS এবং JavaScript ফাইল মিনিফাই করতে আপনি uglifier বা terser এবং SCSS কম্প্রেসরের জন্য sass ব্যবহার করতে পারেন। এটি Rails অ্যাপ্লিকেশনের কোড কম্প্রেস এবং মিনিফাই করতে সাহায্য করে।
Precompiled Assets এর মাধ্যমে SCSS এবং JavaScript Compress করা
Rails প্রোডাকশন পরিবেশে SCSS এবং JavaScript ফাইলগুলি precompile করে, যা asset pipeline এবং Webpacker মাধ্যমে সংকলন করা হয়। এটি নিশ্চিত করে যে, প্রোডাকশন পরিবেশে সমস্ত ফাইল মিনিফাই এবং কম্প্রেস হয়ে যাবে।
1. Precompile Assets
প্রোডাকশন পরিবেশে অ্যাসেটগুলি কম্প্রেস এবং মিনিফাই করার জন্য, আপনি নিম্নলিখিত কমান্ডটি ব্যবহার করে অ্যাসেট প্রিপ্রসেস করতে পারেন:
rails assets:precompile RAILS_ENV=production
এটি আপনার SCSS এবং JavaScript ফাইলগুলিকে প্রোডাকশন পরিবেশে কম্প্রেস এবং মিনিফাই করে public/assets ফোল্ডারে রেখে দেবে।
সারমর্ম
SCSS এবং JavaScript ফাইল কম্প্রেস এবং মিনিফাই করার জন্য Rails বিভিন্ন টুল সরবরাহ করে, যেমন Sass, Uglifier, Terser, এবং Webpacker। SCSS এবং JavaScript ফাইল মিনিফাই করার মাধ্যমে অ্যাপ্লিকেশনের লোড স্পিড উন্নত করা সম্ভব, যা ব্যবহারকারীদের জন্য ভালো অভিজ্ঞতা নিশ্চিত করে এবং সার্ভারের লোড কমায়। প্রোডাকশন পরিবেশে RAILS_ENV=production কনফিগারেশন সেট করা এবং assets:precompile কমান্ড চালানোর মাধ্যমে আপনি নিশ্চিত করতে পারেন যে সব ফাইল কম্প্রেস এবং মিনিফাই হবে।
Read more