npm چیست؟
npm یک کتابخانهی بزرگ است که یک نصاب و Package Manager به حساب میآید. این کتابخانه Open source و رایگان میباشد.
NPM برگرفته از نام Node Package Manager و به معنای یک نرمافزار مدیریت بسته node.js است.
اگر از node.js اطلاعی ندارید نگران نباشید. به طور خلاصه، node.js یک محیطی برای اجرای کدهای جاوا اسکریپت در سمت سرور است.
به طور معمول کدهای جاوا اسکریپت در سمت کاربر و در مرورگر اجرا میشوند. اما محیط node.js شرایطی را فراهم میکند که میتوان از کدهای جاوا اسکریپت در سمت سرور هم استفاده کرد.
Package Manager چیست؟
در حین برنامهنویسی گاهی لازم است در پروژه، از یک یا چند کتابخانه استفاده کنیم.
در گذشته لازم بود حتماً این کتابخانهها را دانلود و به پروژه اضافه میکردیم.
گاهی وابستگی یک کتابخانه به چند فایل یا کتابخانهی دیگر کارکردن را بسیار پیچیده میکرد. زیرا باید تمام آن فایل و کتابخانههای وابسته را نیز به پروژه اضافه کنیم!
از این رو ابزاری به نام Package Manager ایجاد شد تا اعمالی مثل نصب، بروزرسانی و حذف کتابخانهها را به صورت خودکار انجام دهد.
از مزایای استفاده از Package Managerها این است که نیازی نیست به فکر اضافه کردن فایلهای جانبی و وابسته به کتابخانهی اصلی باشیم. این ابزار قادر است این کتابخانهها را دانلود و نصب نماید.
موارد کاربرد npm
- افزودن پکیج های مختلف به پروژه
- اجرا کردن پکیج ها بدون دانلود با استفاده از اجرای دستور در (CLI (command line
- بروزرسانی آسان پکیج های استفاده شده
- اشتراک گذاری کدها با سایر کاربران npm
- کنترل آسان ورژن پروژه
npm دارای یک command line است که برای دانلود و نصب نرمافزار استفاده میشود.
برای نصب این ابزار محبوب به نصب Node.js نیاز دارید. یعنی شما باید از طریق آدرس https://nodejs.org/en ابتدا node.js را نصب کنید تا npm همراه آن نصب شود. بعد از نصب node.js برای اطمینان از نصب npm کافیست cmd ویندوز را باز کنید و دستور npm –v را تایپ کنید تا ورژن آن نمایش داده شود. حدوداً بیست و پنج سال پیش و در سال 1995، ja امروزه، ja این مجموعه مقالات در دو فصلِ «مقدماتی» و «پیشرفته» ارائه می شود و تلاش شده که مفاهیم و عناوین ضروری تر npm در مقالات فصل اول گنجانده شوند. همچنین برای آن دسته از کاربرانی که علاقمند به مطالعه عمیق تر این مبحث هستند، فصل دوم را تدارک دیده ایم و در آن مفاهیم پیشرفته تر npm را بررسی خواهیم کرد. برای دنبال کردن مقالات فصل اول، نیازی به داشتن هیچ پیش زمینهای نیست. ولی اگر تاکنون با پروژههایی که پایه آنها ja لازم به ذکر است که توضیحات این مجموعه مقالات، بر اساس npm نسخه 6.13 میباشد. در این مقاله که نخستین قسمت از فصل اول این مجموعه است، درباره موضوعات زیر توضیح داده ایم: · مفهوم پکیج و ماژول در دنیای جاوااسکریپت · npm و چیستیِ آن · نحوه نصب npm بر روی سیستم عامل · معمولاً موقع کار با js خیلی با واژه library سر و کار نداریم. · منظور از module در جاوااسکریپت، کوچکترین واحد functionality است. (مثلاً هر چیزی که در جاوااسکریپت require، import و export میکنیم، یک module به حساب میآید) · منظور از پکیج، distribution unit در کدهای مبتنی بر node.js میباشد. یک ماژول یا مجموعهای از ماژولها در کنار هم که به نحوی خاص ترکیب شدهاند تا یک کار مشخص انجام دهند، یک package را تشکیل میدهند. در واقع واژه package وقتی وارد کار میشود که ما میخواهیم با community ارتباط برقرار کنیم و کدمان را در اختیار دیگران قرار بدهیم و آن را distribute کنیم. درست اتفاقی که در مورد npm رخ داده و میگوییم npm ابزاریست برای مدیریت توزیع این واحد ها(یعنی همین پکیجها). ایده اصلی این ساختارِ پکیجی، این است که هر پکیج تا جای ممکن کوچک باشد و یک کار خاص را انجام دهد، و بعداً از کنار هم قرار گرفتن این پکیجها یک پروژهایجاد شود. امروزه هر پروژه جاوااسکریپتی، مثلاً یک وبسایت، از تعداد زیادی پکیج در کنار یکدیگر تشکیل شده. در واقع پکیج یک دایرکتوریست که یک یا چند فایل در آن قرار دارد، و فایلی به نام a) یک فولدر شامل یک برنامه است، که یک فایل package.json دارد و آن فایل برنامه را توصیف میکند. b) یک فایل از جنس gzipped tarball است که مورد a را داشته باشد. c) یک url است که خروجیاش مورد b میباشد. d) یک e) یک f) یک g) یک برای مطالعه بیشتر درباره مفاهیم package و module و تفاوت های این دو، می توانید به آدرس زیر مراجعه کنید: https://docs.npmjs.com/about-packages-and-modules وقتی از npm صحبت میکنیم، معمولاً سه چیز مد نظرمان است: 1. ابزار CLI (command-line interface) ای که npm در اختیار قرار میدهد، یعنی همین دستوراتی که در ترمینال اجرا میکنیم. 2. وبسایت رسمی npm که حتماً با آن آشنایی دارید: npmjs.com. و در آن می توانیم دنبال پکیجهای مورد نظرمان بگردیم، درباره آنها اطلاعات کسب کنیم، برای خود و یا تیممان پروفایل بسازیم، ثبتنام با دسترسی و امکانات خاص انجام بدهیم، پکیجهای private و public منتشر کنیم و ... . 3. بستر registry که npm در اختیار ما قرار داده است. registry را میتوان اینگونه تعریف کرد: «یک پایگاه داده بزرگ که درباره پکیجهایی که برنامهنویسها با یکدیگر به اشتراک میگذارند اطلاعات دارد». هر کس بخواهد پکیجی تولید کند که دیگران بتوانند از طریق npm به آن دسترسی داشته باشند، باید آن را در registry ثبت کند. https://nodejs.com/en/download/ 
نصب npm
مفهوم پکیج در جاوااسکریپت
وقتی با جاوااسکریپت کار میکنیم، واژههای package و module خیلی به چشممان میخورند. این دو واژه بسیاری اوقات عملاً معنای مشابهی میدهند و مفهومی شبیه library ها در زبانهای دیگر دارند. اما اگر بخواهیم دقیقتر بیان کنیم:package.json دارد که اطلاعاتی (metadata هایی) درباره آن پکیج به ما میدهد. اما اگر بخواهیم تعریف رسمیتر پکیج را بیان کنیم، باید بگوییم پکیج:<name>@<version> است که در registry مربوط به npm منتشر شده باشد و مورد c را داشته باشد.<name>@<tag> است که به مورد d اشاره میکند.<name> است که برچسب latest داشته باشد و شرط e را محقق کند.<git remote url> است که به مورد a ختم شود.npm چیست؟
npm یا همان node package manager، بزرگترین بستر برای ثبت، نشر، اشتراکگذاری، بروزرسانی و استفاده از پکیجهای جاوااسکریپت است. npm یک بستر software registry در اختیارمان قرار میدهد که از طریق آن، برنامهنویسها از سراسر دنیا پکیجهای خود را به اشتراک میگذارند یا پکیج سایر برنامهنویس ها را برای استفاده برمیدارند. در این بین اگر برنامهنویسی پکیجش را آپدیت کرد، npm به سادگی این امکان را به وی میدهد که پکیج بروز شدهاش را مجدداً روی npm قرار دهد، و سایر کسانی هم که قبلاً در پروژههایشان از آن پکیج استفاده میکردند، بتوانند آن را بروز کنند.نحوه نصب npm
نصب npm خیلی ساده است. npm بصورت خودکار همراه با node.js نصب میشود و همانطور که میدانید، برای نصب node.js هم کافیست به سایت آن برویم و نسخه منطبق با سیستمعامل خود را از آنجا دانلود کنیم:
