اینجا قصد ندارم در مورد اینکه کامپوزر چی هست و چیکار میکنه توضیح بدم یعنی فرض رو بر این میگیرم که میدونید چیه و چیکار میکنه و فقط میخوام علامت ها و نشانه هایی که در این فایل استفاده میشه، توضیح بدم.
Composer is a tool for dependency management in PHP. It allows you to declare the libraries your project depends on and it will manage (install/update) them for you.
علامت ها یا نشانه هایی که معمولا در فایل composer.json می بینیم:
~ tilde
^ caret
* wildcard
مثال از فایل composer.json فریم ورک لاراول
"require": { "php": "^7.1.3", "fideloper/proxy": "^4.0", "laravel/framework": "5.8.*", "laravel/tinker": "^1.0" }
به جز نماد هایی که در بالا اشاره شد می توان از علامت های منطقی مثل "," به عنوان AND و علامت "|" به عنوان OR هم استفاده کرد
حتی برای تعیین نسخه میتوان از علامت های بزرگتر کوچکتر و مساوی هم استفاده کرد < = >
اگر بخوایم توضیح مختصر مفید بدیم تکلیف علامت ستاره * که مشخصه هر جا که ستاره باشه معنیش اینه که به جای اون میتونه اعداد از 0 تا 9 جایگزین بشه
// * | wildcard
"vendor/package": "1.3.*", // >=1.3.0 <1.4.0 در این مثال نسخه میتواند از 1.3.0 شروع شده و تا 1.3.9 ادامه داشته باشد اگر دقت کنید برای 1.4.0 از علامت کوچکتر استفاده شده یعنی خود 1.4.0 نمیتونه باشه
علامت های کوچکتر و بزرگتر و مساوی هم که خیلی ساده هستند:
// >, <, >=, <= | specify upper / lower bounds
"vendor/package": ">=1.3.2", // anything above or equal to 1.3.2
"vendor/package": "<1.3.2", // anything below 1.3.2
علامت ~ که tilde گفته میشه اگر بخواهیم خیلی ساده در مورد کاربردش توضیح بدیم اینه که اجازه میده زمان آپدیت رقم آخری که در ورژن پکیج نوشتیم بالا بره:
// ~ | allows last digit specified to go up
"vendor/package": "~1.3.2", // >=1.3.2 <1.4.0
"vendor/package": "~1.3", // >=1.3.0 <2.0.0 به این مثال ها نیز توجه کنید ~3.1.2 means >= 3.1.2,<3.2.0,
~3.1 means >= 3.1.0,<4.0.0,
~0.3 means >= 0.3.0,<1.0.0,
~3 means >= 3.0.0,<4.0.0.
علامت ^ هم مثل علامت ~ باعث بالا رفتم و اپدیت نسخه میشه ولی تا زمانی که نسخه major یا اصلی تغییر نکنه
اگر بخوام به صورت کوتاه در مورد نسخه ها توضیح بدم ما معمولا 4 رقم که با . جدا شدن برای ورژن در نظر میگیریم مثل 1.9.2.3
عدد 1 در اینجا همان major هست
عدد 9 همان minor هست
عدد 2 نسخه رفع باگ به حساب میاد
عدد 3 هم نسخه بیلد build
در این نوشته نمیخوام زیاد در مورد کاربرد و تغییرات این شماره ها توضیح بدم فقط خواستیم یک ذهنیتی از این موضوع داشته باشید تا کاربرد علامت ^ caret را بهتر درک کنید
// ^ | doesn't allow breaking changes (major version fixed - following semver)
"vendor/package": "^1.3.2", // >=1.3.2 <2.0.0
"vendor/package": "^0.3.2", // >=0.3.2 <0.4.0 // except if major version is 0 و مثال های دیگر ^3.1.2 means >= 3.1.2,<4.0.0,
^3.1 means >= 3.1.0,<4.0.0 (just like ~3.1),
^0.3 means >= 0.2.0,<0.4.0,
^3 means >= 3.0.0,<4.0.0 (As it is like ~3).