افزونهٔ ESLint برای لینت package.json
خلاصهٔ کاملتر
سیندره سوروس پلاگین تازهای به اسم eslint-package-json منتشر کرده که کارش لینتکردن و اصلاح خودکار فایلهای package.json از داخل خود ESLint ـه. زیرساختش @eslint/json ـه، یعنی زبان رسمی JSON خود ESLint، بدون هیچ لایهٔ سازگاری پارسر وسط. نصبش بهعنوان devDependency انجام میشه و طبق مستندات، ESLint نسخهٔ ۱۰.۴ به بالا، flat config و پروژهٔ ESM لازم داره.
به گفتهٔ نویسنده، پلاگین دنبال اشتباههای واقعیه نه سلیقهای: نام نامعتبر پکیج، رنج نسخهٔ اشتباه، exports خراب، بستهٔ types بدون وابستگی متناظر، ورودیهای اضافی توی files، هوکهای pre و post بدون اسکریپت اصلی، و وابستگیهایی که اسم ماژولهای داخلی Node رو سایه میندازن. بخش خوبی از اینها با --fix خودکار اصلاح میشن و بقیه بهشکل suggestion توی ادیتور میان.
راهاندازیش یه بلوک ساده توی eslint.config.js ـه. دو پریست داره: recommended که فقط قوانین کممناقشه رو روشن میکنه، و all که همهچیز رو فعال میکنه و بیشتر برای کشف قوانین بهدرد میخوره تا استفادهٔ روزمره:
import {defineConfig} from 'eslint/config';
import packageJson from 'eslint-package-json';
export default defineConfig({
files: ['**/package.json'],
plugins: {'package-json': packageJson},
extends: ['package-json/recommended']
});نویسنده توضیح میده چرا با وجود eslint-plugin-package-json این یکی رو ساخته: طراحی متفاوت. بهجای دهها قانون تقریباً یکسان — یکی برای هر فیلد یا هر گروه وابستگی — چند قانون کم ولی گزینهدار؛ مثلاً یه dependency-version-range با گزینهٔ dependencyTypes جای کل خانوادهٔ قوانین caret و tilde. اصل سومش هم autofix-first ـه: هر قانونی که بتونه امن اصلاح کنه، اصلاح میکنه.
یه محدودیت عملی هم هست که خوبه بدونین: چون package.json باید JSON معتبر بمونه، کامنت و در نتیجه دستور disable داخل فایل جا نمیشه. خاموشکردن یه قانون فقط از طریق eslint.config.js انجام میشه، و اگه میخواین فقط برای یه پکیج خاص خاموش باشه باید الگوی files دقیقتری بنویسین.
نکات کلیدی:
- لینت و اصلاح خودکار package.json از داخل ESLint
- ساختهشده روی @eslint/json، بدون لایهٔ سازگاری پارسر
- نیازمند ESLint نسخهٔ ۱۰.۴ به بالا، flat config و ESM
- دو پریست: recommended برای خطاهای واقعی و all برای کشف قوانین
- فلسفهٔ طراحی: قوانین کم و گزینهدار، با اولویت autofix




