معرفی Yarn: مدیر بسته سریع و قابل اعتماد برای جاوا اسکریپت
Yarn یه ابزار مدیریت بسته (Package Manager) برای پروژههای جاوا اسکریپتیه که بهت کمک میکنه وابستگیهای پروژه رو راحت مدیریت کنی. یعنی باهاش میتونی پکیجهای مورد نیازت رو نصب، بهروز کنی، پیکربندی کنی و حذفشون کنی بدون اینکه توی روند توسعهی پروژه اذیت بشی یا وقتت تلف بشه.
Yarn چرا ساخته شده و چه مزایایی داره؟
Yarn روی چندتا موضوع مهم تمرکز داره که باعث میشه یه گزینهی قوی و پرطرفدار برای مدیریت پکیجها باشه:
- سرعت بالا: خیلی سریعتر از npm کار میکنه، چون سیستم کش آفلاین داره و میتونه چندتا پکیج رو همزمان نصب کنه.
- دقت و پایداری: وابستگیها رو بهشکل دقیق و بدون مشکل مدیریت میکنه تا هیچ چیزی بههم نریزه.
- امنیت بیشتر: با بررسی دقیق فایلهای نصبشده، احتمال دستکاری شدن یا وجود مشکلات امنیتی رو کم میکنه.
- تجربهی بهتر برای توسعهدهندهها: امکاناتی مثل Workspaces، کش آفلاین، نصب همزمان، مد امنیتی قوی و دستورات تعاملی باعث شده که کار باهاش راحتتر و بهینهتر باشه.
فرق Yarn با بقیهی مدیر بستهها چیه؟
بیشتر مدیرهای بسته (مثل npm) بعضی از کارها رو همچنان از طریق خود npm انجام میدن، ولی Yarn همه چیز رو از اول خودش پیادهسازی کرده. این یعنی کنترل کاملی روی عملکرد و تجربهی کاربریش داره و کاملاً مستقل از npm کار میکنه.
نصب و راهاندازی Yarn
بهترین روش برای نصب و مدیریت Yarn اینه که اون رو بهصورت پروژهای نصب کنی و از Corepack استفاده کنی. Corepack یه ابزاره که بهصورت پیشفرض همراه Node.js نصب میشه و کار با Yarn رو راحتتر میکنه.
توجه کن که نسخههای جدید Yarn نباید بهصورت سراسری (global) یا از طریق npm نصب بشن!
فعالسازی Corepack و شروع یه پروژه جدید
اگه Corepack روی سیستمت فعال نیست، اول باید فعالش کنی:
corepack enable
بعدش یه پروژه جدید رو مقداردهی اولیه کن:
yarn init -2
این دستور یه پروژه جدید با تنظیمات Yarn مدرن راهاندازی میکنه.
آپدیت Yarn به آخرین نسخه
اگه بخوای همیشه از جدیدترین نسخه پایدار Yarn استفاده کنی، کافیه اینو اجرا کنی:
yarn set version stable
yarn install
با این کار، پروژه به جدیدترین نسخهی پایدار Yarn بهروز میشه.
نصب نسخههای آزمایشی (Release Candidate)
گاهی وقتا بعضی از قابلیتهای جدید هنوز به نسخهی اصلی اضافه نشدن، ولی توی نسخههای آزمایشی منتشر میشن. اگه بخوای یه نسخهی آزمایشی رو تست کنی، این دستور رو بزن:
yarn set version canary
این نسخهها خیلی پایداره، فقط تغییرات جدید رو زودتر از نسخهی اصلی دریافت میکنی.
نصب نسخهی جدید از سورس اصلی (تست نسخههای منتشرنشده)
اگه بخوای یه نسخه از Yarn رو تست کنی که هنوز حتی توی نسخهی آزمایشی هم منتشر نشده، میتونی مستقیم از مخزن اصلی (Repository) اون رو نصب کنی:
yarn set version from sources
اگه بخوای یه شاخه (branch) خاص رو تست کنی، مثلاً یه تغییر مشخص که روی شاخهی 1211 اعمال شده، اینو بزن:
yarn set version from sources --branch 1211
نکتهی مهم دربارهی نسخههای منتشرنشده
برخلاف نسخههای پایدار و آزمایشی، این روش از Corepack استفاده نمیکنه و فایل اجرایی Yarn رو داخل پوشهی .yarn/releases ذخیره میکنه و از طریق .yarnrc.yml به پروژه متصل میشه. یعنی این نسخه مستقیماً روی سیستم عاملت نصب نمیشه، بلکه فقط داخل پروژه ذخیره میشه.
نحوه استفاده از Yarn
اگه قبلاً با npm کار کردی، یه سری تفاوتهای مهم توی Yarn وجود داره که باید بدونی:
- نصب پکیجها راحتتر شده:
اگه میخوای وابستگیهای پروژه رو نصب کنی، فقط کافیه دستورyarn
رو اجرا کنی. این همونyarn install
هست و نیازی به نوشتنinstall
نداری.
دستورات مربوط به رجیستری پشت yarn npm
رفته:
توی Yarn، اگه بخوای کارهایی مثل بررسی امنیت پکیجها رو انجام بدی، باید از yarn npm
استفاده کنی. مثلاً برای چک کردن امنیت پکیجها:
yarn npm audit
اجرای اسکریپتها سادهتر شده:
توی npm، اگه میخواستی یه اسکریپت رو اجرا کنی، باید اینجوری مینوشتی:
npm run build
اما توی Yarn، میتونی مستقیماً اینو بزنی:
yarn build
یعنی دیگه نیازی به run
نداری.
آپدیت همهی وابستگیهای پروژه:
اگه میخوای همهی پکیجها رو توی کل پروژه به جدیدترین نسخهها آپدیت کنی، از این دستور استفاده کن:
yarn up
اضافه کردن یا بهروزرسانی یه پکیج خاص:
اگه میخوای یه پکیج جدید به پروژه اضافه کنی یا نسخهی یه پکیج رو بهروز کنی، این دستور رو استفاده کن:
yarn add package-name
مهاجرت از Yarn 1.x یا npm به Yarn مدرن
چرا باید به Yarn مدرن آپدیت کنیم؟
یعنی اگه هنوز داری از Yarn 1.x استفاده میکنی، چرا بهتره که به نسخهی جدیدترش مهاجرت کنی؟ اینجا چند دلیل مهم وجود داره:
- پایداری بیشتر
نسخهی مدرن Yarn بعد از چند سال تجربه و رفع مشکلات نسخهی قدیمی ساخته شده و خیلی پایدارتر از قبل شده. یعنی حالا کمتر با باگها و مشکلات عجیبوغریب روبهرو میشی. - ویژگیهای جدید
نسخهی جدید Yarn قابلیتهایی داره که اصلاً توی نسخهی 1.x یا حتی بقیهی مدیرهای بسته (مثل npm) وجود نداشتن. مثلاً قابلیتی مثل Constraints فقط توی Yarn مدرن هست که باعث میشه وابستگیها بهتر مدیریت بشن. - انعطافپذیری بالا
Yarn مدرن از سه روش نصب مختلف پشتیبانی میکنه:- Plug’n’Play (PnP) – نصب بدون نیاز به
node_modules
- روش قدیمی با
node_modules
- سیستم کش مشابه pnpm
یعنی هر روشی که راحتتری رو میتونی استفاده کنی.
- Plug’n’Play (PnP) – نصب بدون نیاز به
- قابلیت توسعه و سفارشیسازی
توی Yarn مدرن، اگه یه ویژگی جدید نیاز داشته باشی، لازم نیست منتظر باشی که تیم Yarn اون رو اضافه کنه! میتونی خودت اون رو طبق نیازهای پروژهات پیادهسازی کنی و استفاده کنی.
مثلا میتونی سیستم نصب اختصاصی، اعتبارسنجی پروژه یا Workspaces خاص خودت رو داشته باشی. - آیندهنگری و توسعهپذیری
توی نسخهی قدیمی Yarn (1.x)، اضافه کردن قابلیتهای جدید خیلی سخت بود و هر تغییری ممکن بود باعث مشکلات ناگهانی بشه. اما توی Yarn مدرن، این مشکل کاملاً برطرف شده و حالا خیلی راحتتر میشه ویژگیهای جدید اضافه کرد، بدون اینکه عملکرد کل سیستم بههم بریزه.
مهاجرت گامبهگام به Yarn مدرن
اگه دربارهی Plug’n’Play نگرانی داری، لازم نیست عجله کنی
ممکنه شنیده باشی که Yarn مدرن از Plug’n’Play (PnP) استفاده میکنه و نگران باشی که پروژهات با این روش سازگار نیست. ولی نگران نباش، چون مهاجرت به Yarn مدرن اجباری به استفاده از PnP نیست. یعنی میتونی همچنان از node_modules استفاده کنی و بعداً اگه خواستی، به PnP مهاجرت کنی.
دستورات مهاجرت فقط یک بار اجرا میشن
وقتی این تغییرات رو انجام دادی، لازم نیست اعضای تیم یکییکی این مراحل رو تکرار کنن. به محض این که تغییرات رو روی مخزن پروژه (مثلاً گیت) اعمال کنی، همهی اعضای تیم بعد از Pull کردن، به طور خودکار این تنظیمات رو خواهند داشت (البته اگه Corepack روی سیستمشون فعال باشه).
مراحل مهاجرت به Yarn مدرن
✅ ۱. مطمئن شو که نسخهی Node.js حداقل ۱۸ باشه
✅ ۲. Corepack رو فعال کن:
corepack enable
✅ ۳. وارد پوشهی پروژهات شو
✅ ۴. Yarn رو به نسخهی مدرن (Berry) تغییر بده:
yarn set version berry
✅ ۵. فایلهای تنظیمات قدیمی (.npmrc
و .yarnrc
) رو به .yarnrc.yml
تبدیل کن
✅ ۶. لاکفایل (yarn.lock
) رو برای سازگاری با Yarn مدرن بهروزرسانی کن:
yarn install
✅ ۷. تغییرات رو کامیت کن و پروژه رو تست کن
حالا Yarn مدرن روی پروژهات نصب شده و آمادهی استفادهست! البته شاید نیاز باشه یه سری تنظیمات رو توی اسکریپتهای CI یا پیکربندی پروژه اصلاح کنی، مثل تغییر --frozen-lockfile
به --immutable
.
تغییرات مهم و ناسازگاریها
۱. فرمت فایلهای تنظیمات تغییر کرده
- توی Yarn مدرن، دیگه فایلهای
.npmrc
و.yarnrc
خونده نمیشن. - بهجاش باید از
.yarnrc.yml
استفاده کنی. - تنظیمات رجیستری و توکنهای احراز هویت هم به فرمت جدید تبدیل شدن:
npmRegistryServer
برای مشخص کردن رجیستریnpmAuthToken
برای احراز هویت
۲. تغییر در اسکریپتهای pre
و post
توی Yarn مدرن، روش اجرای بعضی اسکریپتهای pre و post تغییر کرده.
مثلاً توی Yarn 1.x اینجوری بود:
{
"scripts": {
"prestart": "do-something",
"start": "http-server"
}
}
ولی توی Yarn مدرن باید اینجوری بنویسی:
{
"scripts": {
"prestart": "do-something",
"start": "yarn prestart && http-server"
}
}
البته این تغییر فقط روی اسکریپتهای کاربر مثل start
تأثیر داره. اسکریپتهایی مثل preinstall
، install
و postinstall
همچنان بدون تغییر کار میکنن.
۳. yarn global
حذف شده! بهجاش از yarn dlx
استفاده کن
Yarn تمرکزش روی مدیریت پکیجهای پروژهایه، نه سیستمعامل.
به همین خاطر yarn global
حذف شده و حالا باید از yarn dlx
برای اجرای اسکریپتهای موقتی استفاده کنی.
قبل:
yarn global add create-react-app
create-react-app my-app
بعد:
yarn dlx create-react-app my-app
۴. bundleDependencies
دیگه پشتیبانی نمیشه
ویژگی bundleDependencies
که اجازه میداد یه سری پکیجها مستقیماً داخل آرشیو بسته ذخیره بشن، حذف شده.
چرا؟ چون این ویژگی باعث میشد مشکلاتی مثل:
- وابستگی به
node_modules
(که توی PnP وجود نداره) - مشکلات همپوشانی وابستگیها
راهحلهای جایگزین:
- اگه میخوای یه پکیج رو تغییر بدی، بهتره اون رو fork کنی یا با
file:
بهش ارجاع بدی. - اگه میخوای یه پکیج بدون وابستگی برای مشتریها منتشر کنی، از Webpack، Rollup، یا Esbuild استفاده کن.
۵. حذف nohoist
و جایگزینی با nmHoistingLimits
nohoist
که مخصوص پروژههای React Native بود، مشکلات زیادی ایجاد میکرد، چون مشخص نبود دقیقاً کدوم وابستگیها باید مستثنا بشن.- حالا این ویژگی با
nmHoistingLimits
جایگزین شده که تنها سه الگوی استاندارد داره و خیلی راحتتر کار میکنه. - اگه قبلاً از
nohoist
استفاده میکردی، حالا باید این تنظیم رو توی.yarnrc.yml
اضافه کنی:
nmHoistingLimits: workspaces
تغییرات در دستورات CLI
۱. بعضی دستورات تغییر نام دادن
Yarn 1.x | Yarn مدرن |
---|---|
yarn audit |
yarn npm audit |
yarn create |
yarn dlx create-NAME |
yarn global |
yarn dlx |
yarn info |
yarn npm info |
yarn list |
yarn info -AR |
yarn login |
yarn npm login |
yarn logout |
yarn npm logout |
yarn outdated |
yarn upgrade-interactive |
yarn publish |
yarn npm publish |
yarn upgrade |
yarn up |
yarn install --production |
yarn workspaces focus --all --production |
۲. بعضی دستورات حذف شدن
دستور قدیمی | جایگزین |
---|---|
yarn check |
بررسی صحت کش خودکار انجام میشه |
yarn import |
باید اول به Classic ایمپورت کنی، بعد به Yarn مدرن مهاجرت کنی |
yarn licenses |
پیشنهاد شده که از پلاگینهای اختصاصی استفاده کنی |
yarn versions |
از yarn --version و node -p process.versions استفاده کن |
۳. بعضی قابلیتها هنوز پیادهسازی نشدن
yarn owner
در آینده باyarn npm owner
جایگزین میشه.yarn team
هم بهyarn npm team
منتقل خواهد شد.
Yarn Plug'n'Play (PnP): حذف node_modules
و بهینهسازی نصب پکیجها
این بخش اختیاریه!
اگه تازه میخوای یه پروژه جدید راه بندازی، پیشنهاد میشه از Plug'n'Play (PnP) استفاده کنی. ولی اگه یه پروژه قدیمی داری، نیازی نیست عجله کنی. میتونی این بخش رو فعلاً رد کنی و هر وقت وقت داشتی یا نیازش حس شد، سراغش بیای.
بررسی مشکلات احتمالی با Doctor
Plug'n'Play یه سری قوانین سختگیرانه برای مدیریت وابستگیها داره. اگه توی پروژهات وابستگیهایی داشته باشی که درست تعریف نشده باشن، ممکنه موقع اجرا با خطا مواجه بشی.
برای این که سریع بفهمی کجا مشکل داری، یه ابزار به اسم Doctor توی Yarn هست. کافیه این دستور رو اجرا کنی تا فایلهای پروژه رو بررسی کنه:
yarn dlx @yarnpkg/doctor
مثلاً توی یه پروژه که webpack-dev-server داره، Doctor ممکنه این خطاها رو پیدا کنه:
➤ وابستگی @jest/test-sequencer به درستی تعریف نشده
➤ فایل webpack.config.js نباید مستقیماً از `node_modules` استفاده کنه، باید از `require.resolve` استفاده بشه
➤ فایل تست contentBase-option.test.js به پوشه `node_modules` وابستهست که توی PnP وجود نداره
نتیجه: این ابزار کمکت میکنه تا سریع بفهمی کجاها مشکل وجود داره و قبل از این که پروژه به مشکل بخوره، اونها رو برطرف کنی.
فعال کردن PnP توی پروژه
۱️⃣ فایل .yarnrc.yml
رو باز کن و مقدار nodeLinker
رو چک کن.
۲️⃣ اگه مقدارش pnp
باشه، یعنی قبلاً فعال شده و نیازی به تغییر نداری.
۳️⃣ اگه نبود، مقدار nodeLinker
رو به pnp
تغییر بده و بعد این دستور رو اجرا کن:
yarn install
۴️⃣ تغییرات رو کامیت کن. حالا پروژهات با Plug'n'Play کار میکنه!
نکات مهم بعد از فعال کردن PnP
- دیگه
node_modules
وجود نداره!
باید به جای اون، ازrequire.resolve
برای دسترسی به ماژولها استفاده کنی.
اسکریپتهای prestart
دیگه بهصورت خودکار اجرا نمیشن، باید بهصورت دستی صداشون بزنی:
yarn prestart
اگه توی اسکریپتهای پروژه مستقیماً node
رو صدا میزدی، حالا باید از yarn node
استفاده کنی:
yarn node script.js
پوشهی .bin
هم حذف شده!
اگه به ابزارهایی که داخل node_modules/.bin
بودن نیاز داری، باید از yarn run bin
استفاده کنی.
yarn run jest
یا کوتاهتر:
yarn jest
تنظیمات IDE برای پشتیبانی از PnP
اکثر ویرایشگرهای کد مثل VSCode پیشفرض از PnP پشتیبانی نمیکنن، ولی میتونی بهراحتی تنظیمشون کنی:
۱️⃣ افزونهی ZipFS رو برای VSCode نصب کن.
۲️⃣ دستور زیر رو اجرا کن تا تنظیمات لازم برای IDE ذخیره بشه:
yarn dlx @yarnpkg/sdks vscode
۳️⃣ اگه با TypeScript کار میکنی، توی VSCode گزینهی "Use Workspace Version" رو فعال کن تا از نسخهی درست TypeScript استفاده بشه.
مشکلات رایج و راهحلها
۱. خطای Cannot find module [...]
اگه بعد از فعال کردن PnP دیدی که بعضی پکیجها پیدا نمیشن، ممکنه مشکل از این باشه که Yarn به درستی توی محیط Node.js ست نشده.
🔹 راهحل:
بهجای این که مستقیماً node
رو اجرا کنی، اینجوری صداش بزن:
yarn node script.js
۲. یه پکیج میخواد به یه ماژول دسترسی داشته باشه که داخل وابستگیهاش نیست
بعضی پکیجها یادشون میره که همهی وابستگیهاشون رو توی package.json
تعریف کنن. توی PnP، این وابستگیها بهصورت سختگیرانه بررسی میشن و اگه یه پکیج یه وابستگی نداشته باشه، Yarn جلوی اجراش رو میگیره.
🔹 راهحل کوتاهمدت:
توی فایل .yarnrc.yml
، از packageExtensions
برای اضافه کردن اون وابستگی استفاده کن.
مثلاً اگه React وابستگیش به prop-types
رو اعلام نکرده، اینو اضافه کن:
packageExtensions:
"react@*":
dependencies:
prop-types: "*"
و بعد yarn install
رو اجرا کن.
🔹 راهحل بلندمدت:
یه Pull Request توی مخزن اون پکیج بفرست تا توسعهدهندهی اصلی وابستگی رو به package.json
اضافه کنه.
نکات مهم دربارهی Corepack و مدیریت نسخهی Yarn
چرا نباید Yarn رو با npm install -g yarn
نصب کنیم؟
شاید متوجه شده باشی که توی راهنمای نصب Yarn هیچ جا گفته نشده که اون رو بهصورت سراسری (-g
) با npm نصب کنی. حتی پیشنهاد شده که این کار رو انجام ندی!
اما چرا؟
وقتی Yarn رو بهصورت سراسری نصب میکنی، همیشه جدیدترین نسخهی منتشر شده رو اجرا میکنی. این معمولاً مشکلی نداره، ولی گاهی یه بروزرسانی باعث میشه پروژهات به مشکل بخوره، مثلاً:
- یه تغییر ناگهانی باعث بشه بعضی وابستگیها درست کار نکنن.
- یه باگ جدید توی نسخهی آخر اضافه بشه.
- یه تغییر ناسازگار (breaking change) کل سیستم رو بهم بریزه.
چطور این مشکل رو حل کنیم؟
برای این که Yarn نسخهی درستی داشته باشه و با پروژهات هماهنگ باشه، Node.js و Yarn با هم Corepack رو توسعه دادن. Corepack ابزاریه که بهت اجازه میده مدیریت بستهی مناسب رو برای هر پروژه مشخص کنی، دقیقاً مثل قفل کردن نسخههای وابستگیها در package.json
.
Corepack چیست و چطور Yarn رو مدیریت میکنه؟
Corepack یه ابزار رسمی توی Node.js هست که به جای نصب Yarn بهصورت سراسری، اجازه میده هر پروژه از نسخهی خاص خودش استفاده کنه. این یعنی پروژهی A میتونه از Yarn 3.2 استفاده کنه، در حالی که پروژهی B همچنان روی Yarn 2.1 بمونه، بدون این که این دو نسخه روی هم تأثیر بذارن.
Corepack برای چه ابزارهایی کار میکنه؟
- Yarn
- pnpm
📌 یادت باشه: Corepack هنوز بهصورت آزمایشی (experimental) هست، ولی الان بهترین روش برای مدیریت Yarn و pnpm محسوب میشه.
نصب و فعالسازی Corepack
Corepack از نسخهی ۱۴.۱۹ و ۱۶.۹ به بعد بهصورت پیشفرض همراه Node.js نصب میشه، ولی تا وقتی که دستی فعالش نکنی، کار نمیکنه.
۱. فعال کردن Corepack
corepack enable
بعد از این کار، Yarn بهصورت خودکار بر اساس نسخهی مشخصشده در پروژه اجرا میشه.
۲. چک کن که Corepack فعال شده یا نه
برای اینکه مطمئن بشی Corepack درست نصب شده، این دستور رو اجرا کن:
yarn exec env
اگه مسیر (path
) نمایش داده شد، یعنی Corepack درسته و مشکلی نداری. ولی اگه اجرا نشد، شاید یه مشکلی توی نصب وجود داشته باشه.
مشکلات احتمالی و راهحلها
۱. Corepack توی بعضی از توزیعهای Node.js وجود نداره
بعضی از مدیریتهای پکیج لینوکس یا توزیعهای شخصثالث Node.js، Corepack رو بهصورت پیشفرض ندارن.
🔹 راهحل:
اگه دستور corepack enable
کار نکرد، اول Corepack رو با npm نصب کن:
npm install -g corepack
و بعد دوباره Corepack رو فعال کن:
corepack enable
۲. کار نکردن Corepack توی شبکههای بسته و CIها
اگه داری روی یک شبکهی بسته (مثل شرکتهایی که دسترسی به اینترنت محدود دارن) کار میکنی، ممکنه Corepack نتونه فایل اجرایی Yarn رو برای پروژه دانلود کنه.
🔹 راهحل:
مستندات Corepack یه بخش مخصوص برای حل این مشکل داره که بهت یاد میده چطور نسخهی درست Yarn رو روی شبکههای بسته مدیریت کنی.
۳. مشکل Corepack با Volta
Volta یه ابزار مدیریت نسخهی Node.js و پکیجهاست که بعضی از تیمهای توسعه ازش استفاده میکنن. مشکل اینجاست که Volta و Corepack بهصورت همزمان کار نمیکنن، چون هر دو روی shims
تأثیر میذارن.
🔹 راهحل:
اگه از Volta استفاده میکنی، این دو تا دستور رو اجرا کن تا Corepack درست کار کنه:
npm install -g corepack
corepack enable --install-directory ~/.volta/bin
با این کار، Corepack روی مسیر نصب Volta تنظیم میشه و درست اجرا میشه.
تنظیمات SDK برای ویرایشگرها در Yarn PnP
چرا برای ویرایشگرها به تنظیمات خاص نیاز داریم؟
وقتی از Yarn Plug’n’Play (PnP) استفاده میکنی، به جای node_modules
، یه لودر مخصوص برای Node.js تولید میشه. اما بعضی از ویرایشگرهای کد (مثل VSCode یا IntelliJ) نمیتونن بهصورت خودکار این لودر رو تشخیص بدن.
مشکلاتی که ممکنه پیش بیاد:
- بعضی افزونههای ویرایشگر (مثل Prettier، TypeScript و ESLint) درست کار نمیکنن.
- ویرایشگر ممکنه خطا بده که ماژولها پیدا نمیشن، چون دنبال
node_modules
میگرده.
راهحل چیه؟
Yarn یه سری SDK مخصوص ویرایشگرها ارائه میده که این مشکل رو حل میکنن. این SDKها یه لایهی میانی اضافه میکنن که درخواستهای ویرایشگر رو به مسیرهای درست هدایت میکنه.
چطور SDK و تنظیمات ویرایشگر رو فعال کنیم؟
برای این کار، از دستور yarn dlx @yarnpkg/sdks
استفاده میکنیم.
✅ برای نصب SDK پایه + تنظیمات ویرایشگرهای مختلف (مثل VSCode، Vim و ...):
yarn dlx @yarnpkg/sdks vscode vim ...
✅ اگه فقط SDK پایه رو میخوای (بدون تنظیمات ویرایشگر):
yarn dlx @yarnpkg/sdks base
✅ اگه قبلاً SDK نصب کردی و فقط میخوای همه چیزو آپدیت کنی:
yarn dlx @yarnpkg/sdks
ابزارهایی که فعلاً پشتیبانی میشن
هنگام اجرای yarn dlx @yarnpkg/sdks
، این دستور بر اساس package.json
تشخیص میده که چه SDKهایی نیاز داری و فقط همونا رو نصب میکنه.
افزونهی ویرایشگر | فعال میشه اگه این وابستگی رو تو package.json داشته باشی |
---|---|
پشتیبانی از TypeScript توی VSCode | typescript |
افزونه Astro برای VSCode | astro |
افزونهی ESLint برای VSCode | eslint |
افزونهی Prettier برای VSCode | prettier |
افزونهی Relay | relay |
اگه پشتیبانی بیشتری میخوای، میتونی خودت به این پروژه کمک کنی!
تنظیمات ویرایشگرها
📌 تنظیم Yarn PnP برای VSCode
1️⃣ افزونهی ZipFS رو نصب کن (این افزونه توسط تیم Yarn ارائه شده).
2️⃣ این دستور رو اجرا کن تا تنظیمات لازم برای VSCode ساخته بشه:
yarn dlx @yarnpkg/sdks vscode
3️⃣ توی VSCode، وارد یه فایل TypeScript شو، دکمههای Ctrl + Shift + P
رو بزن و گزینهی "Select TypeScript Version" رو انتخاب کن.
4️⃣ بعدش گزینهی "Use Workspace Version" رو انتخاب کن.
حالا VSCode دقیقاً همون نسخهی TypeScript رو که توی پروژه استفاده میکنی، تشخیص میده و مشکلی نخواهی داشت.
📌 تنظیم Yarn PnP برای Vim و Neovim
1️⃣ افزونهی vim-rzip
رو نصب کن.
2️⃣ این دستور رو اجرا کن تا تنظیمات لازم ساخته بشه:
yarn dlx @yarnpkg/sdks vim
3️⃣ برای Neovim، SDKهای TypeScript رو نصب کن:
yarn dlx @yarnpkg/sdks base
حالا پشتیبانی از TypeScript توی Neovim فعال شده و با nvim-lspconfig
کار میکنه.
📌 تنظیم Yarn PnP برای Emacs
1️⃣ دستور زیر رو اجرا کن تا SDKهای لازم نصب بشن:
yarn dlx @yarnpkg/sdks base
2️⃣ یه فایل جدید .dir-locals.el
بساز و این کد رو توش قرار بده تا Flycheck و LSP فعال بشه:
((typescript-mode
. ((eval . (let ((project-directory (car (dir-locals-find-file default-directory))))
(setq lsp-clients-typescript-server-args `("--tsserver-path" ,(concat project-directory ".yarn/sdks/typescript/bin/tsserver") "--stdio")))))))
3️⃣ Emacs رو ریاستارت کن تا تغییرات اعمال بشن.