কম্পোজারে জেসসনে প্রয়োজনীয় ডিভ বিভাগগুলির মধ্যে পার্থক্য কী?


103

আমি সুরকার ব্যবহার শুরু করছি, আমি এটি সম্পর্কে খুব কম জানি এবং ওয়েব অ্যাপ্লিকেশন বিকাশের সাথে একটু অভিজ্ঞতা অর্জন করি।

আমি কেবল নেটটস + টিউটোরিয়াল দিয়ে চলেছি , সুতরাং সুরকার সম্পর্কে আমার কাছে প্রাথমিক প্রশ্ন আছে।

{
  "require": {
    "laravel/framework": "4.0.*",
    "way/generators": "dev-master",
    "twitter/bootstrap": "dev-master",
    "conarwelsh/mustache-l4": "dev-master"
  },
  "require-dev": {
    "phpunit/phpunit": "3.7.*",
    "mockery/mockery": "0.7.*"
  },
  "autoload": {
    "classmap": [
      "app/commands",
      "app/controllers",
      "app/models",
      "app/database/migrations",
      "app/database/seeds",
      "app/tests/TestCase.php"
    ]
  },
  "scripts": {
    "post-update-cmd": "php artisan optimize"
  },
  "minimum-stability": "dev"
}
  1. যে "require-dev"অংশে প্রদর্শিত হবে, কেবল কি ডাউনলোড এবং ইনস্টল করা হবে composer install --dev?
  2. আমি সুরকারের কিছু ডকুমেন্টেশন পড়েছি তবে এখনও বুঝতে পারছি না যে আমাদের "require-dev"অংশ হওয়ার কারণ কী ? আমরা প্যাকেজটির নির্দিষ্ট সংস্করণটি সর্বদা সর্বশেষতম স্থিতিশীল সংস্করণটি পেতে চাইছি বলেই কি এটি হয় ?

সংশ্লিষ্ট: stackoverflow.com/q/16679589/82216
sampablokuper

উত্তর:


122

বিভিন্ন পরিবেশ

সাধারণত, সফ্টওয়্যারটি বিভিন্ন পরিবেশে চলবে:

  • development
  • testing
  • staging
  • production

বিভিন্ন পরিবেশে বিভিন্ন নির্ভরতা

requireবিভাগে ঘোষিত composer.jsonনির্ভরতাগুলি হ'ল সাধারণত নির্ভরতা যা কোনও অ্যাপ্লিকেশন বা কোনও প্যাকেজ চালানোর জন্য প্রয়োজনীয়

  • staging
  • production

পরিবেশ, যেখানে require-devবিভাগে ঘোষিত নির্ভরতাগুলি সাধারণত নির্ভরতা যা প্রয়োজনীয় হয়

  • developing
  • testing

পরিবেশ।

উদাহরণস্বরূপ, অ্যাপ্লিকেশন চালানোর জন্য ব্যবহৃত প্যাকেজগুলির পাশাপাশি, সফ্টওয়্যারটি বিকাশের জন্য প্যাকেজগুলির প্রয়োজন হতে পারে যেমন:

  • friendsofphp/php-cs-fixer (কোডিং শৈলী সংক্রান্ত সমস্যাগুলি সনাক্ত এবং ঠিক করতে)
  • squizlabs/php_codesniffer (কোডিং শৈলী সংক্রান্ত সমস্যাগুলি সনাক্ত এবং ঠিক করতে)
  • phpunit/phpunit (পরীক্ষার সাহায্যে বিকাশ চালাতে)
  • ইত্যাদি

মোতায়েন

এখন, পরিবেশ developmentএবং testingপরিবেশে, আপনি সাধারণত চালাবেন

$ composer install

উভয় productionএবং developmentনির্ভরতা ইনস্টল করতে ।

তবে, পরিবেশ stagingএবং productionপরিবেশে, আপনি কেবল অ্যাপ্লিকেশনটি চালনার জন্য প্রয়োজনীয় নির্ভরতাগুলি ইনস্টল করতে চান এবং স্থাপনার প্রক্রিয়াটির অংশ হিসাবে আপনি সাধারণত চালাবেন

$ composer install --no-dev

শুধুমাত্র productionনির্ভরতা ইনস্টল করতে ।

শব্দার্থবিজ্ঞান

অন্য কথায়, বিভাগগুলি

  • require
  • require-dev

composerআপনি রান করার সময় কোন প্যাকেজ ইনস্টল করা উচিত তা নির্দেশ করুন

$ composer install

বা

$ composer install --no-dev

এটাই সব।

দ্রষ্টব্য আপনার অ্যাপ্লিকেশন বা প্যাকেজ নির্ভর প্যাকেজগুলির বিকাশের নির্ভরতা কখনই ইনস্টল হবে না

রেফারেন্সের জন্য, দেখুন:


আমি কি সঠিকভাবে বুঝতে পারি, vendorএফটিপি-র মাধ্যমে পুরো ফোল্ডারটি আপলোড করে যদি আমি "স্থাপন" করি তবে তা মোটেই কিছু যায় আসে না ?
পাইলেট

4
@ পাইলেট আপনি পারেন তবে এটি দিয়ে ইনস্টল করতে ভুলবেন না —no-dev। এছাড়াও, এফটিপি সম্ভবত বেশ ধীর হবে।
লোকালহেইঞ্জ

আপনার অ্যাপ্লিকেশনটি তৈরি করতে হবে এমন নির্ভরতা সম্পর্কে কীভাবে? সুতরাং, একটি বিল্ড এবং পাইপলাইন মোতায়েনের ক্ষেত্রে, আমি এগুলি স্থাপনের পরে ইনস্টল করতে চাইছি এবং স্থাপনার আগে আবার এগুলি সরাতে চাই। যেমন স্বল্পকরণের জন্য, বা কম / SASS কে CSS তে পরিণত করা। আপনি এটা কিভাবে করবেন?
রিচার্ড কেফার

4
@ রিচার্ডকিফার কিছু লোক ফার.আইও ব্যবহার করেন , অন্যরা পিএইচআরএগুলি পরীক্ষা করে, আবার কেউ কেউ ডকার চিত্র ব্যবহার করেন এবং কিছু লোক পৃথক পৃথক ব্যবহার করেন composer.json- উদাহরণস্বরূপ github.com/FendersOfPHP/PHP-CS-Fixer/tree/2.16/dev-tools
লোকালহেইনজ

তাহলে আপনি কি কেবল কমপোজার জেসনকে প্রতিশ্রুতিবদ্ধ করবেন এবং আপনার রেপোতে লক করবেন? সবকিছু প্রতিশ্রুতিবদ্ধ করা কি আরও অর্থবোধ করে না এবং গিট ব্যবহার করে কেবল উত্পাদন থেকে মাস্টার শাখাটি মোতায়েন করার জন্য?
mbomb007

62
  1. সুরকারের ম্যানুয়াল অনুসারে :

    প্রয়োজনীয়-দেব (কেবলমাত্র মূল)

    এই প্যাকেজটি বিকাশের জন্য প্রয়োজনীয় প্যাকেজগুলির তালিকা তৈরি করে, বা পরীক্ষা চালানো ইত্যাদি the উভয়ই installবা বিকল্পটি updateসমর্থন করে --no-devযা দেব নির্ভরতা ইনস্টল হওয়া থেকে বাধা দেয়।

    সুতরাং চলমান composer installবিকাশও নির্ভরতা ডাউনলোড করবে।

  2. কারণটি আসলে বেশ সহজ। নির্দিষ্ট গ্রন্থাগারে অবদানের সময় আপনি টেস্ট স্যুট বা অন্যান্য বিকাশকারী সরঞ্জামগুলি (যেমন সিমফনি) চালাতে চাইতে পারেন। তবে আপনি যদি এই লাইব্রেরিটি কোনও প্রকল্পে ইনস্টল করেন তবে সেই উন্নয়ন নির্ভরতাগুলির প্রয়োজন হতে পারে না: প্রতিটি প্রকল্পের জন্য কোনও পরীক্ষক রানার প্রয়োজন হয় না।


19

সুরকার সাইট থেকে (এটি যথেষ্ট পরিষ্কার)

প্রয়োজন #

এই প্যাকেজটির জন্য প্রয়োজনীয় প্যাকেজগুলি তালিকাভুক্ত করে। প্যাকেজটি ইনস্টল করা হবে না যতক্ষণ না এই প্রয়োজনীয়তাগুলি পূরণ করা যায়।

প্রয়োজনীয়-দেব (কেবলমাত্র শিকড়) #

এই প্যাকেজটি বিকাশের জন্য প্রয়োজনীয় প্যাকেজগুলির তালিকা তৈরি করে, বা পরীক্ষা চালানো ইত্যাদি the উভয়ই ইনস্টল বা আপডেট --no-dev বিকল্প সমর্থন করে যা ডেভ নির্ভরতাগুলি ইনস্টল হতে বাধা দেয়।

সুরকারে প্রয়োজনীয়-দেব ব্যবহার করে আপনি প্রকল্পটির বিকাশ / পরীক্ষার জন্য প্রয়োজনীয় নির্ভরতাগুলি ঘোষণা করতে পারেন তবে উত্পাদন প্রয়োজন নেই। আপনি যখন আপনার প্রোডাকশন সার্ভারে প্রকল্পটি আপলোড করবেন (গিট ব্যবহার করে) require-devঅংশটিকে উপেক্ষা করা হবে।

এছাড়াও লেখক পোস্ট করা এই উত্তর এবং এই পোস্টটিও পরীক্ষা করে দেখুন ।


4
দয়া করে আমাকে ব্যাখ্যা করুন যে "উপায় / জেনারেটর": "ডিভ-মাস্টার" "প্রয়োজনীয়" বিভাগে কেন ?, আমার আর প্রযোজনায় এটির প্রয়োজন হবে না।
শিল্পী

4
এটি একটি সম্পূর্ণ অনুমান, তবে আমি কেবলমাত্র এটিই ভাবতে পারি কারণ উপায় / জেনারেটর পরিষেবা সরবরাহকারী হিসাবে যুক্ত হয়, যদি এটি উত্পাদন পরিবেশের মধ্যে হারিয়ে যায় তবে লারাভেল কাজ করবে না।
ড্যানিয়েল হল্যান্ড

4
অংশটি মূল প্যাকেজের ডিভাইসগুলি ডিফল্টরূপে ইনস্টল করা হয় স্পষ্টভাবে উল্লেখ করেছে যে প্রয়োজনীয়তা-ডিভ থেকে ডিপ্রেশনগুলি ইনস্টল করা আছে এমনকি প্রোডাকশন সার্ভারেও।
জেমমু

4
ধারণাটি হ'ল আপনি উত্পাদনে কোনও - নন পতাকা ব্যবহার করবেন।
জন প্যানকোস্ট

2

প্রয়োজনীয় বিভাগটি এই বিভাগে প্যাকেজগুলি / নির্ভরতা রয়েছে যা উত্পাদন পরিবেশে ইনস্টল করা / প্রয়োজনীয় হওয়া ভাল প্রার্থীরা।

প্রয়োজনীয়-দেব বিভাগ: এই বিভাগে প্যাকেজগুলি / নির্ভরতা রয়েছে যা বিকাশকারী তার কোডটি পরীক্ষা করতে (বা তার স্থানীয় মেশিনে পরীক্ষা করার জন্য ব্যবহার করতে পারেন এবং তিনি চান না যে এই প্যাকেজগুলি উত্পাদন পরিবেশে ইনস্টল করা হোক)।


1

সাধারণ নিয়ম হ'ল আপনি কেবল ডেভলপমেন্ট (ডিভ) পরিবেশে প্রয়োজনীয় ডিভ বিভাগ থেকে প্যাকেজগুলি চান , উদাহরণস্বরূপ স্থানীয় পরিবেশ।

প্যাকেজ প্রয়োজন-দেব অধ্যায় প্যাকেজ যা সাহায্যের আপনি অ্যাপ ডিবাগ, চালানো পরীক্ষার ইত্যাদি হয়

উপস্থাপনকারী এবং উৎপাদন পরিবেশ আপনি সম্ভবত একমাত্র প্যাকেজ চান প্রয়োজন অধ্যায়।

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

তাত্ত্বিকভাবে আপনি সমস্ত প্যাকেজগুলিকে প্রয়োজনীয় বিভাগে রাখতে পারেন এবং কিছুই ঘটবে না, তবে নিম্নলিখিত পরিবেশনের কারণে আপনি উত্পাদন পরিবেশে প্যাকেজ বিকাশ করতে চান না:

  1. গতি
  2. কিছু ডিবাগিং তথ্য প্রকাশের সম্ভাবনা
  3. ইত্যাদি

প্রয়োজনীয়-দেবের জন্য কয়েকটি ভাল প্রার্থী হলেন:

"filp/whoops": "^2.0",
"fzaninotto/faker": "^1.4",
"mockery/mockery": "^1.0",
"nunomaduro/collision": "^2.0",
"phpunit/phpunit": "^7.0"

উপরের প্যাকেজগুলি কী করছে তা আপনি দেখতে পাচ্ছেন এবং কেন উত্পাদনে আপনার প্রয়োজন নেই তা আপনি দেখতে পাবেন।

এখানে আরও দেখুন: https://getcomposer.org/doc/04-schema.md


0

প্রয়োজনীয়-দেব (শুধুমাত্র-রুট) নোট করুন !

যার অর্থ হ'ল প্রয়োজনীয়-দেব বিভাগটি কেবল তখনই বৈধ যখন আপনার প্যাকেজটি পুরো প্রকল্পের মূল। যেমন আপনি যদি composer updateআপনার প্যাকেজ ফোল্ডারটি থেকে চালনা করেন ।

যদি আপনি কোনও প্রধান প্রকল্পের জন্য একটি প্লাগইন বিকাশ করেন, যার নিজস্ব নিজস্ব রচয়িতা জেসন রয়েছে, তবে আপনার প্রয়োজনীয়-দেব বিভাগটি সম্পূর্ণ উপেক্ষা করা হবে! আপনার যদি আপনার বিকাশ নির্ভরতা প্রয়োজন হয় তবে আপনাকে মূল প্রকল্পে আপনার প্রয়োজনীয়-দেবকে রচনা করতে হবে composer.json এ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.