در قسمت قبل پکیجها را از نظر محدوده نصب بررسی کردیم، اما از نظر زمانی که این پکیجهای نیازمندی مورد استفاده قرار میگیرند و این که حضور یک پکیجِ نیازمندی در کدام بخش از پروژه الزامیست، پنج حالت داریم:
· dependency
· devDependency
· optionalDependency
· peerDependency
· bundledDependency
از آنجا که دو نوع نیازمندی اصلی که معمولاً با آنها سر و کار داریم، انواع dependency و devDependency هستند، در مقاله پیش رو به شرح این دو نوع نیازمندی می پردازیم و سه مورد دیگر را، در مباحث پیشرفته تر بررسی خواهیم کرد.
1. dependency: این که پکیج بعنوان dependency نصب شود، یعنی نیازمندی معمولی پروژه (وقتی پکیجی را در حالت معمولی نصب میکنیم، یعنی دستور npm install --save
را برای آن اجرا میکنیم، پکیج بعنوان dependency نصب میشود). این نوع نیازمندیها در محصول نهایی(production mode) مورد نیاز هستند و باید حضور داشته باشند. یا به عبارت دیگر پروژه در runtime به آنها نیاز دارد. بعنوان مثال اگر پروژهمان از پکیجهایی چون react، redux، express، axios و ... استفاده میکند، باید آنها را بصورت dependency نصب کرد.
2. devDependency: این که پکیج بعنوان devDependancy نصب شود، یعنی بعنوان نیازمندی زمان توسعه (پکیج را با اجرای دستور npm install --save-dev
نصب کنیم). این نوع نیازمندیها صرفاً در زمان دولوپ کاربرد دارند. مثلاً ابزارهای تست، transpiler ها و ... از جمله پکیجهایی هستند که در زمان توسعه مورد نیازند، ولی موقع استفاده کاربر نهایی پکیج کاربردی ندارند. از این رو موارد این چنینی در قسمت devDependencies نصب میشوند. بصورت پیشفرض وقتی دستور npm install
را در دایرکتوری اصلی پروژهای میزنیم، نیازمندیهای زمان توسعه نصب میشوند، ولی اگر گزینه p-
را نیز در کنار آن استفاده کنیم (npm install -p
) دیگر devDependencies نصب نخواهند شد. بعنوان مثال اگر بخواهیم در پروژهمان از پکیجهایی چون nodemon، babel، ESLint، Mocha، Enzyme و ... استفاده کنیم، بهتر است آنها را بصورت devDependency نصب کنیم.
اگر در مورد انواع مختلف نیازمندی ها در npm سؤالی داشتید، یا نظری دارید که باعث پیشرفت مقالات سکان آکادمیخواهد شد، حتماً آن ها را در قسمت نظرات با ما در میان بگذارید. علاوه بر این در قسمت تالار گفتگو، کارشناسان و همراهان سکان آکادمی می توانند پاسخگوی پرسش های شما باشند.
در قسمت بعدی از سری مقالات آموزش npm، به مبحث نسخه بندی در npm می پردازیم و یاد می گیریم که علامت های مختلفی که در تعیین شماره نسخه پکیج ها به کار می روند چه معنایی دارند.