file-size
Flags a file over the standards line cap.
Deterministic checkAdvises by default
Why this rule
Files stay under ~250 lines (~300 for .tsx — JSX and props interfaces earn the slack) — approaching the cap signals a split or graduation. React components and hooks have their own thresholds (see the react patterns doc when it applies).
The cap exempts an index file in any source dialect — index.tsx included — because a package's entry is its public API, which cannot take the remedy a size finding asks for.
Examples
The check flags the incorrect code and passes the correct code. Each example is a small repo, because this rule looks across files. It opens on the file that matters; the other files are the repo around it.
Incorrect
srccatalog
interface CatalogEntry {sku: string;label: string;price: number;}// The whole catalog in one file: past the cap, and the signal that the concept// has grown into a module with a boundary of its own.export const catalogEntries: CatalogEntry[] = [{ sku: 'sku-001', label: 'Catalog entry 001', price: 100 },{ sku: 'sku-002', label: 'Catalog entry 002', price: 105 },{ sku: 'sku-003', label: 'Catalog entry 003', price: 110 },{ sku: 'sku-004', label: 'Catalog entry 004', price: 115 },{ sku: 'sku-005', label: 'Catalog entry 005', price: 120 },{ sku: 'sku-006', label: 'Catalog entry 006', price: 125 },{ sku: 'sku-007', label: 'Catalog entry 007', price: 130 },{ sku: 'sku-008', label: 'Catalog entry 008', price: 135 },{ sku: 'sku-009', label: 'Catalog entry 009', price: 140 },{ sku: 'sku-010', label: 'Catalog entry 010', price: 145 },{ sku: 'sku-011', label: 'Catalog entry 011', price: 150 },{ sku: 'sku-012', label: 'Catalog entry 012', price: 155 },{ sku: 'sku-013', label: 'Catalog entry 013', price: 160 },{ sku: 'sku-014', label: 'Catalog entry 014', price: 165 },{ sku: 'sku-015', label: 'Catalog entry 015', price: 170 },{ sku: 'sku-016', label: 'Catalog entry 016', price: 175 },{ sku: 'sku-017', label: 'Catalog entry 017', price: 180 },{ sku: 'sku-018', label: 'Catalog entry 018', price: 185 },{ sku: 'sku-019', label: 'Catalog entry 019', price: 190 },{ sku: 'sku-020', label: 'Catalog entry 020', price: 195 },{ sku: 'sku-021', label: 'Catalog entry 021', price: 200 },{ sku: 'sku-022', label: 'Catalog entry 022', price: 205 },{ sku: 'sku-023', label: 'Catalog entry 023', price: 210 },{ sku: 'sku-024', label: 'Catalog entry 024', price: 215 },{ sku: 'sku-025', label: 'Catalog entry 025', price: 220 },{ sku: 'sku-026', label: 'Catalog entry 026', price: 225 },{ sku: 'sku-027', label: 'Catalog entry 027', price: 230 },{ sku: 'sku-028', label: 'Catalog entry 028', price: 235 },{ sku: 'sku-029', label: 'Catalog entry 029', price: 240 },{ sku: 'sku-030', label: 'Catalog entry 030', price: 245 },{ sku: 'sku-031', label: 'Catalog entry 031', price: 250 },{ sku: 'sku-032', label: 'Catalog entry 032', price: 255 },{ sku: 'sku-033', label: 'Catalog entry 033', price: 260 },{ sku: 'sku-034', label: 'Catalog entry 034', price: 265 },{ sku: 'sku-035', label: 'Catalog entry 035', price: 270 },{ sku: 'sku-036', label: 'Catalog entry 036', price: 275 },{ sku: 'sku-037', label: 'Catalog entry 037', price: 280 },{ sku: 'sku-038', label: 'Catalog entry 038', price: 285 },{ sku: 'sku-039', label: 'Catalog entry 039', price: 290 },{ sku: 'sku-040', label: 'Catalog entry 040', price: 295 },{ sku: 'sku-041', label: 'Catalog entry 041', price: 300 },{ sku: 'sku-042', label: 'Catalog entry 042', price: 305 },{ sku: 'sku-043', label: 'Catalog entry 043', price: 310 },{ sku: 'sku-044', label: 'Catalog entry 044', price: 315 },{ sku: 'sku-045', label: 'Catalog entry 045', price: 320 },{ sku: 'sku-046', label: 'Catalog entry 046', price: 325 },{ sku: 'sku-047', label: 'Catalog entry 047', price: 330 },{ sku: 'sku-048', label: 'Catalog entry 048', price: 335 },{ sku: 'sku-049', label: 'Catalog entry 049', price: 340 },{ sku: 'sku-050', label: 'Catalog entry 050', price: 345 },{ sku: 'sku-051', label: 'Catalog entry 051', price: 350 },{ sku: 'sku-052', label: 'Catalog entry 052', price: 355 },{ sku: 'sku-053', label: 'Catalog entry 053', price: 360 },{ sku: 'sku-054', label: 'Catalog entry 054', price: 365 },{ sku: 'sku-055', label: 'Catalog entry 055', price: 370 },{ sku: 'sku-056', label: 'Catalog entry 056', price: 375 },{ sku: 'sku-057', label: 'Catalog entry 057', price: 380 },{ sku: 'sku-058', label: 'Catalog entry 058', price: 385 },{ sku: 'sku-059', label: 'Catalog entry 059', price: 390 },{ sku: 'sku-060', label: 'Catalog entry 060', price: 395 },{ sku: 'sku-061', label: 'Catalog entry 061', price: 400 },{ sku: 'sku-062', label: 'Catalog entry 062', price: 405 },{ sku: 'sku-063', label: 'Catalog entry 063', price: 410 },{ sku: 'sku-064', label: 'Catalog entry 064', price: 415 },{ sku: 'sku-065', label: 'Catalog entry 065', price: 420 },{ sku: 'sku-066', label: 'Catalog entry 066', price: 425 },{ sku: 'sku-067', label: 'Catalog entry 067', price: 430 },{ sku: 'sku-068', label: 'Catalog entry 068', price: 435 },{ sku: 'sku-069', label: 'Catalog entry 069', price: 440 },{ sku: 'sku-070', label: 'Catalog entry 070', price: 445 },{ sku: 'sku-071', label: 'Catalog entry 071', price: 450 },{ sku: 'sku-072', label: 'Catalog entry 072', price: 455 },{ sku: 'sku-073', label: 'Catalog entry 073', price: 460 },{ sku: 'sku-074', label: 'Catalog entry 074', price: 465 },{ sku: 'sku-075', label: 'Catalog entry 075', price: 470 },{ sku: 'sku-076', label: 'Catalog entry 076', price: 475 },{ sku: 'sku-077', label: 'Catalog entry 077', price: 480 },{ sku: 'sku-078', label: 'Catalog entry 078', price: 485 },{ sku: 'sku-079', label: 'Catalog entry 079', price: 490 },{ sku: 'sku-080', label: 'Catalog entry 080', price: 495 },{ sku: 'sku-081', label: 'Catalog entry 081', price: 500 },{ sku: 'sku-082', label: 'Catalog entry 082', price: 505 },{ sku: 'sku-083', label: 'Catalog entry 083', price: 510 },{ sku: 'sku-084', label: 'Catalog entry 084', price: 515 },{ sku: 'sku-085', label: 'Catalog entry 085', price: 520 },{ sku: 'sku-086', label: 'Catalog entry 086', price: 525 },{ sku: 'sku-087', label: 'Catalog entry 087', price: 530 },{ sku: 'sku-088', label: 'Catalog entry 088', price: 535 },{ sku: 'sku-089', label: 'Catalog entry 089', price: 540 },{ sku: 'sku-090', label: 'Catalog entry 090', price: 545 },{ sku: 'sku-091', label: 'Catalog entry 091', price: 550 },{ sku: 'sku-092', label: 'Catalog entry 092', price: 555 },{ sku: 'sku-093', label: 'Catalog entry 093', price: 560 },{ sku: 'sku-094', label: 'Catalog entry 094', price: 565 },{ sku: 'sku-095', label: 'Catalog entry 095', price: 570 },{ sku: 'sku-096', label: 'Catalog entry 096', price: 575 },{ sku: 'sku-097', label: 'Catalog entry 097', price: 580 },{ sku: 'sku-098', label: 'Catalog entry 098', price: 585 },{ sku: 'sku-099', label: 'Catalog entry 099', price: 590 },{ sku: 'sku-100', label: 'Catalog entry 100', price: 595 },{ sku: 'sku-101', label: 'Catalog entry 101', price: 600 },{ sku: 'sku-102', label: 'Catalog entry 102', price: 605 },{ sku: 'sku-103', label: 'Catalog entry 103', price: 610 },{ sku: 'sku-104', label: 'Catalog entry 104', price: 615 },{ sku: 'sku-105', label: 'Catalog entry 105', price: 620 },{ sku: 'sku-106', label: 'Catalog entry 106', price: 625 },{ sku: 'sku-107', label: 'Catalog entry 107', price: 630 },{ sku: 'sku-108', label: 'Catalog entry 108', price: 635 },{ sku: 'sku-109', label: 'Catalog entry 109', price: 640 },{ sku: 'sku-110', label: 'Catalog entry 110', price: 645 },{ sku: 'sku-111', label: 'Catalog entry 111', price: 650 },{ sku: 'sku-112', label: 'Catalog entry 112', price: 655 },{ sku: 'sku-113', label: 'Catalog entry 113', price: 660 },{ sku: 'sku-114', label: 'Catalog entry 114', price: 665 },{ sku: 'sku-115', label: 'Catalog entry 115', price: 670 },{ sku: 'sku-116', label: 'Catalog entry 116', price: 675 },{ sku: 'sku-117', label: 'Catalog entry 117', price: 680 },{ sku: 'sku-118', label: 'Catalog entry 118', price: 685 },{ sku: 'sku-119', label: 'Catalog entry 119', price: 690 },{ sku: 'sku-120', label: 'Catalog entry 120', price: 695 },{ sku: 'sku-121', label: 'Catalog entry 121', price: 700 },{ sku: 'sku-122', label: 'Catalog entry 122', price: 705 },{ sku: 'sku-123', label: 'Catalog entry 123', price: 710 },{ sku: 'sku-124', label: 'Catalog entry 124', price: 715 },{ sku: 'sku-125', label: 'Catalog entry 125', price: 720 },{ sku: 'sku-126', label: 'Catalog entry 126', price: 725 },{ sku: 'sku-127', label: 'Catalog entry 127', price: 730 },{ sku: 'sku-128', label: 'Catalog entry 128', price: 735 },{ sku: 'sku-129', label: 'Catalog entry 129', price: 740 },{ sku: 'sku-130', label: 'Catalog entry 130', price: 745 },{ sku: 'sku-131', label: 'Catalog entry 131', price: 750 },{ sku: 'sku-132', label: 'Catalog entry 132', price: 755 },{ sku: 'sku-133', label: 'Catalog entry 133', price: 760 },{ sku: 'sku-134', label: 'Catalog entry 134', price: 765 },{ sku: 'sku-135', label: 'Catalog entry 135', price: 770 },{ sku: 'sku-136', label: 'Catalog entry 136', price: 775 },{ sku: 'sku-137', label: 'Catalog entry 137', price: 780 },{ sku: 'sku-138', label: 'Catalog entry 138', price: 785 },{ sku: 'sku-139', label: 'Catalog entry 139', price: 790 },{ sku: 'sku-140', label: 'Catalog entry 140', price: 795 },{ sku: 'sku-141', label: 'Catalog entry 141', price: 800 },{ sku: 'sku-142', label: 'Catalog entry 142', price: 805 },{ sku: 'sku-143', label: 'Catalog entry 143', price: 810 },{ sku: 'sku-144', label: 'Catalog entry 144', price: 815 },{ sku: 'sku-145', label: 'Catalog entry 145', price: 820 },{ sku: 'sku-146', label: 'Catalog entry 146', price: 825 },{ sku: 'sku-147', label: 'Catalog entry 147', price: 830 },{ sku: 'sku-148', label: 'Catalog entry 148', price: 835 },{ sku: 'sku-149', label: 'Catalog entry 149', price: 840 },{ sku: 'sku-150', label: 'Catalog entry 150', price: 845 },{ sku: 'sku-151', label: 'Catalog entry 151', price: 850 },{ sku: 'sku-152', label: 'Catalog entry 152', price: 855 },{ sku: 'sku-153', label: 'Catalog entry 153', price: 860 },{ sku: 'sku-154', label: 'Catalog entry 154', price: 865 },{ sku: 'sku-155', label: 'Catalog entry 155', price: 870 },{ sku: 'sku-156', label: 'Catalog entry 156', price: 875 },{ sku: 'sku-157', label: 'Catalog entry 157', price: 880 },{ sku: 'sku-158', label: 'Catalog entry 158', price: 885 },{ sku: 'sku-159', label: 'Catalog entry 159', price: 890 },{ sku: 'sku-160', label: 'Catalog entry 160', price: 895 },{ sku: 'sku-161', label: 'Catalog entry 161', price: 900 },{ sku: 'sku-162', label: 'Catalog entry 162', price: 905 },{ sku: 'sku-163', label: 'Catalog entry 163', price: 910 },{ sku: 'sku-164', label: 'Catalog entry 164', price: 915 },{ sku: 'sku-165', label: 'Catalog entry 165', price: 920 },{ sku: 'sku-166', label: 'Catalog entry 166', price: 925 },{ sku: 'sku-167', label: 'Catalog entry 167', price: 930 },{ sku: 'sku-168', label: 'Catalog entry 168', price: 935 },{ sku: 'sku-169', label: 'Catalog entry 169', price: 940 },{ sku: 'sku-170', label: 'Catalog entry 170', price: 945 },{ sku: 'sku-171', label: 'Catalog entry 171', price: 950 },{ sku: 'sku-172', label: 'Catalog entry 172', price: 955 },{ sku: 'sku-173', label: 'Catalog entry 173', price: 960 },{ sku: 'sku-174', label: 'Catalog entry 174', price: 965 },{ sku: 'sku-175', label: 'Catalog entry 175', price: 970 },{ sku: 'sku-176', label: 'Catalog entry 176', price: 975 },{ sku: 'sku-177', label: 'Catalog entry 177', price: 980 },{ sku: 'sku-178', label: 'Catalog entry 178', price: 985 },{ sku: 'sku-179', label: 'Catalog entry 179', price: 990 },{ sku: 'sku-180', label: 'Catalog entry 180', price: 995 },{ sku: 'sku-181', label: 'Catalog entry 181', price: 1000 },{ sku: 'sku-182', label: 'Catalog entry 182', price: 1005 },{ sku: 'sku-183', label: 'Catalog entry 183', price: 1010 },{ sku: 'sku-184', label: 'Catalog entry 184', price: 1015 },{ sku: 'sku-185', label: 'Catalog entry 185', price: 1020 },{ sku: 'sku-186', label: 'Catalog entry 186', price: 1025 },{ sku: 'sku-187', label: 'Catalog entry 187', price: 1030 },{ sku: 'sku-188', label: 'Catalog entry 188', price: 1035 },{ sku: 'sku-189', label: 'Catalog entry 189', price: 1040 },{ sku: 'sku-190', label: 'Catalog entry 190', price: 1045 },{ sku: 'sku-191', label: 'Catalog entry 191', price: 1050 },{ sku: 'sku-192', label: 'Catalog entry 192', price: 1055 },{ sku: 'sku-193', label: 'Catalog entry 193', price: 1060 },{ sku: 'sku-194', label: 'Catalog entry 194', price: 1065 },{ sku: 'sku-195', label: 'Catalog entry 195', price: 1070 },{ sku: 'sku-196', label: 'Catalog entry 196', price: 1075 },{ sku: 'sku-197', label: 'Catalog entry 197', price: 1080 },{ sku: 'sku-198', label: 'Catalog entry 198', price: 1085 },{ sku: 'sku-199', label: 'Catalog entry 199', price: 1090 },{ sku: 'sku-200', label: 'Catalog entry 200', price: 1095 },{ sku: 'sku-201', label: 'Catalog entry 201', price: 1100 },{ sku: 'sku-202', label: 'Catalog entry 202', price: 1105 },{ sku: 'sku-203', label: 'Catalog entry 203', price: 1110 },{ sku: 'sku-204', label: 'Catalog entry 204', price: 1115 },{ sku: 'sku-205', label: 'Catalog entry 205', price: 1120 },{ sku: 'sku-206', label: 'Catalog entry 206', price: 1125 },{ sku: 'sku-207', label: 'Catalog entry 207', price: 1130 },{ sku: 'sku-208', label: 'Catalog entry 208', price: 1135 },{ sku: 'sku-209', label: 'Catalog entry 209', price: 1140 },{ sku: 'sku-210', label: 'Catalog entry 210', price: 1145 },{ sku: 'sku-211', label: 'Catalog entry 211', price: 1150 },{ sku: 'sku-212', label: 'Catalog entry 212', price: 1155 },{ sku: 'sku-213', label: 'Catalog entry 213', price: 1160 },{ sku: 'sku-214', label: 'Catalog entry 214', price: 1165 },{ sku: 'sku-215', label: 'Catalog entry 215', price: 1170 },{ sku: 'sku-216', label: 'Catalog entry 216', price: 1175 },{ sku: 'sku-217', label: 'Catalog entry 217', price: 1180 },{ sku: 'sku-218', label: 'Catalog entry 218', price: 1185 },{ sku: 'sku-219', label: 'Catalog entry 219', price: 1190 },{ sku: 'sku-220', label: 'Catalog entry 220', price: 1195 },{ sku: 'sku-221', label: 'Catalog entry 221', price: 1200 },{ sku: 'sku-222', label: 'Catalog entry 222', price: 1205 },{ sku: 'sku-223', label: 'Catalog entry 223', price: 1210 },{ sku: 'sku-224', label: 'Catalog entry 224', price: 1215 },{ sku: 'sku-225', label: 'Catalog entry 225', price: 1220 },{ sku: 'sku-226', label: 'Catalog entry 226', price: 1225 },{ sku: 'sku-227', label: 'Catalog entry 227', price: 1230 },{ sku: 'sku-228', label: 'Catalog entry 228', price: 1235 },{ sku: 'sku-229', label: 'Catalog entry 229', price: 1240 },{ sku: 'sku-230', label: 'Catalog entry 230', price: 1245 },{ sku: 'sku-231', label: 'Catalog entry 231', price: 1250 },{ sku: 'sku-232', label: 'Catalog entry 232', price: 1255 },{ sku: 'sku-233', label: 'Catalog entry 233', price: 1260 },{ sku: 'sku-234', label: 'Catalog entry 234', price: 1265 },{ sku: 'sku-235', label: 'Catalog entry 235', price: 1270 },{ sku: 'sku-236', label: 'Catalog entry 236', price: 1275 },{ sku: 'sku-237', label: 'Catalog entry 237', price: 1280 },{ sku: 'sku-238', label: 'Catalog entry 238', price: 1285 },{ sku: 'sku-239', label: 'Catalog entry 239', price: 1290 },{ sku: 'sku-240', label: 'Catalog entry 240', price: 1295 },{ sku: 'sku-241', label: 'Catalog entry 241', price: 1300 },{ sku: 'sku-242', label: 'Catalog entry 242', price: 1305 },{ sku: 'sku-243', label: 'Catalog entry 243', price: 1310 },{ sku: 'sku-244', label: 'Catalog entry 244', price: 1315 },{ sku: 'sku-245', label: 'Catalog entry 245', price: 1320 },{ sku: 'sku-246', label: 'Catalog entry 246', price: 1325 },{ sku: 'sku-247', label: 'Catalog entry 247', price: 1330 },{ sku: 'sku-248', label: 'Catalog entry 248', price: 1335 },{ sku: 'sku-249', label: 'Catalog entry 249', price: 1340 },{ sku: 'sku-250', label: 'Catalog entry 250', price: 1345 },];
Correct
srccatalogentries
export const getCatalogEntry001 = (): string => 'Catalog entry 001';
Configure
- Block
"blocking"Stops a run when a file the run changed breaks the rule. - AdviseDefault
"advisory"Reports it and hands it to the refactor agent. Never stops a run. - Off
"off"Not checked. Use it when your own linter already enforces the rule.
Add this to your lightsout.config.json, then change the value.
{"standards-checks": {"file-size": {"severity": "advisory","settings": {"file": 250,"tsxFile": 300}}}}