npm چیست و چه ارتباطی با Node.js دارد؟
منظور از پکیج، ماژولها یا کتابخانه و یا فریمورک هاییست که در اینجا به زبان JavaScript نوشته شدهاند و البته در پلتفرمهای دیگر به زبانهای دیگر! حالا منظور از مدیریت پکیج این است که مثلا شما قصد دارید تا از جیکوئری، express یا socket.io که قبلا نوشته شدهاند استفاده کنید. بدین منظور با نوشتن یک کد ساده در npm، پکیجهایی که میخواهید در پروژه استفاده کنید را از ایترنت و از مخزن npm دریافت کرده و درون پروژهی خود قرار میدهید. و خب البته چندین دستور دیگر نیز برای مدیریت این پکیجها در اختیار ما قرار گرفته است که در آینده با آنها آشنا خواهیم شد.
نصب npm
نیازی نیست تا npm را به صورت جدا نصب کنید! چرا که به هنگام نصب Node.js، به صورت خودکار npm نیز به همراه آن نصب میشود.
بنابراین برای نصب npm، پست “آموزش نصب و راه اندازی Node.js و ساخت یک پروژه در Node.js” را مطالعه کنید.
بعد از اینکه node.js را نصب کردید، وارد CMD شده و دستور زیر را بنویسید:
npm -v
در صورتی که عملیات نصب به درستی انجام گرفته باشد، ورژن npm مثل “5.6.0” نمایش داده میشود.
مقداردهی اولیه
وقتی با استفاده از CMD در مسیر پروژهی Node.js خود قرار دارید، اولین کاری که بهتر است انجام دهید این است که دستور زیر را قبل از هرچیزی درون CMD بنویسد:
npm init
بعد از اجرای این دستور، بایستی مشخصات پروژهی خود را وارد کنید که npm در پایان، یک فایل به نام package.json را داخل پروژهی شما ایجاد خواهد کرد. محتوای این فایل به فرمت json نوشته میشود. npm به ترتیب از شما اطلاعات زیر را میخواهد تا وارد کنید و سپس Enter را بزنید:
آنچیزهایی که مقابلشان پارانتز باز کرده و مقداری نوشته است، یعنی در صورتی که خالی رها کرده و Enter را بزنید، آن مقدار داخل پارانتز درونشان قرار خواهد گرفت.
و در نهایت بعد از این که همهی اطلاعات را وارد کردید، از شما میخواهد که عملیات را تایید کنید.
ویژگی dependencies
این ویژگی، بعد از مقداردهی اولیه، درون package.json وجود ندارد! اما بهتر است که شما آن را به صورت دستی ایجاد کنید. در حقیقت در این ویژگی، وابستگیهای پروژهی شما قرار میگیرند؛ یعنی هر پکیجی که پروژهی شما به آن نیاز دارد! اما چه کابردی دارد؟ در ادامه خواهیم گفت.
برای مثال:
{ "name": "fullkade", "version": "1.0.0", "description": "FuLLKade Sample Project", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "Hadi Akbarzadeh", "license": "ISC", "dependencies": { "socket.io": "*", "express": "*" } }
همانطور که میبینید، به صورت دستی، دو وابستگی اضافه کرده و با علامت * گفته ایم که ورژن آخر آن ها را میخواهیم! اما هیچوقت از این علامت استفاده نکنید و همیشه ورژن را بنویسید. چرا که بعدا ممکن است آپدیت جدیدی ارائه شود و با گرفتن آن، کل پروژه خراب شود! و با مشخص کردن ورژن دقیق، شما مطمئن خواهید بود که از کدام ورژن در حال استفاده هستید. البته این برای پیشگیری است وگرنه بعید است چنین مشکلاتی پیش بیاید و یک آپدیت خراب روانهی بازار شود. اما پیشگیری بهتر از باگ گیریست! 😀
نصب پکیج
NPM میتواند پکیجها را هم به صورت Local، یعنی داخل پروژه و هم به صورت Global نصب کند که در حالت Global پکیجها در جایی عمومی از سیسیتم عاملتان نصب میشوند تا در هنگام استفاده از آنها در پروژههای دیگر، نیازی به دریافت دوبارهی آنها نباشد. ولی اگر به صورت local نصب شوند، درون پروژه یک پوشه به نام node_modules ساحته خواهد شد که پکیجها درون آن قرار میگیرند.
برای نصب پکیجها، از دستور زیر استفاده میشود:
npm install
وقتی این دستور را بنوسید، مواردی که در dependencies ذکر شده اند، نصب خواهند شد. حالا کاربرد dependencies کمی مشخصتر شد.
دستور بالا میتواند شامل ورودی و تنظیماتی نیز باشد که آنها را شرح میدهیم.
همانطور که میبینید، در دستور بالا، dependencies ها نصب میشوند؛ اما ما میتوانیم به صورت مستقیم، نام پکیج را به صورت زیر ذکر کنیم:
npm install PACKAGE_NAME مثال npm install express
با این حال دیگر نیازی به این نخواهد بود که نام در dependencies قرار دارد یا خیر! بلکه این dependencies برای این است که مشخص کنیم پروژه به چه چیزهایی وابسته است تا درصورتی که آنها حذف شد یا پروژه را به جای یگری انتقال دادیم، بتوانیم آنها را تنها با نوشتن دستور نصب به صورت خودکار دریافت کنیم و نیازی به نوشتن نام تک تکشان نباشد و ممکن است حتی نامشان را هم به خاطر نیاوریم.
- دستور بالا نیز آخرین ورژن پکیج وارد شده را دریافت میکند و میتوانید با نوشتن یک @ بعد از نام پکیج و سپس نوشتن ورژن آن، اقدام به دریافت ورژن مورد نظر خود کنید.
- اگر در انتهای دستور نصب، عبارت –save را نیز اضافه کنید، آن پکیج، به dependencies اضافه خواهد شد ولی اگر عبارت –no-save را اضافه کنید، به صورت موقت نصب خواهد شد.
- اگر در انتهای دستور نصب، عبارت -g را نیز اضافه کنید، به صورت Global نصب خواهد شد و در غیر این صورت، به صورت Local نصب میشود.
سلام
یک سوال تفاوت بین –save-dev با –save چیه؟
زمان استفاده از دستور dev، پکیج با هدف توسعه استفاده میشه اما بدون dev پکیج برای اجرای برنامه ضروری میشه.
با تشکر از پاسخ دهی شما.
لطفا در مورد ماژول هایی که به صورت devDependencies نصب می کنیم مثال بزنید.
مثال های برنامه های ساخته شده در نود یا فریم ورک های دیگه ی نود (الکترون و …)
تجربه خودم: در فریم ورک الکترون می توانیم ماژول الکترون را به صورت devDependencies نصب کنیم.
حال اگر کسی ماژول دیگه ایی هم سراغ دارد لطفا بگوید.
مطلب جدید «npm –save یا –save-dev ؟! کدام یک را استفاده کنیم؟!» رو مطالعه کنید.
من نفهمیدم چه طوری مشخص کنیم Npm برای کدوم پروژه ما نصب میشه . مثلا من میرم توی پی اچ پی استورم و شروع میکنم کدنویسی جاوااسکریپت اونجا بخوام از npm استفاده کنم چه جوری میشه؟
برای استفاده از NPM جهت نصب پکیج و … نیازی به محیط توسعه نیست و از CMD استفاده میکنیم.
یعنی من یک بار نصب میکنم و در هر پروژه ایی که بخوام شروع کنم اون خودش هست؟
اگه منظورتون خود NodeJS عه که خب شما نرم افزارشو نصب میکنین و دستوراتش به CMD اضافه میشه و تا وقتی نرم افزار رو سیستمون باشه تو هر پروژهای فابل استفادس.
ولی اگه منظورتون نصب پکیجا هستش که بستگی به نصب سراسری یا مختص فقط همون پروژه داره. اگه به صورت سراسری نصب شه بعدا که میخواین دانلود کنین اگه اون ورژن پکیج درخواستیتون تو سیستمتون وجود داشته باشه دیگه دانلود نمیشه.
سلام ممنونم از مقاله خوبتون فقط یک سوال npm فقط برای node.js بکار میره یا نه چون من در طراحی سایت هم خواستم استفاده کنم تو قسمت جاوا اسکیریپتش ولی جواب نداد باتشکرو
سلام. NPM همونطور که گفته شد، Package Manager نود جی اسه و خارج از اون کار نمیکنه و قلق خودشو داره. منظورتونو از ینکه میگین ازش برای طراحی سایت استفاده کردینو دقیقا متوجه نمیشم؛ ولی خب میتونین از مواردی مثل تکنولوژی ReactJS که ازش برای طراحی سایت استفاده میشه و با استفاده از این ابزار و برروی NodeJS مدیریت، نگهداری و اجرا میشه، استفاده کنین.
ممنونم ازتون پس npm فقط برای node.js هست