قبلا در مطلبی با عنوان شروع استفاده از Gulp به فایل package.json اشاره کردیم.
زمانی که شما NodeJS را بر روی سیستم خود نصب می کنید، npm یا همان پکیج منیجر نود هم همراه با آن نصب می شود. حالا بوسیله فایل package.json در پروژه شما می توانید نام پروژه هایی NodeJSای که در پروژه خود استفاده کرده اید را وارد نموده تا پس از اجرای دستور npm install آنها نصب شوند. بطور مثال پروژه هایی مثل Grunt, Gulp, Mocha, JSHint و … بر مبنای NodeJS نوشته شده و می توانید آن ها را طریق همین فایل نصب کنید.
اما فایده این کار چیه؟
– این روزها معمولا بیش از یک نفر به صورت همزمان بر روی یک پروژه کار می کنند بنابراین شما نیاز دارید مطمئن باشید که تمامی اشخاص از یک ساختار یکسان و صحیح استفاده می کنند. این فایل وظایفی همچون نصب پروژه های مورد نیاز و بروزرسانی پروژه های تعریف شده را به خوبی انجام می دهد.
– حالا فرض کنید افرادی که روی یک پروژه کار می کنند از سیستم عامل های مختلف مثل ویندوز، مک و لینوکس استفاده می کنند. فایل هایی که توسط NodeJS نصب می شود می تواند براساس سیستم عامل متفاوت باشد. بنابراین شما نمی توانید صرفا با کپی کردن فایل های این پروژه ها و به اشتراک گذاشتن بین دیگر اعضای تیم از آن ها استفاده کنید. به طور خلاصه اینکه فایل ها باید توسط کاربر در همان سیستم نصب شود.
– پوشه node_modules که حاوی فایل های مربوط به NodeJS در پروژه هست، ساختاری شلوغ و پیچیده دارد اما با داشتن یک فایل package.json نیازی به سرکشی به این پوشه نیست.
موارد بالا به همراه کلی موارد کوچک و بزرگ دیگر دلایلی هستند که پروژه شما نیاز به یک فایل package.json دارد. خب حالا چطور این فایل را ایجاد کنیم؟
راه اول: دستور npm init که در این مطلب به آن اشاره کردیم و بوسیله آن طی چند مرحله ساده می توانید آن را ایجاد کنید.
راه دوم: ایجاد فایل package.json به صورت دستی. شما می توانید یک فایل با این نام در root پروژه خود ایجاد نموده و براساس استاندارد هایی که در این صفحه شرح داده شده است آن را پر کنید و از آن استفاده نمائید.
در زیر به بخش هایی از این فایل که اهمیت زیادی دارند اشاره می کنم:
name
نام پروژه خود را در این قسمت باید وارد کنید. توجه داشته باشید که نام پروژه نباید دارای فاصله ویا حروف فارسی و کاراکترهای خاص باشد. همچنین نام مورد نظر شما نباید شامل کلمه های js یا node باشد.
version
نام پروژه و version آن مهمترین بخش فایل package.json شما می باشد و بدون آن ها این فایل غیر قابل استفاده خواهد بود. نسخه ای که برای پروژه خود قرار می دهید باید از استاندارد SemVer پیروی کنند که قبلا در اینجا در مورد آن توضیح داده شده است.
license
لایسنس پروژه را می توانید در این قسمت وارد نمائید. برای این کار می توانید از نام خلاصه شده لایسنس های موجود که در این آدرس در دسترس است، استفاده نمائید.
devdependencies
در این بخش می توانید لیست پروژه هایی که می خواهید آن ها را نصب کنید وارد نمائید.
engines
در این بخش هم می توانید نسخه nodeای که نیاز دارید را مشخص کنید تا از کارکرد صحیح آن اطمینان داشته باشید.
* موارد زیاد دیگر نیز برای وارد کردن در این فایل وجود دارد که می توانید لیست کامل آن ها را همراه با توضیحات در این آدرس مطالعه کنید. همچنین در این آدرس نیز راهنمای بسیار ساده و مناسبی جهت آشنایی بیشتر با این فایل وجود دارد.
در زیر یک نمونه از محتویات فایل package.json را مشاهده می کنید:
{
"name": "navid-kashani",
"version": "0.8.0",
"author": "Navid Kashani <navid.kashani@gmail.com>",
"homepage": "http://navid.kashani.ir",
"repository": {
"type": "git",
"url": "https://github.com/navidkashani/jekyll-test.git"
},
"bugs": {
"url": "https://github.com/navidkashani/jekyll-test/issues"
},
"licenses": [
{
"type": "MIT",
"url": "http://opensource.org/licenses/MIT"
}
],
"engines": {
"node": ">= 0.10.0"
},
"devDependencies": {
"bower": "^1.3.12",
"browser-sync": "^1.7.1",
"gulp": "^3.8.10",
"gulp-concat": "^2.4.1",
"gulp-jshint": "^1.9.0",
"gulp-minify-css": "^0.3.11",
"gulp-mocha": "^2.0.0",
"gulp-rename": "^1.2.0",
"gulp-sass": "^1.2.3",
"gulp-uglify": "^1.0.1",
"gulp-watch": "^1.2.0",
"gulp-zip": "^2.0.2",
"jshint-stylish": "^1.0.0"
}
}
نام این پروژه navid-kashani و نسخه آن 0.8.0 می باشد و در ادامه اطلاعاتی در مورد نویسنده پروژه، صفحه پروژه، اطلاعات مربوط به مخزن گیت و آدرس درج ایرادات برنامه، لایسنس پروژه، حداقل نسخه NodeJS مورد نیاز برای اجرا و لیست پروژه های مورد نیاز همراه با نسخه آن ها داده شده است.
حالا کافیست برای نصب این پروژه ها دستور npm install
را اجرا کنید.
دیگر نکات:
* در سایت npm می توانید پروژه های مورد نظر خود را یافته و اطلاعات مناسبی در رابطه با هر پروژه کسب کنید (در حال حاضر بیش از 113 هزار پروژه در این وب سایت ثبت شده است و می توانید از آن ها استفاده نمائید).
* در این آدرس می توانید محتویات فایل package.json خود را وارد نموده و آن را ارزیابی کنید.
* اگر از Git استفاده می کنید حتما پوشه node_modules را در فایل .gitignore قرار دهید. در زیر موارد پیشنهادی برای قرارگیری در فایل .gitignore هنگام استفاده از NodeJS را مشاهده می کنید (منبع):
# Logs
logs
*.log
# Runtime data
pids
*.pid
*.seed
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# node-waf configuration
.lock-wscript
# Compiled binary addons (http://nodejs.org/api/addons.html)
build/Release
# Dependency directory
# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git-
node_modules
جهت آشنایی بیشتر با این فایل مطلب حذف فایل های اضافه در پروژه بوسیله Git را مطالعه کنید.