اگر تا به حال با یک پروژه node.js
یا ری اکت کار کرده اید، احتمالا با فایل package.json
مواجه شده اید. این فایل که بی سر و صدا در ریشه شما قرار دارد اما اجازه ندهید اندازه خودتون شما را فریب دهد این یکی از مهم ترین بخش های هر پروژه JavaScript/TypeScript است.
فایل package.json
مانند طرح اولیه پروژه عمل میکنه و وابستگی ها،نسخه،اسکریپت ها و سایر ابر داده ها را تعریف میکنه. به عبارت دیگر می توان گفت این چیزی است که پروژه شما را قابل مدیریت، اشتراک گذاری و مقیاس پذیر می کند.
در این مقاله از آنوفل می خواهیم درباره جزئیات package.json
رو بررسی کنم. و همه چیزهایی که باید در مورد آن بدانید، از ساختار و زمینه های آن گرفته تا نکات عملی برای استفاده مؤثر از آن، رو پوشش خواهیم داد.
آنچه را پوشش خواهیم داد:
1.package.json چیست؟
2.فیلد های هسته در package.json
3.مدیریت وابستگی ها
4.اسکریپت ها:خودکار سازی وظایف با سهولت
5.نسخه در package.json
6.زمینه های اضافی و بهترین شیوه ها
1.package.json چیست؟
در node.js، وpackage.json یک فایل JSON هست که اطلاعات مهم پروژه شما را ذخیره می کند. به عنوان یه نقشه برای Node و npm عمل میکند. (Node Package Manger)، می توان گفت که پروژه شما چیست؟ به چه وابستگی هایی نیاز داره، چگونه باید اجرا بشه و موارد دیگر…
در اصل، این مرجع برای هر برنامه یا کتابخانه Node است.
package.json
را به عنوان کارت شناسایی پروژه خود تصور کنید: نام پروژه،نسخه،توضیحات و هر آنچه برای نصب، اجرا و نگهداری پروژه لازم است رو مشخص میکند.
2.فیلد های هسته در package.json
بیایید به برخی از فیلد های ضروری در package.json نگاه کنیم:
- ●name: نام پروژه شما، که اگر قصد دارید آن را در npm منتشر کنید، باید منحصر به فرد باشه.
- ●version: نسخه فعلی پروژه شما را مشخص میکند. این به دنبال نسخه سازی معنایی است (به عنوان مثال 1.1.0)
- ●description: شرح مختصری از پروژه شما که به دیگران کمک میکند تا هدف آن را درک کنند.
- ●main: نقطه ورود برنامه شما را مشخص میکند،معمولا فایلی مانند
index.js
. - ●author: نام شما یا نام سازمان شما.
- ●license: شرایط مجوز پروژه شما را مشخص میکند، مانند GPL،MIT یا اختصاصی
- نمونه ای از این فیلدهای اصلی:
{ "name": "my-first-project", "version": "1.1.0", "description": "a-basic-node.js-project", "main": "index.js", "author": "your name", "license": "mit" }
این فیلدها یک دید فوری سریع از آنچه پروژه شما در مورد آن است، چه کسی آن را ایجاد کرده است و چگونه مجوز آن را دریافت میکند، ارائه میدهد.
برای آشنایی با زبان Golang و بررسی تخصصی این زبان این مقاله را بررسی کنید.
3.مدیریت وابستگی ها
وابستگی ها یا کتابخانه ها یا بسته های خارجی هستند که پروژه شما برای عملکرد به آن نیاز دارد. با package.json
، میتونید به راحتی وابستگی ها را اضافه،حذف یا به روزرسانی کنید و پروژه خود را با دیگران به اشتراک بگذارید بدون اینکه همه آن کتابخانه ها را در پایگاه کد قرار دهید.
انواع وابستگی ها در package.json
●dependencies: این موارد برای اجرای برنامه شما لازم است. برای مثال، اگر در حال ساختن API هستید، express ممکن است یک وابستگی باشد.
●devdependencies: اینها فقط در طول توسعه مورد نیاز هستند. به عنوان مثال، یک کتابخانه آزمایشی مانند mocha میتواند در اینجا فهرست شود.
برای نصب یک وابستگی با دستور:
npm install express
برای ذخیره آن به عنوان یک وابستگی توسعه:
npm install mocha --save-dev
package.json
به طور خودکار به وابستگی های جدید اضافه میشود و به روز میشود:
{
"dependencies": {
"express": "^4.17.1"
},
"devdependencies": {
"mocha" "^8.2.1"
}
}
برای آشنایی با Bootstrap و TailwindCSS و مقایسه این دو، این مقاله را بررسی کنید.
مهم ترین هوک ها در React/Next.js در سال 2024
4.اسکریپت ها:خودکار سازی وظایف با سهولت
یکی از کاربردی ترین ویژگی های package.json
فیلد اسکریپت است. scripts
ها به شما این امکان را میدهند که کارهای معمولی مانند راه اندازی سرور، اجرای تست ها یا ساخت پروژه را خودکار کنید.
در اینجا یک مثال نوشته شده است:
"scripts": {
"start": "node index.js",
"test": "mocha tests.js"
}
اکنون، به جای اینکه هر بار که میخواهید سرور را راه اندازی کنید، node index.js
را تایپ کنید، میتونید به سادگی اجرا کنید:
npm start
به همین ترتیب، اجرای npm test
دستور تست تعریف نشده در اسکریپت ها را فعال میکند. اسکریپت ها جریان های کاری توسعه را سریع تر و منظم تر میکنند.
برای آشنایی با RTK Query این مقاله را از دست ندهید.
برای آشنایی با Git و این که چرا هر توسعه دهنده ای به آن نیاز دارد این مقاله را بررسی کنید.
5.نسخه در package.json
فیلد نسخه در package.json
از Semantic Versioning یا (SemVer) استفاده میکند. که شماره نسخه ها را در قالب major.minor.patch
تعریف میکند.
●major
: برای تغییرات API ناسازگار افزایش یافته است.
●minor
: برای ویژگی های جدید سازگار با عقب افزایش یافته است
●patch
: برای رفع اشکال سازگار با عقب افزایش یافته است.
به عنوان مثال، تغییر 1.0.0
به 1.1.0
به روزرسانی جزئی با ویژگی های جدید را نشان میدهد، درحالی که 2.0.0
به معنای شکستن تغییرات است.
هنگام مدیریت وابستگی ها، ممکن است نماد های نسخه مانند ^
و ~
را مشاهده کنید:
●^: به روزرسانی ها را برای آخرین نسخه جزئی یا patch اجازه میدهد.
●~: فقط به روززسانی های آخرین patch را مجاز میکند.
این نماد ها به روز نگه داشتن وابستگی ها بدون ایجاد تغییرات غیر منتظره کمک میکنند.
6.زمینه های اضافی و بهترین شیوه ها
جدا از فیلد های اصلی، package.json میتواند فیلد های اختیاری مانند:
●keyword: مجموعه ای از کلمات کلیدی برای کمک به افراد برای کشف پروژه شما.
●repository: پیوندهایی به مخزن کد منبع پروژه.
●bugs:ا URL ردیابی مشکل را ارائه میدهد.
●homepage: آدرس صفحه اصلی پروژه.
مثال:
{
"keyword": ["node", "express", "api"],
"repository": {
"type": "git",
"url": "https://github.com/yourusername/your-repo.git"
},
"bugs": {
"url": "https://github.com/yourusername/your-repo/issues"
}'
"homepage": "https://yourprojecthomepage.com"
}
این فیلدها یافتن و درک پروژه شما را برای کاربران آسان تر میکند.
نتیجه
فایل package.json
مدیر وابستگی است. این پایه و اساس هر پروژه node.js است و فقط در پروژه های Node.js فایل Package.json مهم نیست در پروژه هایی که با جاوااسکریپت یا تایپ اسکریپت هستند نیز به همین صورت اهمیت دارد.. این ساختار، وابستگی ها، نسخه سازی، اسکریپت ها و ابر داده های پروژه شما را تعریف میکند. با یک package.json
که به خوبی نگهداری میشود،مدیریت، اشتراک گذاری و همکاری پروژه شما آسان تر میشود.
درک package.json
برای هر توسعه دهنده Node.js ضروری است، چه درحال ساخت پروژه های کوچک یا برنامه های پیچیده باشید. امیدواریم که این راهنما آن را ابهام زدایی کرده باشد و به شما این اطمینان را داده است که از آن پروژه های خود استفاده کنید. package.json رو به عنوان کارت شناسایی پروژه خودتون تصور کنید: نام پروژه،نسخه،توضیحات،و هر آنچه برای نصب، اجرا و نگهداری پروژه لازم است را مشخص میکند.