আপনার IDX ওয়ার্কস্পেস কাস্টমাইজ করুন

প্রজেক্ট 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 আর্গুমেন্টের বিষয়বস্তু সংজ্ঞায়িত করে।

প্রকার: "stable-23.05", "stable-23.11", "unstable" এর মধ্যে একটি

ডিফল্ট: "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.<name>.command

কার্যকর করার আদেশ

প্রকার: স্ট্রিংয়ের তালিকা

ডিফল্ট: [ ]

idx.previews.previews.<name>.cwd

ওয়ার্কিং ডিরেক্টরি

প্রকার: স্ট্রিং

ডিফল্ট: ""

idx.previews.previews.<name>.env

এনভায়রনমেন্ট ভেরিয়েবল সেট করতে।

প্রকার: স্ট্রিং এর বৈশিষ্ট্য সেট

ডিফল্ট: { }

idx.previews.previews.<name>.manager

ম্যানেজার

প্রকার: "ওয়েব", "ফ্লটার" এর মধ্যে একটি

idx.workspace.onCreate

প্রথমবার ওয়ার্কস্পেস তৈরি এবং খোলা হলে চালানোর জন্য কমান্ড।

এটি উন্নয়ন পরিবেশ সেটআপ করতে দরকারী হতে পারে। উদাহরণস্বরূপ, এখানে আমরা চালানোর জন্য npm install নির্দিষ্ট করছি:

{pkgs, ...}: {
  idx.workspace.
    npm-install = "npm install";
  };
}

প্রকার: বৈশিষ্ট্য সেট এর (পথ বা স্ট্রিং)

ডিফল্ট: { }

idx.workspace.onStart

যখনই ওয়ার্কস্পেস খোলা হয় তখনই চালানোর কমান্ড।

এটি নির্মাণ পর্যবেক্ষক শুরু করতে দরকারী হতে পারে. উদাহরণস্বরূপ, এখানে আমরা চালানোর জন্য 2টি কমান্ড উল্লেখ করছি:

{pkgs, ...}: {
  idx.workspace.
    npm-watch-fe = "npm run watch:frontend";
    npm-watch-be = "npm run watch:backend";
  };
}

প্রকার: বৈশিষ্ট্য সেট এর (পথ বা স্ট্রিং)

ডিফল্ট: { }

services.docker.enable

রুটলেস ডকার সক্রিয় করতে হবে কিনা।

প্রকার: বুলিয়ান

ডিফল্ট: false

উদাহরণ: true

services.mysql.enable

MySQL সার্ভার সক্রিয় করা হবে কিনা।

সার্ভার একটি পাসওয়ার্ডহীন ব্যবহারকারী রুট দিয়ে শুরু করা হয়। তাই অতিরিক্ত ব্যবহারকারী তৈরি করতে এবং ডেটাবেস তৈরি করতে mysql -u root ব্যবহার করুন। .

প্রকার: বুলিয়ান

ডিফল্ট: false

উদাহরণ: true

services.mysql.package

ব্যবহার করার জন্য MySQL প্যাকেজ।

প্রকার: প্যাকেজ

ডিফল্ট: pkgs.mysql

উদাহরণ: pkgs.mysql80

services.postgres.enable

PostgreSQL সার্ভার সক্রিয় করা হবে কিনা।

প্রকার: বুলিয়ান

ডিফল্ট: false

উদাহরণ: true

services.postgres.package

PostgreSQL প্যাকেজ ব্যবহার করার জন্য।

প্রকার: প্যাকেজ

ডিফল্ট: pkgs.postgresql

উদাহরণ: pkgs.postgresql_15

services.postgres.extensions

পোস্টগ্রেস এক্সটেনশন ইনস্টল করার জন্য।

প্রকার: তালিকার ("বয়স" এর মধ্যে একটি", "apache_datasketches", "cstore_fdw", "hypopg", "jsonb_deep_sum", "periods", "pg_auto_failover", "pg_bigm", "pg_cron", "pg_ed25519", "pg_embedding" , "pg_hint_plan", "pg_hll", "pg_ivm", "pg_net", "pg_partman", "pg_rational", "pg_relusage", "pg_repack", "pg_safeupdate", "pg_similarity", "pg_topn", "pg_uuidv7", " pgaudit", "pgjwt", "pgroonga", "pgrouting", "pgsql-http", "pgtap", "pgvector", "plpgsql_check", "plr", "plv8", "postgis", "promscale_extension", repmgr", "rum", "smlar", "tds_fdw", "temporal_tables", "timescaledb", "timescaledb-apache", "timescaledb_toolkit", "tsearch_extras", "tsja", "wal2json")

ডিফল্ট: [ ]

উদাহরণ: [ "pgvector" "postgis" ];

services.pubsub.enable

Google পাব/সাব এমুলেটর সক্ষম করবেন কিনা।

এমুলেটর ব্যবহার করার বিষয়ে আরও ডকুমেন্টেশন এখানে পাওয়া যাবে: https://cloud.google.com/pubsub/docs/emulator#using_the_emulator।

প্রকার: বুলিয়ান

ডিফল্ট: false

উদাহরণ: true

services.pubsub.port

পোর্ট কনফিগার করে Pub/Sub শুনবে।

প্রকার: 16 বিট স্বাক্ষরবিহীন পূর্ণসংখ্যা; 0 এবং 65535 এর মধ্যে (উভয়ই অন্তর্ভুক্ত)

ডিফল্ট: 8085

services.pubsub.project-id

পাব/সাব এমুলেটর চালানোর জন্য ব্যবহার করার জন্য প্রকল্প আইডি। এই প্রকল্পটি শুধুমাত্র পরীক্ষার জন্য, এটির অস্তিত্ব থাকতে হবে না এবং শুধুমাত্র স্থানীয়ভাবে ব্যবহার করা হয়।

প্রকার: প্যাটার্নের সাথে মিলে যাওয়া স্ট্রিং [az][a-z0-9-]{5,29}

ডিফল্ট: "idx-pubsub-emulator"

services.redis.enable

Redis সার্ভার সক্রিয় করতে হবে কিনা।

প্রকার: বুলিয়ান

ডিফল্ট: false

উদাহরণ: true

services.redis.port

Redis যে পোর্ট শুনবে তা কনফিগার করে।

ডিফল্টভাবে tcp অক্ষম করা থাকে এবং redis শুধুমাত্র /tmp/redis/redis.sock এ শোনে।

প্রকার: 16 বিট স্বাক্ষরবিহীন পূর্ণসংখ্যা; 0 এবং 65535 এর মধ্যে (উভয়ই অন্তর্ভুক্ত)

ডিফল্ট: 0

services.spanner.enable

Google ক্লাউড স্প্যানার এমুলেটর সক্ষম করবেন কিনা।

প্রকার: বুলিয়ান

ডিফল্ট: false

উদাহরণ: true

services.spanner.fault-injection

ট্রানজেশনে র্যান্ডম ফল্ট ইনজেকশন সক্রিয় করা হবে কিনা।

প্রকার: বুলিয়ান

ডিফল্ট: false

উদাহরণ: true

services.spanner.grpc-পোর্ট

TCP পোর্ট যেখানে এমুলেটর আবদ্ধ করা উচিত।

প্রকার: 16 বিট স্বাক্ষরবিহীন পূর্ণসংখ্যা; 0 এবং 65535 এর মধ্যে (উভয়ই অন্তর্ভুক্ত)

ডিফল্ট: 9010

services.spanner.rest-port

যে পোর্টে REST অনুরোধগুলি পরিবেশিত হয়৷

প্রকার: 16 বিট স্বাক্ষরবিহীন পূর্ণসংখ্যা; 0 এবং 65535 এর মধ্যে (উভয়ই অন্তর্ভুক্ত)

ডিফল্ট: 9020