Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π΅ΡΡΡ ΡΡΠΈ ΠΌΠ΅ΡΡΠ°, Π³Π΄Π΅ Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ svelte a11y:
lua
lspconfig.svelte.setup{
cmd = { "yarn", "svelteserver", "--stdio" };
on_attach = on_attach;
settings = {
svelte = {
plugin = {
svelte = {
compilerWarnings = {
["a11y-no-onchange"] = "ignore"
}
}
}
}
}
}
svelte-check , ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΡΡΠ°Π²Π»ΡΠ΅Ρ package.json
Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ Π½Π΅ΠΊΡΠ°ΡΠΈΠ²ΠΎ ΠΏΡΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅, ΠΈ ΡΡΠΎ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ Π΄Π»Ρ Π΅Π³ΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ
{
"val": "svelte-check --compiler-warnings a11y-no-onchange:ignore",
"validate": "yarn val --threshold warning && yarn tsc --noEmit"
}
eslint
settings: {
'svelte3/ignore-warnings': ({ code }) => code === 'a11y-no-onchange',
// ...
},
Π― Π±Ρ Ρ
ΠΎΡΠ΅Π» Π½Π°ΡΡΡΠΎΠΈΡΡ Π΅Π³ΠΎ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅: svelte.config.js
. ΠΡΠΎΠ³ΠΎ Π½Π΅Π»ΡΠ·Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΈΠ·-Π·Π° svelte-preprocess
Π° ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ·-Π·Π° ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΡΡΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ ΡΠΈΡΠ°ΡΡ Π΅Π³ΠΎ Π΄Π»Ρ svelte-preprocess
, ΠΏΠΎΡΠ΅ΠΌΡ Π±Ρ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π΄Π»Ρ onwarn
?
Π’Π°ΠΊΠΆΠ΅ Π² ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ Ρ Π½Π΅ ΠΌΠΎΠ³Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΄Π»Ρ ΡΠ·ΡΠΊΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ°.
Π ΠΈΠ΄Π΅Π°Π»Π΅ Ρ Ρ
ΠΎΡΠ΅Π» Π±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ svelte.config.js
ΠΊΠ°ΠΊ Π² ΡΠ·ΡΠΊΠΎΠ²ΡΡ
ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°Ρ
, ΡΠ°ΠΊ ΠΈ Π² ΡΠ±ΠΎΡΡΠΈΠΊΠ΅ ΠΈ Π½Π°ΡΡΡΠΎΠΈΡΡ ΡΠ°ΠΌ Π²ΡΠ΅, ΡΡΠΎ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ svelte.
ΠΡΠΎ ΡΠΎΠΆΠ΅: https://github.com/sveltejs/language-tools/tree/master/packages/svelte-vscode#settings
ΠΡΠΆΡΠΈΠ½Ρ ΠΌΠ΅Π½Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ. Π― ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ, ΡΡΠΎ ΡΠ»ΠΎΠΆΠ½Π°Ρ ΡΠ°ΡΡΡ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ³Π»Π°ΡΠΎΠ²ΡΠ²Π°ΡΡ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ / ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΠΊΠ°Π·Π°Π½ΠΎ
ΠΡΠΎ ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ» Π΄Π»Ρ ΡΠ°ΠΊΠΈΡ Π²Π΅ΡΠ΅ΠΉ, ΠΊΠ°ΠΊ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ. Π― Π½Π΅ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ Π²ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠ·ΡΠΊΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ° Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΡΠΈΡΡΠ²Π°ΡΡΡΡ Ρ Π½Π΅Π³ΠΎ, ΡΡΠΎ IDE Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΈΡ ΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡ Ρ ΡΠ·ΡΠΊΠΎΠ²ΡΠΌ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ.
ΠΠ½Π°ΡΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ onwarn Π² Π΅Π³ΠΎ Π½ΡΠ½Π΅ΡΠ½Π΅ΠΉ ΡΠΎΡΠΌΠ΅ - ΠΏΡΠΈΠ΅ΠΌΠ»Π΅ΠΌΠΎΠ΅ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅?
Π§ΡΠΎΠ±Ρ Π±ΡΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠΌΠΈ Ρ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΌΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠΌΠΈ, ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° onwarn Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Ρ
Π²Π°ΡΠ° ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ, ΠΊΠ°ΠΊ ΡΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ ΡΠ΅ΠΉΡΠ°Ρ Π² ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½ΡΡ
ΠΏΠ»Π°Π³ΠΈΠ½Π°Ρ
Π΄Π»Ρ ΡΠ±ΠΎΡΡΠΈΠΊΠΎΠ².
ΠΡΠΈΡΠΈΠ½Π° Π½Π°Π»ΠΈΡΠΈΡ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π΅ Π²ΡΠ΅Ρ
, Π½ΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π΄Π»Ρ ΡΠ·ΡΠΊΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ° Π² svelte.config.js
Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠΎΡΠΌΠ°ΡΠ° ΠΎΠ±ΡΡΠ½ΠΎ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°. : ΠΌΡΡΠ»Π΅Π½ΠΈΠ΅:
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Ρ Π² ΡΠ°ΠΉΠ» .prettierrc
ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ prettier Π² ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠΈ Ρ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠΌ prettier Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. https://www.npmjs.com/package/prettier-plugin-svelte
Π£ ΠΌΠ΅Π½Ρ ΠΊΡΠ°ΡΠΈΠ²Π΅Π΅ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Ρ
ΡΠΊΠ° ΠΏΠ΅ΡΠ΅Π΄ ΡΠΈΠΊΡΠ°ΡΠΈΠ΅ΠΉ. ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ Π² package.json
.
{
"prettier": {
"singleQuote": true,
"printWidth": 80,
"plugins": [
"prettier-plugin-svelte"
]
}
}
ΠΡΡΡ Π»ΠΈ ΡΡΠΎ-ΡΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΠ΅ Π² Π±ΠΎΠ»Π΅Π΅ ΠΊΡΠ°ΡΠΈΠ²ΠΎΠΌ Π²ΡΠ·ΠΎΠ²Π΅ ΠΈΠ· LS? ΠΠ»ΠΈ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΡΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ, ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎ? : ΠΌΡΡΠ»Π΅Π½ΠΈΠ΅:
ΠΡΠΎ ΡΠΎΠΆΠ΅ ΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ. Π― Ρ
ΠΎΡΠ΅Π» ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠΎΠΌ Π·Π°Π±ΠΎΡΡ svelte.config.js
.
Π― ΡΠΎΠ³Π»Π°ΡΠ΅Π½, ΡΠ΅ΠΏΠ΅ΡΡ Ρ Π½Π΅ Π²ΠΈΠΆΡ Π½ΠΈΡΠ΅Π³ΠΎ, ΠΊΡΠΎΠΌΠ΅ onwarn
ΡΡΠΎΠ±Ρ ΡΠ°Π·ΡΠΌΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π½Π° svelte.config.js
.
ΠΠΎΠ»ΡΡΠ΅ Π½Π΅ΡΠ΅Π³ΠΎ ΡΠ΅ΡΠ°ΡΡ.
ΠΠ²ΡΡΠΈΡ Π»ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΡΠΉ Π²ΡΠ·ΠΎΠ² onwarn
Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ΅ ΠΊΠ°ΠΊ Ρ
ΠΎΡΠΎΡΠ΅Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅?
ΠΠ΄ΠΈΠ½Π°Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ, ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠ°Ρ Ρ ΡΠ΅ΠΊΡΡΠ΅ΠΉ Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠΎΠ²ΡΠΈΠΊΠ°Ρ
.
ΠΠ΅Π½Ρ ΡΠΊΠΎΡΠ΅Π΅ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ svelte.config.js
ΠΊ Π²Π΅ΡΠ°ΠΌ, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΡΡ
ΡΠΆΠ΅ Π΅ΡΡΡ Ρ
ΠΎΡΠΎΡΠΎ ΠΎΡΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠ΅ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ. Π ESLint, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠ»Π°Π³ΠΈΠ½Ρ ΠΏΡΠΎΡΡΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΆΠ΅ Π·Π°Π³ΡΡΠΆΠ΅Π½ ESLint. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΡΠ»ΠΈΡΠ½ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΠΈΠ΅ΡΠ°ΡΡ
ΠΈΡΠ΅ΡΠΊΠΈΡ
.eslintrc.js
ΡΠ°ΠΉΠ»Ρ (ΠΈΠ»ΠΈ JSON ΡΠ°ΠΉΠ»Ρ, ΠΈΠ»ΠΈ YAML ΡΠ°ΠΉΠ»Ρ ΠΈΠ»ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ eslintConfig
ΠΊΠ»ΡΡΠ΅ΠΉ Π² package.json
ΡΠ°ΠΉΠ»ΠΎΠ²) ΠΈ Π― Π½Π΅ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ESLint ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ ΠΏΠ»Π°Π³ΠΈΠ½Ρ, Π³Π΄Π΅ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΈΠ· ΡΡΠΈΡ
ΡΠ°ΠΉΠ»ΠΎΠ², ΠΏΠΎΡΡΠΎΠΌΡ Ρ Π½Π΅ Π·Π½Π°Ρ, Π³Π΄Π΅ ΠΏΠ»Π°Π³ΠΈΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΊΠ°ΡΡ svelte.config.js
. Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π΅Π΄ΠΈΠ½ΡΠΉ ΡΠ½ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, ΠΈ ΡΠ΄ΡΠΎ ββESLint Ρ
ΠΎΡΠ΅Ρ Π½Π΅ΡΡΠΈ Π·Π° ΡΡΠΎ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ.
ΠΡΠ°ΠΊ, ΡΠ΅ΡΠ΅Π½ΠΈΠ΅:
svelte-vscode
.svelte.config.js
ΠΈ ΠΊΠ°ΠΊ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π΅Π΅ Π² .eslintrc.js
. Π‘ΠΎΡΡΠ°Π²ΡΡΠ΅ ΡΠΏΠΈΡΠΎΠΊ Ρ ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π΅Π³ΠΎ Π² ΠΎΠ±Π΅ΠΈΡ
ΡΡΠ½ΠΊΡΠΈΡΡ
ΠΈΠ»ΠΈ ΡΡΠΎ-ΡΠΎ Π² ΡΡΠΎΠΌ ΡΠΎΠ΄Π΅.svelte-check
Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΈΠ· ΡΠ°Π±ΠΎΡΠ΅ΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ.ΠΠΎΡ
ΠΎΠΆΠ΅, Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅, ΡΡΠΎ ΡΡΠΎΠΈΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ, - ΡΡΠΎ svelte-check
ΡΠΎΠ³Π΄Π°?
ΠΠ° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ svelte-check
, ΠΊΠ°ΠΆΠ΅ΡΡΡ, ΡΡΠΎ ΡΡΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΠΌΠΎ Π² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠΉ ΡΡΠ΅Π΄Π΅. : ΠΌΡΡΠ»Π΅Π½ΠΈΠ΅:
ΠΠ° ΠΌΠΎΠΉ Π²Π·Π³Π»ΡΠ΄, ΠΊΠ°Π½Π΄ΠΈΠ΄Π°ΡΠ°ΠΌΠΈ Π½Π° ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½ΠΈΠ΅ onwarn ΡΠ²Π»ΡΡΡΡΡ: language-server, svelte-check, rollup plugin, webpack plugin.
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
ΠΠ° ΠΌΠΎΠΉ Π²Π·Π³Π»ΡΠ΄, ΠΊΠ°Π½Π΄ΠΈΠ΄Π°ΡΠ°ΠΌΠΈ Π½Π° ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½ΠΈΠ΅ onwarn ΡΠ²Π»ΡΡΡΡΡ: language-server, svelte-check, rollup plugin, webpack plugin.