node.js - چگونه یک نسخه از بسته @types را به نسخههای بسته JS مربوطه مرتبط کنیم؟
من روی یک پروژه Node.js با TypeScript 2.2 کار میکنم که از Node 6.3.1 استفاده میکند و میخواهم از استفاده از typings به استفاده از @types مهاجرت کنم. با انجام این کار، با مجموعهای از سوالات مواجه شدم مربوط به این که آیا ارتباطی بین نسخه فایل @types و بسته npm مربوطه وجود دارد یا نه.
اگر از یاسمین به عنوان مثال استفاده کنم، نسخههای موجود از تعریف نوعها عبارتند از
npm show @types/jasmine@* version
@types/[email '1.3.0'
@types/[email '1.3.1'
@types/[email '1.3.2'
@types/[email '2.2.29'
@types/[email '2.2.30'
@types/[email '2.2.31'
@types/[email '2.2.32'
@types/[email '2.2.33'
@types/[email '2.2.34'
@types/[email '2.5.35'
@types/[email '2.5.36'
@types/[email '2.5.37'
@types/[email '2.5.38'
@types/[email '2.5.39'
@types/[email '2.5.40'
@types/[email '2.5.41'
@types/[email '2.5.42'
@types/[email '2.5.43'
@types/[email '2.5.44'
@types/[email '2.5.45'
@types/[email '2.5.46'
اما اگر نسخههای بستههای یاسمنی که دارم را بررسی کنم؛
npm show jasmine@* version
[email '2.0.1'
[email '2.1.0'
[email '2.1.1'
[email '2.2.0'
[email '2.2.1'
[email '2.3.0'
[email '2.3.1'
[email '2.3.2'
[email '2.4.0'
[email '2.4.1'
[email '2.5.0'
[email '2.5.1'
[email '2.5.2'
[email '2.5.3'
فرض کنیم من از نسخه ۲.۴.۰ jasmine استفاده میکنم، کدام نسخه از @types/jasmine را باید انتخاب کنم؟ چون حتی اگر از آخرین نسخه هر دو استفاده کنم، ۲.۵.۴۶ با ۲.۵.۳ مطابقت ندارد.
مثال دیگری خود نود خواهد بود، اساساً نسخههای 6.0 یا 7.0 در @types وجود دارند، و typings فقط آنهایی که در زیر نشان داده شدهاند را دارد، و نسخه 6.0 به عنوان منسوخ گزارش شده است. بنابراین، این typings در واقع به کدام نسخه نود متصل هستند؟
typings view dt~node --versions
TAG VERSION DESCRIPTION COMPILER LOCATION
UPDATED
7.0.0+20170322231424 7.0.0 github:DefinitelyTyped/DefinitelyTyped/node/index.d.ts#a4a912a0cd1849fa7df0e5d909c8625fba04e49d 2017-03-22T23:14:24.000Z
6.0.0+20161121110008 6.0.0 github:DefinitelyTyped/DefinitelyTyped/node/node.d.ts#fb7fbd28b477f5e239467e69397ed020d92817e7 2016-11-21T11:00:08.000Z
متشکرم
پاسخ شماره ۱
نسخههای اصلی و فرعی بستههای DefinitelyTyped قرار است مطابق با نسخههای اصلی و فرعی بستهای باشند که برای آنها تایپ میشوند. نسخهی پچ هر زمان که فایل .d.ts به دلایل دیگر تغییر کند، افزایش مییابد. از آنجایی که نسخه فرعی نباید تغییرات مخرب را نشان دهد، از نظر نظری، میتوانید از بالاترین فایل تعریف 2.x.y موجود برای یک کتابخانه 2.a.b.c استفاده کنید.
اما حالا ملاحظات شروع میشوند.
- سربرگ در فایل تعریف ممکن است در زمان مناسب تغییر نکرده باشد
- نویسندگان کتابخانه لزوماً از semver* پیروی نمیکنند
- فایل تعریف ممکن است در هر لحظه به طور 100٪ صحیح نباشد، در هر دو جهت (یعنی ذکر یک ویژگی 2.6 تحت نسخه 2.5، یا عدم ذکر یک تابع 2.4 در فایل 2.5)
* در واقع، هیچکس این کار را نمیکند
یک توضیح کامل را میتوان در مستندات رسمی بخش سوالات متداول یافت:
نسخههای بسته Definitely Typed چگونه با نسخههای کتابخانه مربوطه مرتبط هستند؟