نصب پکیج های npm به صورت محلی و سراسری

Node Packaged Modules

0 117

پکیج ها در npm

مدیریت پکیج ها در npm
مدیریت پکیج ها در npm

npm می تواند پکیج ها را به صورت local (محلی) یا global (سراسری) نصب کند. در حالت محلی پکیج ها در پوشه ی node_modules (یک پوشه قبل از مسیر اصلی کاری شما) نصب می شوند که متعلق به کاربر فعلی (user) است. در حالت سراسری پکیج ها در /prefix}/lib/node_modules} نصب می شوند که متعلق به root است (در این حالت {prefix} معمولا /usr/ یا /usr/local است).

بنابراین برای نصب پکیج ها به صورت سراسری باید از دستور sudo استفاده کنید که دو مشکل بالقوه دارد: اول آنکه ممکن است هنگام کار با وابستگی های دیگر باعث بروز خطای permission ها شود و دوم آنکه یک نگرانی امنیتی ایجاد کند. پس باید این مشکل را حل کنیم.

تغییر مسیر پکیج های سراسری (global)

ابتدا دستور npm config را وارد کنید. خروجی این دستور به شکل زیر است:

این خروجی اطلاعاتی راجع به عملیات نصب ما ارائه می کند. ما دنبال مکان فعلی نصب سراسری را پیدا کنیم:

این همان پیشوندی است که باید عوض کنیم تا بتوانیم پکیج ها را در دیرکتوری خودمان نصب کنیم. ابتدا یک دیرکتوری جدید در پوشه ی home خود بسازید:

با همین تغییر کوچک در پیکربندی، مکان نصب پکیج های سراسری را تغییر داده ایم. این کار باعث ایجاد یک فایل npmrc. در پوشه ی home نیز می شود.

تا اینجای کار هنوز هم npm در مسیری نصب شده است که به root تعلق دارد اما از آنجا که مسیر نصب پکیج های سراسری را تغییر داده ایم می توانیم کاری برای این مورد نیز انجام بدهیم؛ باید npm را دوباره و این بار در مسیری که متعلق به user است، نصب کنیم. با این کار npm را نیز بروزرسانی کرده ایم.

در آخر هم باید node_modules_global/bin. را به PATH$ در environment variable اضافه کنیم تا بتوانیم پکیج های سراسری را از طریق command line اجرا کنیم. برای این کار باید کد زیر را به profile. یا bash_profile. یا bashrc. اضافه کنید و سپس terminal خود را ریستارت کنید.

حالا node_modules_global/bin. پیدا شده و از نسخه ی درست npm نیز استفاده می شود.

نصب پکیج ها در حالت سراسری (global)

ما در حال حاضر فقط یک پکیج را نصب داریم؛ خود پکیج npm. بنابراین باید پکیج های بیشتری نصب کنیم؛ برای مثال می خواهیم UglifyJS را نصب کنیم (ابزار فشرده سازی جاوا اسکریپت). ابتدا باید از global-- استفاده کنیم که حالت خلاصه اش g- است.

همانطور که از خروجی مشخص است، پکیج های دیگری هم همراه UglifyJS نصب شده اند. در واقع UglifyJS برای انجام کارهایش به آن ها نیاز دارد بنابراین به این پکیج ها dependency یا وابستگی می گوییم.

لیست کردن پکیج های سراسری (global)

برای مشاهده ی لیستی از پکیج های سراسری خود می توانید از دستور npm list استفاده کنید.

این خروجی پر از جزئیات به درد نخور است. اگر بخواهیم فقط لیست پکیج ها را ببینیم باید depth=0-- را نیز اضافه کنیم

حالا بهتر شد! فقط نام پکیج ها و نسخه ی نصب شده را به ما نشان می دهد. هر پکیجی که به صورت سراسری نصب شده باشد با این دستور قابل دسترسی است. به طور مثال اگر فایل جاوا اسکریپتی به نام example.js داشته باشیم و بخواهیم با استفاده از Uglify آن را فشرده و به example.min.js تبدیل کنیم باید دستور خود را به شکل زیر بنویسیم:

نصب پکیج ها به صورت محلی (local)

زمانی که می خواهیم پکیج ها را به صورت محلی نصب کنیم معمولا از فایل package.json استفاده می کنیم. بنابراین باید یک فایل package.json ایجاد کنیم:

کلید Enter را بزنید تا این پیش فرض ها را قبول کنید و سپس با تایپ کردن yes آن را تایید کنید. این کار باعث ساخته شدن یک فایل package.json در root پروژه ی شما (پوشه ی اصلی) می شود.

نکته: اگر می خواهید با روش سریع تری فایل package.json را بسازی،  از دستور npm init --y استفاده کنید.

فیلدهایی که می بینید واضح هستند و نیازی به توضیح ندارند؛ main نقطه ی اصلی ورود به برنامه ی شماست و فیلد scripts نیز به شما اجازه می دهد که اسکریپت های خاصی بنویسید که در مواقع خاصی از زندگی یک پکیج اجرا می شوند. ما فعلا آن ها را نادیده می گیریم اما اگر خواهان اطلاعات بیشتری هستید به اسناد package.json در npm مراجعه کرده و مقالات آن را مطالعه کنید.

ما تصمیم گرفته ایم که برای مثال پکیج Underscore را نصب کنیم:

حواستان باشد که یک فایل lockfile ایجاد شده است. بعدا به سراغ این فایل می آییم.

حالا اگر نگاهی به package.json بیندازیم، فیلد جدیدی به نام dependencies را می بینیم:

در قسمت بعدی به سراغ مدیریت وابستگی ها با استفاده از package.json می رویم و در مورد برخی از ریزه کاری ها (مانند حذف پکیج ها، نصب نسخه ی خاصی از پکیج ها و…) صحبت می کنیم.

ترتیبی که روکسو برای یادگیری مطالب سری آموزش npm به شما توصیه می‌کند:

ارسال نظر

توجه:‌ آدرس ایمیل شما منتشر نخواهد شد.