Yarn چیست؟ Yarn یک پکیج منیجر جدید است که جایگزین گردش کار موجود برای کلاینت npm یا سایر پکیج منیجرها میشود و درعینحال با رجیستری npm سازگار است. این مجموعه از همان ویژگیهای گردش کار موجود بهره میبرد درحالیکه سریعتر، ایمنتر و مطمئنتر عمل میکند.
وظیفه اصلی هر پکیج منیجر نصب پکیج است. پکیج قطعه کدی است که هدف خاصی را دنبال میکند، از یک رجیستری گلوبال تا محیط لوکال یک مهندس. هر پکیج ممکن است به پکیجهای دیگر وابسته باشد یا نباشد. یک پروژه معمولی میتواند دهها، صدها یا حتی هزاران پکیج را در ساختار درختی وابستگیهای خود داشته باشد.
این وابستگیها براساس نسخهسازی معنایی (Semantic Versioning) نسخهبندی و نصب میشوند. Semver یک طرح نسخهسازی را تعریف میکند که انواع تغییرات را در هر نسخه جدید منعکس میکند، این تغییر میتواند یک API را از کار بیندازد، یک ویژگی جدید اضافه کند یا یک باگ را برطرف کند. بااینحال، Semver به توسعهدهندگان پکیج که از اشتباه دوری میکنند متکی است. زیرا در صورتی که وابستگیها قفل نشده باشند، تغییرات مشکلساز یا باگهای جدید ممکن است راه خود را به وابستگیهای نصبشده باز کنند.
Yarn چیست؟
Yarn یک پکیج منیجر برای Node.js است که بر سرعت، امنیت و ثبات تمرکز دارد. Yarn در ابتدا برای رفع برخی مشکلات پکیج منیجر محبوب NPM ایجاد شد. اگرچه در حال حاضر این دو پکیج منیجر از نظر عملکرد و ویژگیها به هم نزدیک شدهاند، Yarn همچنان محبوب است و به ویژه توسط توسعهدهندگان React استفاده میشود. همچنین قبل از اینکه بتوانید از Yarn استفاده کنید نصب Node.js باید انجام شده باشد.
اما ویژگیهای Yarn چیست؟ در ادامه به چند مورد از ویژگیهای منحصربهفرد Yarn اشاره میکنیم:
- مکانیزم ذخیرهسازی در هر پروژه که میتواند سرعت نصبها و بیلدهای بعدی را تا حد زیادی افزایش دهد.
- نصبهای ثابت و قطعی که ساختار کتابخانههای نصبشده را تضمین میکند همیشه یکسان است.
- آزمایش چکسام (Checksum) تمام پکیجها برای تایید صحت آنها
- فضاهای کاری (Workspace) که استفاده از Yarn را در monorepo (به معنی: چند پروژه توسعهیافته در یک مخزن کد منبع واحد) تسهیل میکند.
در این آموزش توضیح میدهیم که Yarn چیست و نحوه نصب Yarn چگونه است. در ادامه Yarn را به یک پروژه نمونه اضافه میکنید و برخی از دستورات اولیه Yarn را یاد میگیرید.
معماری Yarn چیست؟
در اکوسیستم Node، وابستگیها در دایرکتوری node_modules در پروژه شما قرار میگیرند. بااینحال، این ساختار فایل میتواند با درخت وابستگی واقعی متفاوت باشد زیرا وابستگیهای تکراری با هم ادغام میشوند. کلاینت npm وابستگیها را به صورت غیرقطعی در دایرکتوری node_modules نصب میکند.
این یعنی براساس ترتیبی که وابستگیها نصب میشوند، ساختار دایرکتوری node_modules هر فرد میتواند متفاوت باشد. این تفاوتها میتواند به ایجاد باگهای «روی دستگاه من کار میکند» منجر شود که شناسایی آنها زمان زیادی میبرد.
پکیج منیجر Yarn با استفاده از lockfile و یک الگوریتم نصب که قطعی و قابل اعتماد است، این مشکلات را در مورد نسخهسازی و عدم قطعیت حل میکند. lockfile وابستگیهای نصبشده را به یک نسخه خاص قفل کرده و اطمینان میدهد که هر نصب به ساختار فایل دقیقا یکسان در node_modules در همهی دستگاهها منجر میشود. لاک فایلهای نوشته شده از یک قالب مختصر با کلیدهای مرتبشده استفاده میکنند تا مطمئن شوند تغییرات حداقلی هستند و فرایند بررسی ساده است.
به طور کلی فرایند نصب به سه مرحله تقسیم میشود:
- Resolution) Yarn با ارسال درخواست به رجیستری و جستوجوی مکرر در هر وابستگی، حل مشکلات مربوط به وابستگیها را شروع میکند.
- Fetching) در مرحلهی بعد، Yarn به یک فهرست Cache گلوبال نگاه میکند تا ببیند پکیج مورد نیاز از قبل دانلود شده است یا خیر. در غیراینصورت، Yarn فایل tarball را برای پکیج Fetch میکند و آن را در کش گلوبال قرار میدهد تا بتواند به صورت آفلاین کار کن دو نیازی به دانلود وابستگیها بیشتر از یکبار وجود نداشته باشد.
- Linking) در نهایت، پکیج منیجر Yarn با کپی کردن همهی فایلهای مورد نیاز از کش گلوبال در دایرکتوری لوکال node_modules، همهچیز را به هم پیوند میدهد.
با تفکیک کردن این مراحل و داشتن نتایج قطعی، Yarn میتواند عملیات را موازیسازی کند. این امر استفاده از منابع را به حداکثر میرساند و فرایند نصب را تسریع میکند. در برخی از پروژههای فیسبوک، پکیج منیجر Yarn موفق شد زمان لازم برای فرایند نصب را از چند ثانیه تا چندین دقیقه کاهش دهد.
Yarn همچنین از یک mutex استفاده میکند تا مطمئن شوید چندین نمونهی CLI در حال اجرا با هم برخوردی ندارند و یکدیگر را آلوده نمیکنند.
در طول کل این فرایند، Yarn تضمینهای سختگیرانهای را در مورد نصب پکیج اعمال میکند. شما میتوانید کنترل کنید که اسکریپتهای چرخه حیات برای کدام پکیجها اجرا شوند. چکسامهای پکیج نیز در lockfile ذخیره میشوند تا بهاینترتیب مطمئن باشید که هر بار همان پکیجی که به دنبالش هستید را دریافت میکنید.
ویژگیهای yarn چیست؟
علاوهبراین که Yarn نصبها را بسیار سریعتر و مطمئنتر میکند، این پکیج منیجر کارآمد از ویژگیهای متنوعی برخوردار است که به سادهسازی هر چه بیشتر گردش کار مدیریت وابستگیها کمک میکند.
- سازگاری با هر دو گردش کاری npm و bower و پشتیبانی از ترکیب رجیستریها.
- امکان محدود کردن لایسنس ماژولهای نصبشده و ابزاری برای خروجی اطلاعات لایسنس.
- یک JS API عمومی و پایدار با انتزاع گزارشدهی (Logging) را برای استفاده از طریق ابزارهای بیلد نشان میدهد.
- خروجی CLI خوانا، مینیمال و زیبا.
نصب و استفاده از پکیج منیجر Yarn برای Node.js
در ادامه توضیح میدهیم که روند نصب و استفاده از پکیج منیجر یارن برای Node.js چیست. قبل از اینکه کار را شروع کنیم ابتدا اجازه بدهید با پیشنیازهای این کار آشنا شویم.
پیشنیازها
قبل از نصب و استفاده از پکیج منیجر Yarn باید Node.js را نصب کرده باشید. برای اینکه ببینید آیا Node.js را قبلا نصب کردهاید یا خیر، دستور زیر را در ترمینال خط فرمان لوکال خود تایپ کنید:
node -v
اگر شماره نسخه مانند این مثال (v12.16.3) بود، Node.js از قبل بر روی سرور مجازی یا سیستم شما نصب شده است. اگر با خطای «command not found» یا خطایی مشابه با آن مواجه شدید، لطفا قبل از اینکه ادامه بدهید ابتدا Node.js را نصب کنید.
پس از نصب Node.js به مرحله اول بروید تا پکیج منیجر yarn را نصب کنید.
مرحله اول: نصب یارن به صورت گلوبال
Yarn با یک روش منحصربهفرد در پروژههای جاوا اسکریپت شما نصب و اجرا میشود. ابتدا دستور «yarn» را به صورت گلوبال نصب میکنید، سپس از دستور «global yarn» برای نصب یک نسخه محلی خاص از Yarn در دایرکتوری پروژه خود استفاده میکنید. این رویکرد برای اطمینان از اینکه همهی افراد مشغول کار بر روی یک پروژه (و تمام ابزارهای آزمایش و استقرار خودکار پروژه) از یک نسخه واحد Yarn استفاده میکنند ضروری است. بهاینترتیب میتوانید از رفتارها و نتایج ناسازگار جلوگیری کنید.
توسعهدهندگانی که از Yarn نگهداری میکنند توصیه کردهاند که yarn را به صورت سراسری با استفاده از پکیج منیجر NPM نصب کنید. این پکیج منیجر به طور پیشفرض در تمام نصبهای Node.js وجود دارد. برای انجام این کار از فلگ -g در کنار دستور «npm install» استفاده کنید:
sudo npm install -g yarn
پس از نصب پکیج، از دستور «yarn» بخواهید تا شماره نسخه خود را پرینت کند. این کار به شما اجازه میدهد تایید کنید که Yarn به درستی نصب شده است:
yarn --version
Output 1.22.11
اکنون که دستور «yarn» را به صورت گلوبال نصب کردهاید میتوانید از آن برای نصب yarn در یک پروژهی جاوا اسکریپت استفاده کنید.
مرحله دوم: نصب Yarn در پروژهی شما
اگر از Yarn برای کار بر روی یک پروژه موجود مبتنیبر پکیج منیجر Yarn استفاده میکنید، میتوانید از این مرحله صرفنظر کنید. پروژه از قبل باید با نسخه لوکال Yarn و تمام فایلهای پیکربندی لازم برای استفاده از آن تنظیم شده باشد.
اگر پروژه جدیدی را برای خود راهاندازی میکنید، اکنون باید یک نسخه خاص از Yarn را پیکربندی کنید.
به این منظور ابتدا به دایرکتوری پروژه خود بروید:
cd ~/my-project
اگر دایرکتوری پروژه ندارید، میتوانید یک پوشه جدید با نام «mkdir» بسازید و سپس وارد آن شوید:
mkdir my-project cd my-project
اکنون از دستور «yarn set» برای تنظیم نسخه berry استفاده کنید:
yarn set version berry
با این کار، نسخه فعلی و توسعهیافتهای از Yarn/berry آن را در دایرکتوری «/yarn/releases.» پروژه شما ذخیره میکند و همچنین تنظیمات یک فایل پیکربندی «yarnrc.yml.» را انجام میدهد:
Output Resolving berry to a url... Downloading https://github.com/yarnpkg/berry/raw/master/packages/berry-cli/bin/berry.js... Saving it into /home/sammy/my-project/.yarn/releases/yarn-berry.cjs... Updating /home/sammy/my-project/.yarnrc.yml... Done!
حالا دوباره دستور «yarn –version» را امتحان کنید:
Output 3.0.0
خواهید دید که نسخه 3.0.0 یا بالاتر است. در زمان انتشار این مقاله، این آخرین نسخه از Yarn است.
توجه: اگر از دایرکتوری پروژه خود خارج شوید و دستور «yarn --version» را مجددا اجرا کنید، یکبار دیگر شماره نسخه گلوبال Yarn را دریافت میکنید که در این مثال 1.22.11 است. هربار که دستور «yarn» را اجرا میکنید، از نسخهای که به صورت گلوبال نصب شده است استفاده میکنید. دستور «global yarn» ابتدا بررسی میکند که آیا در دایرکتوری پروژه Yarn با یک فایل «yarnrc.yml.» قرار دارد یا خیر. اگر پاسخ مثبت بود، خروجی دستور نسخهی مختص به پروژه از Yarn که در تنظیمات yarnPath پیکربندی شده است را نمایش میدهد.
پروژه شما اکنون با یک نسخه مختص پروژه از Yarn تنظیم شده است. در مرحله بعد، ما به چند دستور پرکاربرد yarn برای شروع کار نگاهی میاندازیم.
استفاده از Yarn
Yarn دستورات فرعی زیادی دارد اما برای شروع فقط به تعدادی از آنها نیاز دارید. بیایید چند مورد از دستورات فرعی کاربردی Yarn را بررسی کنیم.
دستور راهنمای help
هنگام شروع کار با هر ابزار جدیدی، یادگیری نحوه دسترسی به مستندات و کمک آنلاین مفید است. در Yarn میتوان فلگ help– را به هر دستوری اضافه کرد تا اطلاعات بیشتری به دست آورد:
yarn --help
با این کار کمک کلی برای دستور «yarn» پرینت میشود. برای دریافت اطلاعات دقیقتر در مورد یک دستور فرعی، کافیست پس از دستور فرعی فلگ help– را اضافه کنید:
yarn install --help
با این کار جزئیات مربوط به نحوه استفاده از دستور «yarn install» پرینت میشود.
شروع یک پروژه Yarn جدید
اگر پروژهای را از ابتدا شروع میکنید، از دستور فرعی «init» برای ایجاد فایلهای مختص به Yarn که مورد نیاز شماست استفاده کنید:
yarn init
با این کار یک فایل پیکربندی «package.json» و «yarn.lock» به دایرکتوری شما اضافه میشود. فایل «package.json» شامل پیکربندی و لیست وابستگیهای ماژول شماست. فایل «yarn.lock» آن وابستگیها را به نسخههای خاص قفل میکند و مطمئن میشود که ساختار درختی وابستگیها حداکثر انسجام و سازگاری را دارد.
نصب تمام وابستگیهای یک پروژه
برای دانلود و نصب تمام وابستگیها در یک پروژه موجود مبتنیبر Yarn، از دستور فرعی «install» استفاده کنید:
yarn install
با این کار ماژولهایی که برای شروع نیاز دارید دانلود و نصب میشود.
افزودن یک وابستگی جدید به یک پروژه
از دستور فرعی «add» برای افزودن وابستگیهای جدید به پروژه استفاده کنید:
yarn add package-name
این دستور ماژول را دانلود و نصب کرده و فایلهای «package.json» و «yarn.lock» را بهروزرسانی میکند.
بهروزرسانی فایل «gitignore.» برای Yarn
Yarn فایلها را در یک پوشه «yarn.» در دایرکتوری پروژه شما ذخیره میکند. برخی از این فایلها باید از نظر نسخه کنترل و بررسی شده و برخی دیگر باید نادیده گرفته شوند. پیکربندی اصلی «gitignore.» برای پکیج منیجر Yarn به شرح زیر است:
.yarn/* !.yarn/patches !.yarn/releases !.yarn/plugins !.yarn/sdks !.yarn/versions .pnp.*
این پیکربندی کل دایرکتوری «yarn.» را نادیده میگیرد و سپس برخی استثناها را برای پوشههای مهم اضافه میکند که از جمله میتوان به دایرکتوری «releases» که حاوی نسخهای از Yarn مختص پروژه شما است اشاره کرد.
جمعبندی
در این آموزش توضیح دادیم که Yarn چیست و نحوه نصب آن چگونه است. همچنین با چند مورد از دستورات فرعی و پرکاربرد پکیج منیجر Yarn آشنا شدید. برای کسب اطلاعات بیشتر در مورد استفاده از Yarn، توصیه میکنیم به مستندات رسمی Yarn CLI نگاهی بیندازید.