প্রজেক্ট IDX এর লক্ষ্য হল যতটা সম্ভব ডেভেলপারদের জন্য উপযোগী হওয়া। IDX এটি সম্পন্ন করার একটি উপায় হল ডেভেলপারদের তাদের কর্মক্ষেত্রে যেকোন প্রজেক্টের জন্য সঠিক টুল ইনস্টল করার স্বাধীনতা এবং নমনীয়তা দেওয়া এবং সেটিংস কাস্টমাইজ করা যাতে তাদের ওয়ার্কস্পেস তাদের জন্য কাজ করে।
নিক্স + আইডিএক্স
IDX প্রতিটি কর্মক্ষেত্রের জন্য পরিবেশ কনফিগারেশন সংজ্ঞায়িত করতে Nix ব্যবহার করে। নিক্স একটি সম্পূর্ণরূপে কার্যকরী প্যাকেজ ম্যানেজার এবং প্রতিটি নির্ভরতার জন্য অনন্য শনাক্তকারী বরাদ্দ করে, যার শেষ পর্যন্ত অর্থ আপনার পরিবেশে একই নির্ভরতার একাধিক সংস্করণ থাকতে পারে, নির্বিঘ্নে। এটি পুনরুত্পাদনযোগ্য এবং ঘোষণামূলকও। IDX এর প্রেক্ষাপটে, এর মানে হল একই পরিবেশ কনফিগারেশন লোড করতে আপনি আপনার নিক্স কনফিগারেশন ফাইলটি ওয়ার্কস্পেস জুড়ে শেয়ার করতে পারেন।
IDX প্রিভিউ এনভায়রনমেন্ট এবং ওয়ার্কস্পেস প্যাকেজ কনফিগারেশন সরাসরি কোড রিপোজিটরি থেকে .idx/dev.nix
ফাইলের সাথে সংজ্ঞায়িত করে। এই ফাইলটিতে আপনি যে বৈশিষ্ট্যগুলি এবং প্যাকেজ লাইব্রেরিগুলিকে সংজ্ঞায়িত করতে পারেন তা নিক্স অ্যাট্রিবিউট সেট সিনট্যাক্স অনুসরণ করুন৷
নিম্নলিখিত উদাহরণটি পূর্বরূপ সক্ষম করে একটি মৌলিক পরিবেশ কনফিগারেশন দেখায়:
{ pkgs, ... }: {
# Which nixpkgs channel to use.
channel = "stable-23.11"; # or "unstable"
# Use https://search.nixos.org/packages to find packages
packages = [
pkgs.nodejs_18
];
# Sets environment variables in the workspace
env = {
SOME_ENV_VAR = "hello";
};
# Search for the extensions you want on https://open-vsx.org/ and use "publisher.id"
idx.extensions = [
"angular.ng-template"
];
# Enable previews and customize configuration
idx.previews = {
enable = true;
previews = {
web = {
command = [
"npm"
"run"
"start"
"--"
"--port"
"$PORT"
"--host"
"0.0.0.0"
"--disable-host-check"
];
manager = "web";
};
};
};
}
নিক্স বৈশিষ্ট্য এবং প্যাকেজ লাইব্রেরি
প্যাকেজ
পরিবেশে ইনস্টল করার জন্য প্যাকেজ।
ইনস্টল করার জন্য প্যাকেজ নির্বাচন করতে আপনি pkgs
আর্গুমেন্ট ব্যবহার করতে পারেন, যেমন pkgs.python3
। উল্লেখ্য যে pkgs
এর বিষয়বস্তু নির্বাচিত channel
চ্যানেল বিকল্পের উপর নির্ভর করে।
উদাহরণ:
{pkgs, ...}: {
channel = "stable-23.11";
packages = [pkgs.vim];
}
আপনি এখানে উপলব্ধ প্যাকেজগুলি অনুসন্ধান করতে পারেন: stable-23.11 বা অস্থির ।
প্রকার: প্যাকেজের তালিকা
ডিফল্ট: [ ]
চ্যানেল
nixpkgs চ্যানেল ব্যবহার করতে হবে।
এই চ্যানেলটি pkgs
আর্গুমেন্টের বিষয়বস্তু সংজ্ঞায়িত করে।
প্রকার: "স্থিতিশীল-23.05", "স্থিতিশীল-23.11", "অস্থির" এর মধ্যে একটি
ডিফল্ট: "stable-23.11"
env
এনভায়রনমেন্ট ভেরিয়েবল যা ডেভেলপার এনভায়রনমেন্টের ভিতরে সেট করা আছে।
এগুলি আপনার সমস্ত শেল এবং পূর্বরূপ সার্ভারে প্রচারিত হয়। এনভায়রনমেন্ট ভেরিয়েবল বিশেষভাবে উপযোগী হতে পারে যদি আপনার অ্যাপ্লিকেশনের জন্য ভেরিয়েবলের একটি নির্দিষ্ট সেটের প্রয়োজন হয়।
উদাহরণ:
{pkgs, ...}: {
env = {
HELLO = "world";
};
}
প্রকার: যেকোনো কিছুর অ্যাট্রিবিউট সেট
ডিফল্ট: { }
idx.extensions
কোড এক্সটেনশনগুলি আপনি আপনার IDX ওয়ার্কস্পেসে ইনস্টল করতে চান।
এটি সম্পূর্ণরূপে যোগ্য এক্সটেনশন আইডিগুলির একটি তালিকা, যেমন ${publisherId}.${extensionId}
।
আপনি ওপেন VSX রেজিস্ট্রিতে উপলব্ধ এক্সটেনশনগুলির একটি তালিকা খুঁজে পেতে পারেন এবং ${publisherId}.${extensionId}
দ্বারা আপনার dev.nix
ফাইলে প্রবেশ করতে পারেন।
প্রকার: তালিকা (অ-খালি স্ট্রিং বা পথ)
ডিফল্ট: [ ]
idx.previews.enable
IDX পূর্বরূপ সক্রিয় করতে এটি true
সেট করুন।
এই বৈশিষ্ট্যটি আপনার অ্যাপ্লিকেশানগুলিকে বিকাশ করার সাথে সাথে স্বয়ংক্রিয়ভাবে চালানো এবং পুনরায় লোড করার একটি উপায় প্রদান করে৷
প্রকার: বুলিয়ান
ডিফল্ট: true
উদাহরণ: true
idx.previews.previews
পূর্বরূপ কনফিগারেশন.
আপনার বিকাশকারী পরিবেশে আইডিএক্স এক্সিকিউট করা কমান্ডগুলিকে সংজ্ঞায়িত করুন।
উদাহরণ:
{pkgs, ...}: {
idx.previews = {
enable = true;
previews = {
web = {
command = ["yes"];
cwd = "subfolder";
manager = "web";
env = {
HELLO = "world";
};
};
};
};
}
প্রকার: (সাবমডিউল) এর বৈশিষ্ট্য সেট
ডিফল্ট: { }
idx.previews.previews.*.command
কার্যকর করার আদেশ
প্রকার: স্ট্রিংয়ের তালিকা
ডিফল্ট: [ ]
idx.previews.previews.*.cwd
ওয়ার্কিং ডিরেক্টরি
প্রকার: স্ট্রিং
ডিফল্ট: ""
idx.previews.previews.*.env
এনভায়রনমেন্ট ভেরিয়েবল সেট করতে।
প্রকার: স্ট্রিং এর বৈশিষ্ট্য সেট
ডিফল্ট: { }
idx.previews.previews.*.manager
ম্যানেজার
প্রকার: web
একটি, flutter
idx.workspace.onCreate
প্রথমবার ওয়ার্কস্পেস তৈরি এবং খোলা হলে চালানোর জন্য কমান্ড।
এটি উন্নয়ন পরিবেশ সেটআপ করতে দরকারী হতে পারে। উদাহরণস্বরূপ, এখানে আমরা চালানোর জন্য npm install
নির্দিষ্ট করছি:
{pkgs, ...}: {
idx.workspace.onCreate = {
npm-install = "npm install";
};
}
প্রকার: বৈশিষ্ট্য সেট এর (পথ বা স্ট্রিং)
ডিফল্ট: { }
idx.workspace.onStart
যখনই ওয়ার্কস্পেস খোলা হয় তখনই চালানোর কমান্ড।
এটি নির্মাণ পর্যবেক্ষক শুরু করতে দরকারী হতে পারে. উদাহরণস্বরূপ, এখানে আমরা চালানোর জন্য 2টি কমান্ড উল্লেখ করছি:
{pkgs, ...}: {
idx.workspace.onStart = {
npm-watch-fe = "npm run watch:frontend";
npm-watch-be = "npm run watch:backend";
};
}
প্রকার: বৈশিষ্ট্য সেট এর (পথ বা স্ট্রিং)
ডিফল্ট: { }
services.docker.enable
রুটলেস ডকার সক্রিয় করতে হবে কিনা।
প্রকার: বুলিয়ান
ডিফল্ট: false
উদাহরণ: true