স্ক্রিপ্ট তৈরি করুন

ব্লকলি শতাধিক টাইপস্ক্রিপ্ট ফাইল দিয়ে তৈরি। টাইপস্ক্রিপ্ট কম্পাইলার, tsc , ব্যবহার করার আগে এগুলি জাভাস্ক্রিপ্টে কম্পাইল করতে হবে। এটি স্থানীয় পরীক্ষার জন্য উপযুক্ত সংখ্যক .js ফাইল তৈরি করে, কিন্তু ইন্টারনেটে এত সংখ্যক ফাইল লোড করা শেষ ব্যবহারকারীদের জন্য একটি ধীর অভিজ্ঞতা। ব্লকলি দ্রুত লোড করার জন্য, ক্লোজার কম্পাইলারটি কম্প্রেস (মিনিফাইজ) করতে এবং অর্ধ ডজন ফাইল ("বান্ডেল" বা "চাঙ্ক") তৈরি করতে ব্যবহৃত হয় যার মোট আকার আনকম্প্রেসড ফাইলের অর্ধেকেরও কম।

এই প্রক্রিয়ায়, সর্বশেষ ECMAScript বৈশিষ্ট্যগুলি ব্যবহার করে কোডগুলি - যেগুলি সমস্ত ব্রাউজারের সাথে সামঞ্জস্যপূর্ণ নাও হতে পারে - ES6 এ স্থানান্তরিত হয়, যা সাধারণত সর্বাধিক ব্যবহৃত ব্রাউজারগুলির সাথে সামঞ্জস্যপূর্ণ। সুতরাং, আপনার শেষ ব্যবহারকারীদের কাছে শুধুমাত্র ক্ষুদ্র কোডটি পরিবেশন করা গুরুত্বপূর্ণ।

RaspberryPiFoundation/blockly রিপোজিটরিতে শুধুমাত্র সোর্স কোড থাকে। পূর্বে এটিতে বিল্ড পণ্যগুলিও ছিল, কিন্তু 2019 সাল থেকে মিনিফায়েড বান্ডেলগুলি blockly NPM প্যাকেজ হিসাবে প্রকাশিত হয়েছে এবং 2022 সাল থেকে প্রতিটি GitHub রিলিজের সাথে .tgz ফাইল হিসাবে সংযুক্ত করা হয়েছে, তাই ব্লকলি তৈরি করার কোনও প্রয়োজন নেই যদি না আপনি ব্লকলিতে হ্যাক করছেন—বিশেষ করে core , blocks , generators বা msg ডিরেক্টরিতে থাকা ফাইলগুলিতে।

ব্লকলি তৈরি, পরীক্ষা এবং প্রকাশের প্রক্রিয়াটি npm স্ক্রিপ্ট ব্যবহার করে Gulp টাস্ক চালানোর জন্য স্বয়ংক্রিয়ভাবে সম্পন্ন হয়। এই পৃষ্ঠায় মূল স্ক্রিপ্ট এবং প্রতিটি কী করে তা নথিভুক্ত করা হয়েছে।

সংকুচিত এবং অসংকুচিত মোড

টাইপস্ক্রিপ্ট কম্পাইলার দ্বারা তৈরি পৃথক .js ফাইল থেকে সরাসরি ব্লকলি লোড করাকে "আনকম্প্রেসড মোড" বলা হয়। যেহেতু এটি বেশ কয়েকটি ধীর বিল্ড ধাপ এড়ায়, এটি দ্রুত সম্পাদনা-কম্পাইল-রান চক্রকে সহজতর করে; এটি ডিবাগিংকেও সহজতর করে কারণ কার্যকর করা জাভাস্ক্রিপ্ট কোডটি মূল টাইপস্ক্রিপ্ট উৎসের মতোই প্রায় পঠনযোগ্য, যার ফলে সোর্সম্যাপের উপর নির্ভর করার প্রয়োজন হয় না।

মিনিফায়েড বান্ডেল থেকে ব্লকলি লোড করাকে "কম্প্রেসড মোড" বলা হয়। অন্য প্যাকেজের নির্ভরতা হিসেবে ব্লকলি ব্যবহার করার সময় এতে পরিবর্তনগুলি পরীক্ষা করার এটি সর্বোত্তম উপায়, কারণ এটি blockly এনপিএম প্যাকেজের (একটি অপ্রকাশিত সংস্করণ) পরীক্ষা করে।

বিঃদ্রঃ ব্লকলি রিপোজিটরিতে এমন কিছু জায়গা আছে যেখানে "আনকম্পাইল্ড মোড" এবং "কম্পাইল্ড মোড" শব্দ দুটি যথাক্রমে "আনকম্পাইল্ড মোড" এবং "কম্পাইল্ড মোড" শব্দ দুটির সমার্থক শব্দ হিসেবে ব্যবহৃত হয়। অতীতে এই ব্যবহারটি বোধগম্য ছিল কারণ ক্লোজার কম্পাইলার কোড সংকুচিত করার জন্য (মিনিফাই) ব্যবহার করা হত, কিন্তু এখন টাইপস্ক্রিপ্ট কম্পাইলার সর্বদা প্রয়োজন, এমনকি আনকম্পাইল্ড মোডেও, তাই এই বিকল্প পরিভাষাটি সম্ভাব্যভাবে বিভ্রান্তিকর এবং নিরুৎসাহিত করার মতো।

দ্রুত শুরু

  • যদি আপনি স্থানীয় পরিবর্তন করে থাকেন এবং নিশ্চিত করতে চান যে তারা বিল্ড বা কোনও পরীক্ষা ভেঙে ফেলেনি, তাহলে চালান

    npm test
    

    ব্লকলি তৈরি করতে এবং এর পরীক্ষা স্যুট চালানোর জন্য।

  • যদি আপনি ব্রাউজারে স্থানীয় পরিবর্তনগুলি পরীক্ষা করতে চান, তাহলে চালান

    npm start
    

    এটি ব্লকলি কম্পাইল করে এবং ব্লকলি খেলার মাঠের দিকে নির্দেশ করে একটি ওয়েব ব্রাউজার খোলে যা ব্লকলিকে আনকম্প্রেসড মোডে চালায়।

    core/ , blocks/ এবং generators/ এর যেকোনো ফাইল যা পরিবর্তিত হয় তা স্বয়ংক্রিয়ভাবে পুনরায় কম্পাইল হয়ে যায়; পরিবর্তনগুলি দেখতে ব্রাউজার ট্যাবটি পুনরায় লোড করুন।

  • ব্লকলির স্থানীয়ভাবে পরিবর্তিত সংস্করণ তৈরি করতে এবং এটিকে সংকুচিত মোডে পরীক্ষা করতে, অন্য npm প্যাকেজের নির্ভরতা হিসাবে, চালান

    npm run package
    

    ব্লকলি প্যাকেজ তৈরি করতে, তারপর

    cd dist && npm link
    

    সংকলিত ফাইলগুলি কোথায় পাবেন তা npm কে জানাতে, এবং তারপর চালানোর আগে আপনার প্রকল্পের ডিরেক্টরিতে cd লিখুন

    npm link blockly
    

    আপনার প্যাকেজটি প্রকাশিত blockly প্যাকেজের পরিবর্তে ব্লকলির নতুন সংকলিত সংস্করণ ব্যবহার করতে।

বিস্তারিত স্ক্রিপ্ট রেফারেন্স

এই বিভাগে Blockly এর package.json ফাইলের মূল scripts তালিকাভুক্ত করা হয়েছে এবং তারা কী করে তার ব্যাখ্যাও দেওয়া হয়েছে।

এই স্ক্রিপ্টগুলি দুটি জায়গায় ফাইল তৈরি করে:

  • build/ সাবডিরেক্টরিতে থাকা ফাইলগুলি হল মধ্যস্থতাকারী ফাইল যা স্থানীয় পরীক্ষার জন্য ব্যবহৃত হয় অথবা বিল্ড পাইপলাইনের পরবর্তী অংশগুলি দ্বারা গৃহীত হয়।
  • dist/ সাবডিরেক্টরিতে থাকা ফাইলগুলি প্রকাশিত npm প্যাকেজের বিষয়বস্তু গঠন করে।

ব্লকলি গিট রিপোজিটরিতে কোনও ডিরেক্টরি ট্র্যাক করা হয় না।

clean

npm run clean build/ এবং dist/ ডিরেক্টরি মুছে ফেলে পূর্ববর্তী যেকোনো বিল্ড পরিষ্কার করে। রহস্যময় বিল্ড ব্যর্থতা, বিশেষ করে সোর্স ফাইলের নাম পরিবর্তনের ফলে সৃষ্ট ত্রুটিগুলি ঠিক করার জন্য কার্যকর।

messages

npm run messages msg/json/ এ থাকা messages ফাইলগুলিকে msg/messages.js এ করা যেকোনো পরিবর্তনের সাথে আপডেট করে এবং প্রতিবার সেই ফাইলটি পরিবর্তন করার পরে চালানো উচিত।

langfiles

npm run langfiles msg/json এর মেসেজ ফাইল থেকে build/msg/ এ কম্পাইল করা ল্যাঙ্গুয়েজ ফাইল তৈরি করে।

tsc

npm run tsc core/ , blocks/ এবং generators/ ডিরেক্টরিগুলির বিষয়বস্তুতে TypeScript কম্পাইলার চালায় এবং পৃথক .js ফাইলগুলিকে build/src/ এ আউটপুট করে।

minify

npm run minify কম্পাইল করা .js ফাইলগুলিকে খণ্ডে (মিনিফাইড বান্ডেল) ভাগ করার পদ্ধতি নির্ধারণ করার জন্য closure-make-deps এবং closure-calculate-chunks চালায়, তারপর এটি closure-compiler চালায় যাতে খণ্ডগুলি নিম্নরূপ তৈরি করা যায়:

  • build/src/core/ এর বিষয়বস্তু dist/blockly_compressed.js হয়ে যায়।
  • build/src/blocks/ এর বিষয়বস্তু dist/blocs_compressed.js হয়ে যায়।
  • build/src/generators/javascript/ (প্লাস build/src/generators/javascript.js ) এর বিষয়বস্তু dist/javascript_compressed.js হয়ে যায়।
  • এবং একইভাবে dart , lua , php , এবং python জন্যও।

উৎপন্ন চুকগুলি ইউনিভার্সাল মডিউল সংজ্ঞার সাথে সামঞ্জস্য নিশ্চিত করার জন্য একটি র‍্যাপার ব্যবহার করে যাতে প্যাকেজে অন্তর্ভুক্ত করার আগে কোনও অতিরিক্ত প্রক্রিয়াকরণের প্রয়োজন হয় না।

build

npm run build minify এবং langfiles টাস্কগুলি চালায়। এটি ব্লকলি প্লেগ্রাউন্ডকে কম্প্রেসড বা আনকম্প্রেসড মোডে লোড করার জন্য যা যা প্রয়োজন তা করবে।

package

npm run package clean এবং build টাস্কগুলি চালায় এবং তারপর:

  • build/msg/ ফাইলগুলিতে একটি UMD র‍্যাপার প্রয়োগ করে, র‍্যাপ করা সংস্করণগুলিকে dist/msg/ এ রাখে।
  • dist/ তে বিভিন্ন অতিরিক্ত সাপোর্ট ফাইল যোগ করে, যেখানে প্রযোজ্য সেখানে UMD র‍্যাপার সহ।

publish

ব্লকলি টিম blockly এনপিএম প্যাকেজ প্রকাশের জন্য npm run publish ব্যবহার করে। এটি গুগল-অভ্যন্তরীণ অবকাঠামোর উপর নির্ভর করে তাই বহিরাগত ডেভেলপারদের জন্য কার্যকর নয়।

lint

npm run lint ESLint চালায়, সমস্যা খুঁজে বের করার জন্য ব্লকলি সোর্স কোডের স্ট্যাটিক বিশ্লেষণ করে।

test

npm test (অথবা npm run test ) package টাস্ক চালায় এবং তারপর বিভিন্ন স্বয়ংক্রিয় পরীক্ষা চালায় (ESLint চালানো সহ)। এটি ব্লকলি রিপোজিটরির বিরুদ্ধে পুল রিকোয়েস্ট হিসাবে জমা দেওয়া যেকোনো কোডে চালানো উচিত—এবং পাস করা উচিত।