کامندهای npm رو جدی بگیرید.

دیشب متوجه یه سوتی خیلی ساده ولی مهم توی Framevuerk شدم. من توی داکیومنت برای یوزر نهایی نوشته بودم که هر وقت کانفیگ پروژه‌ت رو عوض کردی، کامند npm rebuild framevuerk رو اجرا کن تا اسکریپت build فریمویورک دوباره اجرا بشه. و اتفاقا کار هم میکرد و منم دیگه رهاش کرده بودم.

اما چیزی که من بهش میگم سوتی، این بود که وقتی اسکریپت postinstall رو (بخاطر یه دلیل منطقی دیگه که الان نمی‌خوام ازش حرف بزنم) حذف کردم، دیگه کامند npm rebuild framevuerk اجرا نمیشد. رفتم دوباره سرچ کردم که چرا اینجوری شد؟ رسیدم به داکیومنت خود npm که نوشته:

This command runs the npm build command on the matched folders.

اولین چیزی که رسید به ذهنم این بود که برم براشون ایشو بنویسم،‌ اما یکم سرم رو خاروندم و با خودم گفتم بابا این اگه کار نمیکرد که تا الان هزار نفر فهمیده بودن. پروژه‌های بزرگی مثل node-sass همین الان دارن از این کامند استفاده می‌کنن. پس سعی کردم این مشکل رو بندازم گردن خودم و بیشتر بخونم راجع بهش.

در جست‌وجوهای بعدی رسیدم به این جواب. اگر قبلا این موضوع رو نمیدونستید و الان تازه خوندید،‌ احتمالا برای شما هم عجیب باشه:


npm run start === npm start
npm run build !== npm build

من هم انتظار داشتم npm rebuild توی پروژه مقصد، اسکریپت build من رو اجرا کنه، اما یه کار دیگه میکرد و فقط بخاطر postinstall بود که اسکریپت بیلد من دوباره اجرا میشد.


هدفم از نوشتن این پست اشاره به همین موضوع بالا بود، اما اگر مهمه واستون که مشکل رو در نهایت چجوری حل کردم، باید به بخش bin توی فایل package.json اشاره کنم.