ΠΠ΄ΠΈΠ½ ΠΈΠ· Π½Π°ΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² β ΡΠ°ΠΉΡ ΠΊΡΡΠΏΠ½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΏΠΎ ΠΏΡΠΎΠ΄Π°ΠΆΠ΅ Π°Π²ΡΠΎΠ·Π°ΠΏΡΠ°ΡΡΠ΅ΠΉ ΠΈ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΡΡΡΠΈΡ . ΠΡΠΎ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ-ΠΌΠ°Π³Π°Π·ΠΈΠ½, Π°ΡΠ΄ΠΈΡΠΎΡΠΈΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π½Π°ΡΡΠΈΡΡΠ²Π°Π΅Ρ ΠΎΠΊΠΎΠ»ΠΎ 500 ΡΡΡΡΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π² ΠΌΠ΅ΡΡΡ. ΠΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π³Π»Π°Π²Π½ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ ΡΡΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ-ΠΌΠ°Π³Π°Π·ΠΈΠ½Π°.
ΠΠ° ΡΠ°ΠΉΡΠ΅, Π½Π° ΠΊΠΎΡΠΎΡΡΠΌ Π²Π΅Π»Π°ΡΡ ΡΠ°Π±ΠΎΡΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡΒ APM ΡΠ΅ΡΠ²ΠΈΡ elasticΒ β ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠ±ΠΎΡΠ° ΠΌΠ΅ΡΡΠΈΠΊ, ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ ΠΊΠΎΡΠΎΡΡΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡΠ»Π΅Π΄ΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠ΅ΡΡΡΡΠ°. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΡΠ°ΠΉΡ Π΄ΠΎΠ»Π³ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π½Π΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π»ΡΡ, Π° ΡΠΎΠ»ΡΠΊΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΡΠ»ΡΡ Π½ΠΎΠ²ΡΠΌΠΈ ΡΠΈΡΠ°ΠΌΠΈ, ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ ΡΡΠ°Π»ΠΈ ΠΏΠ°Π΄Π°ΡΡ.Β
ΠΠ΅ Π²ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ ΠΏΠΎΠΊΠ° ΡΠ΄Π°Π»ΠΎΡΡ Π²ΡΡΡΠ½ΡΡΡ Π² Π·Π΅Π»Π΅Π½ΡΡ Π·ΠΎΠ½Ρ, Π½ΠΎ ΡΠ»ΡΡΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΌΠ½ΠΎΠ³ΠΈΡ ΠΈΠ· Π½ΠΈΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ ΠΊΡΠ°ΡΠ½ΡΠΌ. ΠΠΎΠΊΠ° Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠΈΠ΅ ΡΠ°Π±ΠΎΡΡ ΠΏΠ»Π°Π½ΠΈΡΡΡΡΡΡ, ΡΠ°ΡΡΠΊΠ°ΠΆΠ΅ΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ ΡΠ°Π³ΠΈ ΠΏΡΠ΅Π΄ΠΏΡΠΈΠ½ΡΠ»ΠΈ Π΄Π»Ρ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°.Β Β Β
TS-Prune
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΒ ΡΠ΅ΡΠ²ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π±ΡΡΡΡΠΎ Π½Π°ΠΉΡΠΈ ΠΌΠ΅ΡΡΠ²ΡΠ΅ ΡΠΊΡΠΏΠΎΡΡΡ ΠΈΠ»ΠΈ ΠΊΠΎΠ΄ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅.
ΠΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π΄Π»Ρ package.json:
"deadcode-check": "npx --yes ts-"deadcode-check": "npx --yes ts-prune -s \"pages/[**/]?
(_app|_document|_error|index)|store/(index|sagas)|styles/global\""
Π’Π°ΠΊΠΎΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ:
Β
Β
ΠΠΎΡΠ»Π΅ ΠΎΡΡΠ°Π±ΠΎΡΠΊΠΈ Π² ΠΊΠΎΠ½ΡΠΎΠ»Π΅ Π±ΡΠ΄Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ½ΡΡ ΠΌΠ΅ΡΡ. ΠΠΎ Π½ΠΈΠΌ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΠΌΡΡ Π²ΡΡΡΠ½ΡΡ ΠΈ ΡΠ΄Π°Π»ΡΠ΅ΠΌ ΠΌΠ΅ΡΡΠ²ΡΠ΅ ΡΠ΅Π³ΠΌΠ΅Π½ΡΡ.Β
Depcheck
ΠΡΡΡ ΠΈΒ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠ°ΠΊΠ΅Ρ Π΄Π»Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ. Π‘ Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠΏΠΈΡΠΎΠΊ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ npm ΠΏΠ°ΠΊΠ΅ΡΠΎΠ². ΠΠ°ΡΠ΅ΠΌ Π²ΡΡΡΠ½ΡΡ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΠΌΡΡ ΠΏΠΎ ΡΠΏΠΈΡΠΊΡ ΠΈ ΡΠ΄Π°Π»ΡΠ΅ΠΌ Π²ΡΠ΅ Π»ΠΈΡΠ½Π΅Π΅, ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ ΡΠΌΠ΅Π½ΡΡΠ°Ρ Π²Π΅Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ Π½Π°Π²ΠΎΠ΄Ρ ΠΏΠΎΡΡΠ΄ΠΎΠΊ.Β Β
Depcheck Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·, ΠΏΠΎΡΠΎΠΌΡ ΠΊΠ°ΠΊ ΠΏΠΎΡΠ»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΠΎΠ½Π° ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ Π½Π΅Π½ΡΠΆΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΡΠ²ΠΈΡΡΡ Π½ΠΎΠ²ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ ΡΡΠ΄ΠΈΠΌΠ΅Π½ΡΠ°ΡΠ½ΡΠΌΠΈ ΠΏΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΠΎΠ½Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΄Π°Π»Π΅Π½Π½Π°Ρ Π² ΠΏΠ΅ΡΠ²ΠΎΠΉ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»Π° Π΄ΡΡΠ³ΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΆΠ΅ Π½Π° Π²ΡΠΎΡΠΎΠΌ ΠΏΡΠΎΠ³ΠΎΠ½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡΡ ΠΊΠ°ΠΊ ΠΌΠ΅ΡΡΠ²Π°Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ.Β
ΠΠΎΠΈΡΠΊ Π΄ΡΠ±Π»ΠΈΡΡΡΡΠΈΡ npm ΠΏΠ°ΠΊΠ΅ΡΠΎΠ²
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΒ ΠΏΠ»Π°Π³ΠΈΠ½, ΠΊΠΎΡΠΎΡΡΠΉ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΠΏΡΠΎΠ΅ΠΊΡ ΠΈ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ Π΄ΡΠ±Π»Π΅ΠΉ Ρ ΡΠ°Π·Π½ΡΠΌΠΈ Π²Π΅ΡΡΠΈΡΠΌΠΈ.
ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° Π΅Π³ΠΎ ΡΠ°Π±ΠΎΡΡ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ:
Β
ΠΠ΄Π½Π°ΠΊΠΎ ΠΎΡ Π²ΠΈΠ΄ΠΎΠ² Π²ΡΠ΄Π°ΡΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π²ΠΈΡΠ΅ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ.Β
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΠΎΡ ΡΠ°ΠΊΠ°Ρ Π²ΡΠ΄Π°ΡΠ°:
ΠΠ΄Π΅ΡΡ ΡΠ²Π½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ ΠΏΠ°ΠΊΠ΅ΡΡ. ΠΠ±Π½ΠΎΠ²ΠΈΠ² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ Π²Π΅Ρ Π±Π°Π½Π΄Π»Π°.Β
ΠΡΡΠ³ΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ:
Β
Β
Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ°ΠΊΠΆΠ΅ ΡΡΠ΅Π±ΡΡΡΡΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ. ΠΡΠ»ΠΈ Π½Π΅ ΠΏΠΎΠ½ΡΡΠ½ΠΎ, ΡΡΠΎ ΠΈ Π³Π΄Π΅ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ, Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ Π²Π΅Π±ΠΏΠ°ΠΊΠ° Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ alias, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ΄ΡΠΊΠ°ΠΆΠ΅Ρ ΡΠ±ΠΎΡΡΠΈΠΊΡ, ΠΊΠ°ΠΊΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ Π²Π΅ΡΡΠΈΡ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ ΠΈ ΠΎΡΠΊΡΠ΄Π° Π΅Π΅ Π²Π·ΡΡΡ. ΠΠ° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ redux:
ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΊΠ°ΡΡΠΈΠ½ΠΎΠΊ
ΠΠ°ΡΡΠΈΠ½ΠΊΠΈ Π½Π° ΡΠ°ΠΉΡΠ΅ Π΄ΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π½Π΅ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π»ΠΈΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² ΡΠΊΡΠ°Π½Π°. ΠΡ ΠΏΠΎΠΌΠ΅Π½ΡΠ»ΠΈ Π²ΡΠ΅ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ Π½Π° next image. ΠΠ°ΡΠ΅ΠΌ ΠΏΠΎΠΌΠ΅Π½ΡΠ»ΠΈ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ. Π’Π΅, ΡΡΠΎ ΠΏΠ΅ΡΠ²ΡΠΌΠΈ ΠΏΠΎΠΏΠ°Π΄Π°ΡΡ Π²ΠΎ viewport, Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π°Π³ΡΡΠΆΠ°ΡΡΡΡ Ρ Π²ΡΡΠΎΠΊΠΈΠΌ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠΎΠΌ ΠΈ Π±Π΅Π· lazyloading β ΡΠΎ Π΅ΡΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ Π±ΡΡΡΡΠΎ. ΠΡΠΎ Π²Π»ΠΈΡΠ΅Ρ Π½Π° ΡΠΊΠΎΡΠΎΡΡΡ ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΡΠ°ΠΉΡΠ°.Β
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΊΠ°ΡΡΠΈΠ½ΠΎΠΊ ΠΌΠΎΠ΄ΡΠ»ΡΒ next/image.
- ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠΎΡΠΌΠ°ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π²ΠΌΠ΅ΡΡΠΎ jpg ΠΈ png. ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ Π»ΡΡΡΠ΅Π΅ ΡΠΆΠ°ΡΠΈΠ΅ Π±Π΅Π· ΠΏΠΎΡΠ΅ΡΠΈ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° ΠΈ Π±ΠΎΠ»Π΅Π΅ Π±ΡΡΡΡΡΡ Π·Π°Π³ΡΡΠ·ΠΊΡ.
images: {
formats: ['image/avif', 'image/webp'],
}
- ΠΡΠΈΠΎΡΠΈΡΠ΅Π·ΠΈΡΡΠ΅ΠΌ Π·Π°Π³ΡΡΠ·ΠΊΡ ΠΊΠ°ΡΡΠΈΠ½ΠΎΠΊ above the fold (ΡΠ΅Ρ , ΡΡΠΎ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π² viewport ΠΏΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΡΡΡΠ°Π½ΠΈΡΡ) - ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Priority.
- ΠΠ»Ρ Π²Π΅ΠΊΡΠΎΡΠ½ΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΎΠΊ Π²ΡΡΡΠ°Π²Π»ΡΠ΅ΠΌ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ unoptimized.
Code splitting
ΠΡΡΡΠ½ΠΈΠ»ΠΎΡΡ, ΡΡΠΎ, Π² ΠΊΠΎΠ΄Π΅ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΠ±Π»ΠΈΠΊΠ°ΡΠΎΠ². ΠΠ»Π΅ΠΌΠ΅Π½ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· Π·Π°Π³ΡΡΠ·ΠΈΡΡΡΡ, Π·Π°ΠΊΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π²ΡΠ΅ΠΌΠΈ ΡΡΡΠ°Π½ΠΈΡΠ°ΠΌΠΈ, Π±ΡΠ»ΠΈ Π²ΡΡΠ°Π²Π»Π΅Π½Ρ Π² ΠΊΠΎΠ΄ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΡΡΡΠ°Π½ΠΈΡ ΠΈ ΠΏΠΎΡΡΠ΅Π±Π»ΡΠ»ΠΈ ΡΠ΅ΡΡΡΡΡ ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΡΠ½ΠΎΠ²Π° ΠΈ ΡΠ½ΠΎΠ²Π°.
ΠΡΠ±Π»ΠΈΠΊΠ°ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΎΡΠ²ΠΈΠ»ΠΈΡΡ ΠΈΠ·-Π·Π° ΠΎΡΠΌΠ΅Π½Ρ Π΄Π΅ΡΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ ΡΠ°Π·Π±ΠΈΠ΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π½Π° ΡΠ°Π½ΠΊΠΈ Π² next.js. ΠΡΠ΅ΠΆΠ½ΠΈΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠ»ΠΈ ΡΠ°ΠΊΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΡΡΠΎΠ±Ρ ΡΠ°Π±ΠΎΡΠ°Π»Π°Β Linaria, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ·Π²Π°Π½Π° ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ. ΠΠ΄Π½Π°ΠΊΠΎ ΠΈΠ·-Π·Π° ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ°Π·Π±ΠΈΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ ΠΏΠ°Π΄Π°Π»Π°.Β
Π ΠΈΡΠΎΠ³Π΅ ΠΌΡ ΡΠ±ΡΠ°Π»ΠΈ ΡΡΡΠΎΠΊΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ ΡΠ°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ ΡΠ°Π½ΠΊΠΎΠ², ΠΈ ΡΡΠΎ Π΄Π°Π»ΠΎ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ 50% ΠΏΡΠΈΡΠΎΡΡ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.Β
ΠΡΡΡΠΎΠ΅Π½Π½ΡΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ next ΡΠ°Π·Π±ΠΈΠ²ΠΊΠΈ js ΠΊΠΎΠ΄Π° Π½Π° ΡΠ°Π½ΠΊΠΈΒ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ ΠΈ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π½ Π΄Π»Ρ production. ΠΡΠΊΠ»ΡΡΠ°ΡΡ Π΅Π³ΠΎ Π½Π΅ Π½ΡΠΆΠ½ΠΎ, ΠΈΠ½Π°ΡΠ΅ ΠΊΠΎΠ΄ Π½Π°ΡΠΈΠ½Π°Π΅Ρ Π΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ, Ρ ΠΎΡΡ ΠΏΠ΅ΡΠ΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ (react, react-dom, ui kit ΠΈ Ρ.Π΄.) Π΄ΠΎΠ»ΠΆΠ½Ρ Π²ΡΠ½ΠΎΡΠΈΡΡΡΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ (ΠΎΠ±ΡΠΈΠ΅) ΡΠ°Π½ΠΊΠΈ, Π° Π½Π΅ Π³ΡΡΠ·ΠΈΡΡΡΡ Π·Π°Π½ΠΎΠ²ΠΎ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΠ΅.Β
Π£Π±ΠΈΡΠ°Π΅ΠΌ Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΠ΅ ΡΠ΅ΡΡΡΡΡ
ΠΠ°Π»Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈΒ webpagetest, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΡΠ΅ΡΡΡ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠ°ΠΉΡΠΎΠ² ΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΠ°Π·Π½ΡΠ΅ ΠΌΠ΅ΡΡΠΈΠΊΠΈ. ΠΠΎΡΠ»Π΅ ΡΠ΅ΡΡΠ° Π²ΡΡΡΠ½ΠΈΠ»ΠΎΡΡ, ΡΡΠΎ Π² ΠΊΠΎΠ΄Π΅ ΡΠ°ΠΉΡΠ° Π΅ΡΡΡ Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΠ΅ ΡΠΊΡΠΈΠΏΡΡ.Β
ΠΠ»ΠΎΠΊΠΈΡΡΡΡΠΈΠΉ ΡΠΊΡΠΈΠΏΡ ΡΡΠ°Π»ΠΈ Π·Π°Π³ΡΡΠΆΠ°ΡΡ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎ ΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΡΠ΅Ρ ΡΡΡΠ°Π½ΠΈΡΠ°Ρ , Π³Π΄Π΅ ΡΡΠΎ Π±ΡΠ»ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ. Π‘ΠΈΠ½Ρ ΡΠΎΠ½Π½Π°Ρ Π·Π°Π³ΡΡΠ·ΠΊΠ° Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ. ΠΡΠ΅ ΡΠΊΡΠΈΠΏΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π½Π΅ Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΠΌΠΈ.
ΠΡΠΈΠΌΠ΅Ρ Ρ aplaut:
ΠΠΎΠΌΠΏΠ°ΠΊΡΠ½ΡΠ΅ ΡΠ±ΠΎΡΠΊΠΈ
ΠΠΌΠ΅ΡΡΠΎ Terser ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΒ swcMinifyΒ Π΄Π»Ρ ΡΠΆΠ°ΡΠΈΡ js (Π½Π° ΠΊΡΡΠΏΠ½ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ ΠΏΠΎΡΡΠ΄ΠΊΠ° 200Kb).
Π‘ΠΎΠ±ΠΈΡΠ°Π΅ΠΌ js ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠ². Π‘ΠΏΠΈΡΠΎΠΊ Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠ² ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² Next, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π² ΡΠ²ΠΎΠ΅ΠΌΒ browserslist.
Π‘ΡΠΎΡΠΎΠ½Π½ΠΈΠ΅ ΡΠΊΡΠΈΠΏΡΡ
Π§ΡΠΎΠ±Ρ ΡΠΎΠΊΡΠ°ΡΠΈΡΡΒ ΠΎΠ±ΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ (TBT), ΡΡΠΎΡΠΎΠ½Π½ΠΈΠ΅ ΡΠΊΡΠΈΠΏΡΡ Π΄Π»Ρ ΡΠ°ΠΉΡΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Google analytics ΠΈ Yandex metrika) Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Ρ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌΒ next/scriptΒ ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ (ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ afterInteractive).
ΠΠΎΡΒ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡΒ Google Analytics c ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ next/script.
Π‘ΠΊΡΡΡΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ
ΠΠ° ΡΠ°ΠΉΡΠ΅ Π΅ΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΊΡΡΡΡ Π΄ΠΎ ΡΠΎΠ³ΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠ°, ΠΏΠΎΠΊΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π΅ Π½Π°ΡΠ½Π΅Ρ Ρ Π½ΠΈΠΌΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π² ΠΌΠΎΠ΄Π°Π»ΡΠ½ΡΡ ΠΎΠΊΠ½Π°Ρ ΠΈ ΡΠ°ΠΉΠ΄Π±Π°ΡΠ°Ρ . ΠΠ»Ρ Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΒ Dynamic Imports, ΡΡΠΎΠ±Ρ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ ΠΎΠ±ΡΠ΅ΠΌ js, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΉ Π΄Π»Ρ ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΡΡΠ°Π½ΠΈΡΡ. ΠΠ°Π³ΡΡΠ·ΠΊΠ° js ΡΠΊΡΡΡΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΎΡΠΊΠ»Π°Π΄ΡΠ²Π°Π΅ΡΡΡ Π΄ΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠΉ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΠΈ β Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠΌ.Β
Π£ΡΠΊΠΎΡΠ΅Π½ΠΈΠ΅ Π±ΠΈΠ»Π΄Π°
ΠΠΎΠΆΠ½ΠΎ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡΒ eslintΒ Π² next.config.js. ΠΡΠ»ΠΈ Π»ΠΈΠ½Ρ ΠΎΡΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΊΠΎΠΌΠΈΡΠ°, Π΄Π΅Π»Π°ΡΡ Π»ΠΈΠ½Ρ ΠΏΡΠΈ Π±ΠΈΠ»Π΄Π΅ Π½Π΅Ρ ΡΠΌΡΡΠ»Π°. ΠΡΠΎΡ Π½ΡΠ°Π½Ρ Π½Π΅ Π²Π»ΠΈΡΠ΅Ρ Π½Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π½ΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ ΡΠΊΠΎΡΠΎΡΡΡ ΡΠ±ΠΎΡΠΊΠΈ.
Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ --no-lint Π² package.json:
Π§ΡΠΎ Π΅ΡΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ
ΠΡΠ»ΠΈ ΡΠ°Π±ΠΎΡΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ΅ Π²Π΅Π΄Π΅ΡΡΡ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎ, ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°ΡΡΡ ΡΠ°ΡΡΡΠΌΠΈ ΡΠ΅Π»ΠΈΠ·Π°ΠΌΠΈ, ΡΡΠΎΠΈΡ ΠΏΠΎΠ΄ΡΠΌΠ°ΡΡ ΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ΠΎΠ² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΠΎΡΠ»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ΅Π»ΠΈΠ·Π°. Π’Π°ΠΊ, ΠΏΠΎΡΠ»Π΅ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π½ΠΎΠ²ΡΡ ΡΠΈΡ, ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΡΡΠ°Π·Ρ ΠΎΡΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΏΡΠΎΡΠ΅Π΄Π°Π½ΠΈΡ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ. ΠΡΠΎ Π³ΠΎΡΠ°Π·Π΄ΠΎ ΡΠ΄ΠΎΠ±Π½Π΅Π΅, ΡΠ΅ΠΌ Π΄ΠΎΠΆΠΈΠ΄Π°ΡΡΡΡ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΠ°Π΄Π΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠ΅ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ.
Π ΡΡΠΎΠ±Ρ Π² ΡΠ΅Π»ΠΎΠΌ Π΄Π΅ΡΠΆΠ°ΡΡ ΡΡΠΊΡ Π½Π° ΠΏΡΠ»ΡΡΠ΅, ΡΠΎΠ²Π΅ΡΡΠ΅ΠΌΒ ΡΠ΅ΠΊ-Π»ΠΈΡΡ ΠΏΠΎ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΡΡΡΠ°Π½ΠΈΡΒ ΠΎΡΒ ΠΠΈΡΠ°Π»ΠΈΡ Π€ΡΠΈΠ΄ΠΌΠ°Π½Π°. Π§Π΅ΠΊ-Π»ΠΈΡΡ ΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π³ΠΎΠ΄, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠΎΠ²Π΅ΡΡ ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ Π² Π½Π΅ΠΌ ΠΏΠΎΠ»ΡΡΠ°ΡΡΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΠΌΠΈ ΠΈ ΠΏΡΠΈΠ³ΠΎΠ΄Π½ΡΠΌΠΈ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ .