مهدی عادلی فر
بنیانگذار توسینسو و برنامه نویس

NPM چیست؟ معرفی Package Manager و دستورات NPM

سلام به کاربران عزیز وب سایت tosinso. در قسمت قبل در مورد اینکه package manager چیست و به چه دردی می‌خورد و دیدیم که با تکنولوژی های امروزی حتماً نیاز به package manger داریم. در این مطلب می‌خواهم در مورد یکی از معروف ترین package manager ها صحبت کنیم و آنpackage manager مربوط به node js یا npm است.

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

npm چیست؟

شاید اگر به ۱۰ سال پیش برگردیم زبان جاوا اسکریپت یک زبانی بود که بر روی مرورگر قرار داشت و کار مهمی که با آن انجام میدادیم یک انیمیشن بود ک در صفحه وب خود میدیدیم که مثلاً یک منو به صورت انمیشینی به صورت کشویی باز می‌شد و حرکات اینچنینی داشت.(میدونم که الان به این چیز ها می خندین ولی زمان خودش کار جالبی بود). بعد از اینکه امکاناتی مانند ajax و promise ها و چند امکان دیگر به زبان جاوا اسکریپت اضافه شد به سرعت دیدیم که تکنولوژی های بسیاری برای زبان جاوااسکریپت ارائه شد که کتابخانه jquery یکی از پیشرفت‌های زبان جاوا اسکریپت بود و بعد از آن هم تکنولوژی های زیادی ارائه شد. در تصویر زیر عکس چند تا از این تکنولوژی ها رو گذاشتیم.

جاوا اسکریپت تکنولوژی

به دلیل ویژگی‌هایی که زبان جاوا اسکریپت دارد این زبان هر روز محبوب‌تر می شود. ولی تا چند سال پیش این زبان فقط بر روی مرورگر و به عنوان رابط کاربری اجرا می‌شد تا اینکه شرکت گوگل یک موتور به نام v8 ارائه داد که می‌توانست جاوااسکریپت را بر روی سرور و خارج از مرورگر اجرا کند و نام تکنولوژی آن node js گذاشته شد. حال با استفاده از node js می‌توانیم کدهای جاوااسکریپت را خارج از مرورگر و برای کارهایی مانند ارتباط با دیتابیس و مدیریت فایل ها و انجام درخواست ها استفاده کنیم.

برای اینکه پکیج های مربوط به node js به خوبی مدیریت شوند package manager ی به نام npm که مخفف node package manager است ارائه شد. Npm خیلی قوی بوده و کتابخانه‌های بسیاری را پشتیبانی می کند. نکته جالب این که حتی شما می‌توانید خود npm را با npm آپدیت و مدیریت کنید. البته اینکه بگیم npm فقط برای node js است امروزه اشتباه است. زیرا که تکنولوژی های دیگری مثل react, angular, … نیز برای مدیریت پکیج های خود از npm استفاده می کنند.

کار با npm

نحوه کار npm می‌تواند به دو صورت باشد. محلی یا سراسری. در روش سراسری وقتی شما بسته ای را نصب می‌کنید آن پکیج بر روی کامپیوتر شما نصب می‌شود و شما می‌توانید هر وقت که خواستید از آن بسته استفاده کنید. البته در سیستم‌هایی مانند لینوکس شما باید برای نصب پکیج ها به صورت سراسری دسترسی root داشته باشید. روش دیگر روش محلی است. روش محلی به این صورت است که بسته هایی را که برای پروژه لازم دارید به صورت محلی برای همان پروژه نصب کنید و اگر برای پروژه دیگری دوباره همان بسته را لازم داشتیم لازم است که آن بسته برای آن پروژه نیز نصب شود.npm برای مدیریت پکیج های محلی یک پروژه از فایلی به نام package.json استفاده می کند. اکثر پکیج ها به صورت محلی نصب می‌شوند ولی بعضی بسته ها مانند خط فرمان angular‌ را بهتر است که به صورت سراسری نصب کنیم که هر جا خواستیم از آن بتوانیم استفاده کنیم.

دستورات معمول کار با npm

قرار نیست که به صورت کامل همه دستورات npm را در این مطلب توضیح دهیم ولی چند تا از دستورات رایج npm را معرفی می‌کنیم که بدانیم چگونه می‌توان از آن‌ها استفاده کرد.

دستور init

وقتی می‌خواهیم یک پروژه را شروع کنیم برای اینکه تنظیمات اولیه و مشخصات پروژه را ثبت کنیم از دستور init استفاده می کنیم. نحوه نوشتن این دستور به شکل زیر است:

npm init

با زدن این دستور npm اطلاعات کلی پروژه را از شما دریافت می‌کند اطلاعاتی مثل

  1. نام پروژه
  2. ورژن
  3. توضیحات
  4. نقطه شروع پروژه
  5. دستور اجرای تست پروژه
  6. ریپازیتوری مربوط به git
  7. کلمات کلیدی پروژه
  8. نویسنده
  9. لایسنس پروژه.

بعد از اینکه اطلاعات پروژه را وارد کردید یک کد json به شما نشان داده می‌شود تا آن را تأیید کنید. در صورت تأیید این کد json به نام فایل package.json برای برنامه شما ذخیره می شود.

دستور install

دستور insall پرکاربرد ترین دستور npm است. با استفاده از این دستور پکیج ها را نصب می کنیم.پکیج ها در یک پوشه در داخل پروژه به نامه node_modules قرار داده می شوند. در مثال زیر پکیج axios را به صورت محلی نصب کرده ایم.

npm install axios --save

دقت کنید که سوییچ save برای این است که پکیج به صورت محلی نصب شود و اطلاعات آن در داخل فایل package.json ذخیره شود. این ذخیره شدن اطلاعات package در فایل package.json مزیای بسیاری دارد. ولی یکی از مهم‌ترین مزیت‌های آن این است حجم پکیج های یک پروژه ممکن است زیاد باشد که در کارهای تیمی ارسال این پکیج ها برای هم تیمی ها کار درستی نیست زیرا حجم و هزینه زیادی را لازم دارد. در عوض شما می‌توانید فایل package.json را بفرستید. با استفاده از این فایل npm می‌تواند همه پکیج ها را دانلود و نصب کند. اگر پروژه های جاوا اسکریپتی را در سایت github.com بررسی کنید می‌بینید که در هیچ کدام از پروژه ها پکیج ها آپلود نشده‌اند و فقط فایل package.json وجود دارد. برای اینکه پکیج های یک پروژه جاوا اسکریپتی را دریافت کنید باید دستور زیر را بزنید

npm install

تا در محل پروژه همه پکیج ها را دریافت کنید.همچنین برای اینکه یک پکیج به صورت سراسری نصب شود باید دستور install را با سوییچ g به کار برد برای مثل دستور زیر typescript را به صورت سراسری نصب می‌کند

npm install typescript -g

دستور update

در داخل پروژه می‌توان این دستور را برای آپدیت کردن ورژن پکیج ها و همچنین اگر تغییری به صورت دستی در فایل pockage.json داده باشید با استفاده از این دستور می‌توانید تغییر مورد نظر را بر روی خود بسته ها اعمال کنید.

دستور list

شاید این سؤال پیش بیاید که پکیج های محلی که درداخل پوشه node_modules ریخته می شوند. ولی پکیج های سراسری کجا ذخیره می شوند. برای اینکه بدانید پکیج های سراسری کجا ذخیره می‌شوند از دستور list استفاده می شود. اگر این دستور را به شکل زیر اجرا کنید محل پکیج های سراسری به شما نشان داده می شود.

npm list -g

بعد از اجرای این دستور در خط اول آدرس پوشه node_modules‌ که پکیج های سراسری در آن نصب شده است را نشان می‌دهد و بعد از آن ساختار درختی پکیج های سراسری را نمایش می‌دهد مانند تصویر زیر

وب سایت توسینسو

با وب سایت tosinso همراه باشید.


مهدی عادلی فر
مهدی عادلی فر

بنیانگذار توسینسو و برنامه نویس

مهدی عادلی، بنیان گذار TOSINSO. کارشناس ارشد نرم افزار کامپیوتر از دانشگاه صنعتی امیرکبیر و #C و جاوا و اندروید کار می کنم. در زمینه های موبایل و وب و ویندوز فعالیت دارم و به طراحی نرم افزار و اصول مهندسی نرم افزار علاقه مندم.

نظرات