Skip to content

হুক

ডিফল্টভাবে, Volta Node, npm এবং Yarn পাবলিক সোর্স এবং রেজিস্ট্রি (https://nodejs.org, https://yarnpkg.com, https://www.npmjs.com) থেকে ফেচ করে। তবে, আপনার পরিবেশের উপর নির্ভর করে, এটি প্রয়োজন হতে পারে Volta-কে একটি ভিন্ন সোর্স (যেমন অভ্যন্তরীণ টুলের জন্য npm Enterprise) থেকে ডাউনলোড করতে বলতে। এটি সামঞ্জস্য করতে, Volta ডাউনলোড প্রক্রিয়ায় হুক প্রদান করে।

হুক কোথায় নির্দিষ্ট করতে হয়

হুক সবসময় hooks.json নামক একটি ফাইলে সেট করা হয়। এই ফাইল দুটি জায়গার একটিতে থাকতে পারে, আপনি সেই হুকগুলোর জন্য কোন স্কোপ চান তার উপর নির্ভর করে:

  • Volta ডিরেক্টরিতে (~/.volta/hooks.json Linux/MacOS-এ, %LOCALAPPDATA%\Volta\hooks.json Windows-এ) নির্দিষ্ট করা হুক সম্পূর্ণ সিস্টেম জুড়ে প্রযোজ্য হবে।
  • একটি প্রজেক্টের .volta সাবডিরেক্টরিতে (<PROJECT ROOT>/.volta/hooks.json) নির্দিষ্ট করা হুক শুধু সেই প্রজেক্টের মধ্যে প্রযোজ্য হবে। এখানে <PROJECT ROOT> সেই প্রজেক্টের package.json-এর অবস্থান হিসেবে সংজ্ঞায়িত।

হুক ফাইল ফরম্যাট

hooks.json-এর কন্টেন্ট একটি অবজেক্ট হতে হবে, প্রতিটি টুল টাইপের (বর্তমানে node, npm এবং yarn) জন্য ঐচ্ছিক কী সহ। প্রতিটি টুলে 3টি অ্যাকশন আছে যেগুলোতে প্রতিটি একটি হুক প্রয়োগ করা যেতে পারে:

  • index সেই URL-কে উপস্থাপন করে যেটি সেই টুলের জন্য ডাউনলোডযোগ্য সংস্করণের তালিকা নির্ধারণ করতে ব্যবহৃত হয়। সেই URL অ্যাক্সেস করার সময় প্রতিক্রিয়া নির্বাচিত টুলের জন্য পাবলিক ইনডেক্সের ফরম্যাটের সাথে মিলতে হবে।
  • latest সেই URL-কে উপস্থাপন করে যেটি সেই টুলের সর্বশেষ সংস্করণ নির্ধারণ করতে ব্যবহৃত হয়। node-এর জন্য, প্রতিক্রিয়া index-এর মতো একই ফরম্যাটে হতে হবে, নিশ্চিত করে যে সর্বশেষ সংস্করণ তালিকার প্রথম উপাদান। yarn-এর জন্য, প্রতিক্রিয়া কাঁচা সংস্করণ স্ট্রিং হতে হবে এবং আর কিছু নয়।
  • distro সেই URL-কে উপস্থাপন করে যেটি টুল বাইনারি ডাউনলোড করতে ব্যবহৃত হয়।

শেষে, প্রতিটি অ্যাকশনে 3টি সম্ভাব্য হুক আছে (নিচে বর্ণিত) যেগুলো ব্যবহার করা যেতে পারে (যেগুলোর মধ্যে যেকোনো একটি শুধু প্রতিটি অ্যাকশনের জন্য যেকোনো সময়ে নির্দিষ্ট করা যেতে পারে)। একটি উদাহরণ hooks.json ফাইল হলো:

json
{
    "node": {
        "index": {
            "bin": "/usr/local/node-lookup"
        },
        "latest": {
            "prefix": "http://example.com/node/"
        },
        "distro": {
            "template": "http://example.com/{{os}}/{{arch}}/node-{{version}}.tar.gz"
        }
    },
    "npm": {
        "index": {
            "prefix": "http://example.com/npm/"
        },
        "latest": {
            "bin": "~/npm-latest"
        },
        "distro": {
            "template": "http://example.com/npm/npm-{{version}}.tgz"
        }
    },
    "yarn": {
        "index": {
            "template": "http://example.com/yarn/{{os}}/{{arch}}/yarn-{{version}}.tgz"
        },
        "latest": {
            "prefix": "http://example.com/yarnpkg/"
        },
        "distro": {
            "bin": "~/yarn-distro"
        }
    }
}

হুক টাইপ

prefix হুক

prefix হুক একটি সরল URL রিপ্লেসমেন্ট। URL নির্দিষ্ট prefix ব্যবহার করে তৈরি করা হবে, সেই অ্যাকশনের জন্য পাবলিক ফাইল নাম অনুসরণ করে। উদাহরণস্বরূপ, উপরের hooks.json ব্যবহার করে, আমাদের সর্বশেষ yarn সংস্করণ নির্ধারণের জন্য একটি prefix হুক নির্দিষ্ট করা আছে। ডিফল্টভাবে, Volta https://yarnpkg.com/latest-version-এ একটি অনুরোধ করে সর্বশেষ সংস্করণ ফেচ করবে। হুক ব্যবহার করে, Volta পরিবর্তে http://example.com/yarnpkg/latest-version অ্যাক্সেস করার চেষ্টা করবে, http://example.com/yarnpkg/-এর নির্দিষ্ট prefix-এ latest-version যোগ করে।

template হুক

template হুক আপনাকে একটি URL-এর টেমপ্লেট নির্দিষ্ট করতে দেয়, ওয়াইল্ডকার্ড সহ যেগুলো রিপ্লেস করা হবে। উপলব্ধ ওয়াইল্ডকার্ড হলো:

  • darwin, linux বা win দ্বারা রিপ্লেস করা হবে, অপারেটিং সিস্টেমের উপর নির্ভর করে।
  • x86 বা x64 দ্বারা রিপ্লেস করা হবে, সিস্টেমের আর্কিটেকচারের উপর নির্ভর করে।
  • (শুধু distro অ্যাকশনের জন্য উপলব্ধ) নির্দিষ্ট টুল সংস্করণ দ্বারা রিপ্লেস করা হবে যেটি Volta ডাউনলোড করার চেষ্টা করছে।
  • ফাইল নাম দ্বারা রিপ্লেস করা হবে যেটি Volta পাবলিক রেজিস্ট্রি থেকে ডাউনলোড করবে।
  • (শুধু distro অ্যাকশনের জন্য উপলব্ধ) ফাইল এক্সটেনশন দ্বারা রিপ্লেস করা হবে যেটি Volta ডাউনলোড করতে প্রত্যাশা করে।

::: টিপ filename এবং ext রিপ্লেসমেন্ট শুধু Volta 0.8.4 বা পরে উপলব্ধ :::

উদাহরণ থেকে node.distro হুক ব্যবহার করে, 64-bit Linux সিস্টেমে node@10.15.3 ফেচ করার সময়, Volta এখান থেকে টারবল ডাউনলোড করার চেষ্টা করবে: http://example.com/linux/x64/node-10.15.3.tar.gz

bin হুক

bin হুক একটি সর্বউদ্দেশ্য হুক যেটি URL নির্ধারণ করতে একটি বাহ্যিক স্ক্রিপ্টে কল করবে। মান একটি এক্সিকিউটেবল স্ক্রিপ্টের পথ যেটি কল করা হবে, এবং URL সেই স্ক্রিপ্টের stdout থেকে পড়া হবে। স্ক্রিপ্টের stderr ব্যবহারকারীকে দেখানো হবে, তাই এটি প্রগ্রেস বার বা অপেক্ষমান স্পিনার দেখাতে ব্যবহার করা যেতে পারে যদি প্রয়োজন হয়। যদি স্ক্রিপ্টের পথ আপেক্ষিক হয় তবে এটি যে hooks.json ফাইলে নির্দিষ্ট করা হয়েছে তার সাপেক্ষে রেজলভ করা হবে। এই কনটেক্সটে, একটি আপেক্ষিক পথের অর্থ হলো পথ Linux/MacOS-এ ./ বা ../ দিয়ে শুরু হয় এবং Windows-এ .\ বা ..\ দিয়ে শুরু হয়। শেষে, distro অ্যাকশন হুকগুলোর জন্য, টুলের অনুরোধ করা সংস্করণ সেই স্ক্রিপ্টে প্রথম আর্গুমেন্ট হিসেবে পাস করা হবে।

উদাহরণ hooks.json থেকে yarn.distro হুক ব্যবহার করে, yarn@1.13.0 ফেচ করার সময়, Volta ~/yarn-distro "1.13.0" কল করবে এবং সেই হুক দ্বারা ফেরত দেওয়া URL থেকে টারবল ডাউনলোড করার চেষ্টা করবে।

Released under the BSD 2-Clause License.