এটি static-হোস্টিং পাঠে পরিচয় করানো একটি ধারণার সরাসরি, ব্যবহারিক সংস্করণ: একটি React অ্যাপ, একবার build হলে, শুধু static ফাইল — HTML, CSS, আর JavaScript — যে কারণে এটি এই বিভাগে আগে কভার করা Git-ভিত্তিক cloud workflow-এর মাধ্যমে deploy হয়, FTP-এর মাধ্যমে নয়।
npm run build
# সাধারণ HTML, CSS, আর JS-এ ভরা একটি ফোল্ডার তৈরি করে
# (সাধারণত "build" বা "dist") — এটি পরিবেশন করতে কোনো
# React-নির্দিষ্ট সার্ভারের প্রয়োজন নেইসেই output ফোল্ডারটি static-হোস্টিং পাঠে কভার করা প্রতিটি অর্থে একটি সম্পূর্ণ static সাইট — এটি, নীতিগতভাবে, অন্য যেকোনো static প্রোজেক্টের মতো সাধারণ FTP-এর মাধ্যমে আপলোড করা যেত। বাস্তবে, প্রায় কেউ এটি হাতে করে না।
npm run build চালায়, আর output পরিবেশন করে।এই বিন্দু থেকে, আপনার repository-র main branch-এ প্রতিটি push স্বয়ংক্রিয়ভাবে পুনরায় deploy হয় — ঠিক আগে কভার করা Git-ভিত্তিক deployment workflow, প্রক্রিয়াটি নিজে সম্পর্কে React-নির্দিষ্ট কিছু ছাড়াই।
Client-side routing ব্যবহার করা একটি React অ্যাপে (একটি সম্পূর্ণ reload ছাড়া পাতার মধ্যে চলাচল) deploy হওয়ার পরে সঠিকভাবে কাজ করতে একটি নির্দিষ্ট সার্ভার কনফিগারেশন দরকার: প্রতিটি URL path-এ একই index.html ফাইল পরিবেশন করতে হয়, প্রতিটি path-এ একটি মিলে যাওয়া ভৌত ফাইল খুঁজে না পেয়ে একটি 404 ফেরত দেওয়া সার্ভারের বদলে React-এর নিজস্ব router-কে URL-এর ভিত্তিতে কোন কন্টেন্ট দেখাবে তা সামলাতে দিতে হয়।
Client-side routing-এ একটি নির্দিষ্ট সার্ভার নিয়ম দরকার
এই কনফিগারেশন ছাড়া, হোমপেজ ঠিকভাবে কাজ করে, কিন্তু অন্য যেকোনো পাতায় ব্রাউজার refresh করলে — বা একটির সরাসরি একটি লিংক শেয়ার করলে — একটি 404 error তৈরি হয়, কারণ সার্ভারটি ঠিক সেই path-এ একটি ফাইল খুঁজেছে আর কিছুই পায়নি। বেশিরভাগ cloud হোস্টিং প্ল্যাটফর্ম একটি স্বীকৃত React প্রোজেক্টের জন্য এটি স্বয়ংক্রিয়ভাবে সামলায়; সেই সনাক্তকরণ ছাড়া সাধারণ static হোস্টিং ব্যবহার করলে, এটি স্পষ্টভাবে কনফিগার করতে হবে, সাধারণত একটি ছোট redirect বা rewrite নিয়মের মাধ্যমে যা প্ল্যাটফর্মের ডকুমেন্টেশন সরাসরি নাম দেবে।
একটি React অ্যাপে প্রায়ই কনফিগারেশন দরকার যা স্থানীয় development আর প্রোডাকশনের মধ্যে ভিন্ন — উদাহরণস্বরূপ, একটি API URL। এগুলো hardcode করার বদলে হোস্টিং প্ল্যাটফর্মের dashboard-এর মাধ্যমে সেট করা হয়, এই বিভাগে পরে environment-variables-and-secrets পাঠে ঠিকভাবে কভার করা — একটি ডেটাবেস পাসওয়ার্ডের একই অন্তর্নিহিত ধারণা, শুধু একটি ভিন্ন ধরনের মানের জন্য।
হোমপেজ যাচাই করার বাইরে, বিশেষভাবে একটি ভেতরের route-এ navigate করা আর তারপর সেটিতে ব্রাউজার refresh করা পরীক্ষা করুন — সেই একক কাজটি একজন আসল ভিজিটরের আগে routing বিশেষত্ব ধরার সবচেয়ে নির্ভরযোগ্য উপায়।