از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
Caret vs Tilde در package.json فایل package.json قلب همه بستههای npm است و مهم نیست که چه چیزی در پروژه خود دارید، یک چیز مطمئن است: همیشه یک فایل package.json وجود خواهد داشت. از میان بسیاری از موارد موجود در فایل package.json، مدیریت وابستگی چیزی است که ما…
سرفصلهای مطلب
فایل package.json قلب همه بستههای npm است و مهم نیست که چه چیزی در پروژه خود دارید، یک چیز مطمئن است: همیشه یک فایل package.json وجود خواهد داشت. از بسیاری از چیزهای موجود در فایل package.json، مدیریت وابستگی چیزی است که امروز در مورد آن صحبت خواهیم کرد.
من فکر می کنم که اکثر توسعه دهندگان موافق هستند که مدیریت وابستگی ها در روزهای اولیه زبان های سطح بالا مانند جاوا اسکریپت هرگز کار آسانی نبود. فقط از یک توسعه دهنده جاوا بپرسید که زندگی قبل از آمدن Maven چگونه بود. یا شاید با الف صحبت کنید Ruby توسعه دهنده در مورد اینکه RubyGems چقدر تاثیر دارد روی توسعه آنها همین امر در مورد توسعه دهندگان Node.js نیز صدق می کند. بدون مدیریت وابستگی npm و package.json، زندگی تقریباً به این آسانی نخواهد بود.
Carets و Tildes در شماره نسخه
در هر پروژه با پشتوانه npm، وابستگی ها در داخل فایل package.json از طریق ویژگی “وابستگی” JSON ردیابی و مدیریت می شوند. معمولاً این وابستگی ها کاملاً ساده و قابل درک هستند. اگرچه گاهی اوقات ممکن است پس از استفاده از شماره نسخه تغییراتی را مشاهده کنید --save
گزینه در package.json. با نگاهی بیشتر به آن، ممکن است ببینید که شماره نسخهها اکنون یک کاراکتر ناآشنا دارند.
به طور خاص، شما می توانید با چیزی مانند:
"dependencies": {
"express": "^3.9.2"
}
یا احتمال دیگر این است:
"dependencies": {
"express": "~3.9.2"
}
پس این شخصیت “^” (یا “~”) واقعاً در آنجا چه می کند؟ نگران نباشید، بسیار ساده است، و من سعی می کنم توضیح دهم.
کاراکترهایی که قبل از شماره نسخه قرار می گیرند، پیشوندهایی هستند که ما به آنها به عنوان علامت caret (^) و tilde (~) اشاره می کنیم. آنها توسط توسعه دهندگان (یا npm) به آنها اضافه می شوند محدودیت ها را نشان می دهد روی کدام شماره نسخه نرم افزار می تواند به عنوان یک وابستگی در پروژه شما استفاده شود. این طرحهای عددی از قراردادی پیروی میکنند که به آن میگویند نسخه سازی معنایی، یا SemVer. خود اعداد واقعی در سیستم نسخه سازی برای نشان دادن نوع تغییرات ایجاد شده که منجر به افزایش شماره نسخه شده است استفاده می شود. اعداد (3، 9، و 2) در مثال بالا به عنوان اعداد اصلی، مینور و پچ از چپ به راست نامیده می شوند.
قبل از اینکه به جزئیات معنی واقعی کرت و tilde بپردازیم، بیایید مروری اجمالی از زمان افزایش هر یک از ارقام در شماره نسخه ها با ایجاد تغییرات در یک پایگاه کد ببینیم:
- تغییرات ناسازگار به عقب افزایش می یابد عمده رقم
- اگر یک تغییر جدید (سازگار با عقب) ایجاد شود، جزئی رقم افزایش می یابد
- رفع اشکال ساده (به عملکرد موجود) افزایش می یابد پچ رقم
وقتی اجرا میکنی npm install
در دایرکتوری پروژه تمیز، بالاترین نسخه نرم افزار موجود برای یک وابستگی که می تواند شماره نسخه ارائه شده در package.json را برآورده کند برای هر وابستگی نصب شده است. بنابراین اگر هیچ ^ یا ~ داده نشده باشد، از شماره نسخه دقیق داده شده استفاده می شود.
با این حال، با مشخص نکردن نسخه وابستگی دقیق در فایل package.json و استفاده از علامت caret (^) یا علامت tilde (~)، npm به شما امکان می دهد محدوده نسخه پذیرفته شده را گسترش دهید. وقتی که --save
flag استفاده می شود، عملکرد پیش فرض این است که نسخه را با علامت caret پیشوند قرار دهید. و البته، این را می توان با پارامتر save-prefix پیکربندی کرد.
با توجه به نسخهسازی معنایی، در اینجا به تفکیک از تغییرات پایه کد که علامت caret اجازه میدهد، آمده است:
کارت اجازه می دهد…
- عملکردهای جدید سازگار با عقب
- فاکتور داخلی بزرگ
- رفع اشکال
- منسوخ شدن عملکرد قدیمی (که هنوز عملیاتی است)
با caret می توانید نسخه هایی مانند 3 را دریافت کنید..، جایی که کاراکترهای * مطابقت دارند بالاترین شماره نسخه موجود بنابراین تغییرات در رقم اصلی، مانند 4.0.0، در این مورد استفاده نخواهد شد.
تیلد اجازه می دهد…
- رفع اشکال
با tilde، می توانید نسخه هایی مانند 3.9.* را دریافت کنید. فقط آخرین رفع اشکال با tilde مجاز است.
بنابراین می توانیم با گفتن اینکه اگر بخواهید باید از کاراکتر ~ استفاده کنید نتیجه گیری کنیم قفل کردن شماره پچ زمانی که آماده پذیرش فقط رفع اشکال هستید و نمی خواهید با تغییرات احتمالاً ناسازگار مواجه شوید، باید از این استفاده کنید. از طرف دیگر، کاراکتر ^ مسئول قفل کردن پچ است و شماره های نسخه جزئی زمانی استفاده می شود که می خواهید عملکردهای جدید سازگار با عقب و همچنین رفع اشکال داشته باشید.
نتیجه
به خاطر داشته باشید که نسخه های بسیار قدیمی npm از ^ پشتیبانی نمی کنند، بنابراین با احتیاط از آن استفاده کنید. اگرچه، هر یک از نسخه های npm منتشر شده در سال گذشته یا بیشتر باید خوب باشد. در بیشتر موارد این نباید بر شما تأثیر بگذارد.
در اینجا واقعا “بهترین انتخاب” وجود ندارد زیرا هر دو در سناریوهای مختلف کاربرد دارند. همش بستگی دارد روی الزامات پروژه و ترجیح شخصی شما فقط آگاهی از این ویژگی در SemVer و npm میتواند شما را از سردردهای زیادی نجات دهد و همچنین شما را از بهروزرسانی مداوم نسخههای وابستگی خود به صورت دستی باز دارد.
آیا انتخاب ترجیحی دارید؟ آیا تجربه بدی در استفاده از حفره یا تایلد داشته اید؟ در نظرات به ما اطلاع دهید!
(برچسبها برای ترجمه)# جاوا اسکریپت
منتشر شده در 1403-01-28 07:08:04