InfiTualEr

سوال مرتبط با npm و package json

InfiTualEr ۱۳۹۸/۰۴/۱۶ مباحث عمومی برنامه‌نویسی

یه سوال داشتم. نمیدونم دقت کردین یا نه. من هیچ وقت محتویات پکیج لاک رو نگاه نمی کردم. الان که یه پروژه که مربوط به فریم ورک خاصی نیس (یعنی با ری اکت یا ... درست نشده) ساختم ولی توی این فایل، ورژن پکیجایی که قبلا تو پروژه های دیگه استفاده کردم ذکر شده. من زیاد از npm چیزی نمیدونم. تازه فولدر نود ماژولز هم همیشه پره پره!!

سوالی که دارم اینه که آیا هرچی پکیج داریم و نداریم npm خودکار وارد پروژه جدید میکنه و کاری نداره نیازش داریم یا نه؟

آپدیت

خب مشکل من این بود که هیچ وقت درباره npm مطالعه نکرده بودم و صرفا دستورات رو از وب سایت پکیج موردنظر کپی پیست میکردم. چیزی که فهمیدم رو به اشتراک میذارم شاید به درد یکی مثل خودم بخوره.

تو فایل پکیج جیسون با دو تا آبجکت مختلف رو به رو میشیم:

dependencies

devDependencies

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

حالا اگه فایلای پروژتون بدون فولدر node_modules رو کپی کنید یه فولدر دیگه، مشکلی نخواهید داشت چون تمام ماژول های استفاده شده به همراه ورژنشون، تو package.json ثبت شده. اما ازونجا که فولدر ماژول هارو ندارید، در نتیجه خود پکیج هارو هم ندارید. حالا دو تا دستور مختلف، تو ترمینال، داخل فولدر جدیدتون میتونید بنویسید:

npm install

npm install --production

کاری که دستور اول میکنه، تمام پکیج ها من جمله پکیج های devDependencies که بهش نیاز ندارید رو هم نصب می کنه. که حاصل میشه همون فولدر نود ماژول چند صد مگابایتی که به سنگین ترین شی عالم تشبیه میشه!! اما اگه از پسوند پروداکشن، یعنی دستور دوم استفاده بشه، فقط dependencies ها نصب میشه.

و نکته آخر، اگه react یا vue و ... کار می کنید و از گیت استفاده نمی کنید، صرفا بخاطر فولدر نود ماژولز، داخل فایل gitignore که براتون خودکار ایجاد میشه، ذکر میشه اون فولدر کامیت نشه. در نتیجه وقتی میخواید پروژه رو آپلود کنید تو گیت هاب، به مشکل نمیخورید. اینم تازه فهمیدم متاسفانه.