Language-tools: ์Šคํƒ€์ผ ํƒœ๊ทธ 'lang'์†์„ฑ์ด Svelte ๋ฒ ํƒ€์—์„œ ๊ฒฝ๊ณ ๋ฅผ ํŠธ๋ฆฌ๊ฑฐ ํ•จ

์— ๋งŒ๋“  2020๋…„ 05์›” 29์ผ  ยท  30์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: sveltejs/language-tools

๋ฒ„๊ทธ ์„ค๋ช…
๊ตฌ์„ฑ ์š”์†Œ์˜ <style> ํƒœ๊ทธ์— lang ์†์„ฑ์„ ์ง€์ •ํ•  ๋•Œ VS Code ์šฉ Svelte ๋ฒ ํƒ€๋Š” ๋‹ค์Œ ๊ฒฝ๊ณ ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

The file cannot be parsed because script or style require a preprocessor that doesn't seem to be setup. Did you setup a `svelte.config.js`? See https://github.com/sveltejs/language-tools/tree/master/packages/svelte-vscode#using-with-preprocessors for more info.

์ด๋Š” <style> ๊ตฌ์„ฑ ์š”์†Œ์— lang ์†์„ฑ์„ ์ง€์ •ํ•  ๋•Œ๋งŒ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ฒฝ์šฐ LANG ์†์„ฑ์ด ์ œ๊ฑฐ๋˜๋ฉด <style> ํƒœ๊ทธ ๊ฒฝ๊ณ ๋Š” ๊ด€๊ณ„์—†์ด ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ์˜, ์‚ฌ๋ผ์งˆ lang ์š”์†Œ์— ์†์„ฑ <script> ํƒœ๊ทธ.

์žฌํ˜„ํ•˜๋ ค๋ฉด
๋™์ž‘์„ ์žฌํ˜„ํ•˜๋Š” ๋‹จ๊ณ„ :

  1. degit svelte/template-webpack ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ Svelte + Webpack ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  2. TypeScript, Node Sass ๋ฐ Svelte ์‚ฌ์ „ ํ”„๋กœ์„ธ์Šค ์„ค์น˜ : npm i -D typescript node-sass svelte-preprocess
  3. svelte.config.js๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
const sveltePreprocess = require('svelte-preprocess')

module.exports = {
  preprocess: sveltePreprocess()
}
  1. VS Code์—์„œ Svelte ๋ฒ ํƒ€ ๋‹ค์‹œ ์‹œ์ž‘
  2. lang="scss" <style> ํƒœ๊ทธ์— src/App.svelte
  3. ํŒŒ์ผ์„ ์ €์žฅ. Svelte ๋ฒ ํƒ€ ๊ฒฝ๊ณ ๋Š” <script> ํƒœ๊ทธ์— ํ‘œ์‹œ๋˜์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์ƒ๋˜๋Š” ํ–‰๋™
Svelte ๋ฒ ํƒ€๊ฐ€ ๊ฒฝ๊ณ  ๋‚˜ ์˜ค๋ฅ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์„ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

์Šคํฌ๋ฆฐ ์ƒท
SvelteWarning
SvelteWarning001
SvelteWarning002
SvelteWarning003

์ฒด๊ณ„:

  • ์šด์˜์ฒด์ œ : Windows 10
  • IDE : VSCode 1.45.0
  • ํ”Œ๋Ÿฌ๊ทธ์ธ / ํŒจํ‚ค์ง€ : "Svelte Beta"

์ถ”๊ฐ€ ์ปจํ…์ŠคํŠธ
์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ์ž์ฃผ ๊ถŒ์žฅ / ๋ช…๋ฐฑํ•œ ์ˆ˜์ • :

  • _Double, Triple, Quadruple์—์„œ ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์— svelte.config.js ํŒŒ์ผ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค ._
  • ๋Ÿฐํƒ€์ž„์„ Node.js ๊ฒฝ๋กœ๋กœ ์„ค์ •ํ•˜๋ ค๊ณ ํ–ˆ์Šต๋‹ˆ๋‹ค. C:\Program Files\nodejs\node.exe
  • svelte.config.js์˜ ๋‹ค์Œ ๋ณ€ํ˜•์„ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค.
const sveltePreprocess = require('svelte-preprocess')

module.exports = {
  preprocess: [sveltePreprocess()]
}

```js
const sveltePreprocess = require ( 'svelte-preprocess')

module.exports = {
์ „์ฒ˜๋ฆฌ : sveltePreprocess ({
sass : ์ฐธ
})
}

```js
const sveltePreprocess = require('svelte-preprocess')

module.exports = {
  preprocess: sveltePreprocess({
    sass: true,
    typescript: true
  })
}
  • Webpack ๊ตฌ์„ฑ์€ svelte.config.js ๋‚ด ๋ณด๋‚ธ ์ „์ฒ˜๋ฆฌ ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๊ณ  ์˜ค๋ฅ˜๋‚˜ ๊ฒฝ๊ณ ์—†์ด Svelte ์ฝ”๋“œ๋ฅผ ์ปดํŒŒ์ผํ•ฉ๋‹ˆ๋‹ค.

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋‚˜๋Š” ์ด๊ฒƒ์„ ์‹œ๋„ํ–ˆ๊ณ  ๋‚ด๊ฐ€ ๊ฒช์€ ๋ฌธ์ œ ๋Š” svelte.language-server.runtime ๋ฅผ ์„ค์ •ํ•˜์—ฌ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
@JoeBobMiles js ํŒŒ์ผ์—์„œ node-sass ๋ฅผ ์š”๊ตฌํ•˜๊ณ  ๋…ธ๋“œ๋กœ ํŒŒ์ผ์„ ์‹คํ–‰ํ•˜์—ฌ ์˜ค๋ฅ˜๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

const nodeSass = require('node-sass')

console.log(nodeSass)

๋ชจ๋“  30 ๋Œ“๊ธ€

์ด๊ฒƒ์€ ๋˜ํ•œ ๋‚˜์—๊ฒŒ๋„ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. src="./xxx.scss" ๋ฅผ ํ†ตํ•ด ๊ฐ€์ ธ์˜จ ์Šคํƒ€์ผ์˜ ์–ธ์–ด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์–ธ์–ด ๋‚˜ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜์ž๋งˆ์ž ์‹œ์Šคํ…œ์ด ํŽ˜์ด์ง€ ์‹œ์ž‘ ๋ถ€๋ถ„์—์„œ ๋ถˆํ‰์„ ์ค‘์ง€ํ•ฉ๋‹ˆ๋‹ค.

์ด SCS๋“ค์— ๋Œ€ํ•œ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๊ฐ™์€ ๋…ธ๋“œ ๋ง๋Œ€๊พธ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๊ณ  ์•„์ฃผ ํ™•์‹  ์ด ํ•˜๋‚˜ .

์ถœ๋ ฅ-> Svelte in VSCode (ํ•˜๋‹จ์˜๋ณด๊ธฐ, ํ„ฐ๋ฏธ๋„ ์œ„์น˜)๋ฅผ ์—ด๊ณ  ์˜ค๋ฅ˜๋ฅผ ์žฌํ˜„ํ•˜๊ณ  ์—ฌ๊ธฐ์— ์ถœ๋ ฅ ๋‚ด์šฉ์„ ๋ถ™์—ฌ ๋„ฃ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๊ด€๋ จ ๊ฐ€๋Šฅ์„ฑ ์žˆ์Œ : # 32

Node-sass๋กœ ๋กœ์ปฌ ๋ฐ ์ „์—ญ ์ ์œผ๋กœ ์ˆ˜ํ–‰ ํ•œ ์ž‘์—…์€ ์—ฌ๋Ÿฌ ๋ฒˆ ๋‹ค์‹œ๋กœ๋“œ ํ•œ ํ›„์—๋„ ๊ฒฐ๊ณผ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ Svelte์˜ ์ถœ๋ ฅ์ž…๋‹ˆ๋‹ค.

loading config for /PATH/TO/PROJECT/src/Button.svelte
Using Svelte v3.20.1 from /PATH/TO/PROJECT/node_modules/svelte/compiler
Using Svelte v3.20.1 from /PATH/TO/PROJECT/node_modules/svelte/compiler
loading config for /PATH/TO/PROJECT/node_modules/@smui/common/H6.svelte
Using Svelte v3.20.1 from /PATH/TO/PROJECT/node_modules/svelte/compiler
Using Svelte v3.20.1 from /PATH/TO/PROJECT/node_modules/svelte/compiler
loading config for /PATH/TO/PROJECT/src/App.svelte
Using Svelte v3.20.1 from /PATH/TO/PROJECT/node_modules/svelte/compiler
Using Svelte v3.20.1 from /PATH/TO/PROJECT/node_modules/svelte/compiler
loading config for /PATH/TO/PROJECT/src/App.svelte
Using Svelte v3.20.1 from /PATH/TO/PROJECT/node_modules/svelte/compiler
Using Svelte v3.20.1 from /PATH/TO/PROJECT/node_modules/svelte/compiler
loading config for /PATH/TO/PROJECT/src/App.svelte
Using Svelte v3.20.1 from /PATH/TO/PROJECT/node_modules/svelte/compiler
Using Svelte v3.20.1 from /PATH/TO/PROJECT/node_modules/svelte/compiler

Linting SCSS๋Š” ๊ด€๋ จ์ด์žˆ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ธ๋ผ์ธ SCSS๊ฐ€์žˆ์„ ๋•Œ๋„ ์‚ฌ์šฉํ–ˆ์ง€๋งŒ ๋ถ€์ˆ˜์ ์œผ๋กœ ์ด๊ฒƒ์€ ์˜ค๋ฅ˜๊ฐ€ ์•„๋‹ˆ๋ผ ํŒŒ์ผ ์ƒ๋‹จ์— ๊ฒฝ๊ณ ์ž…๋‹ˆ๋‹ค. ๊ตฌ๋ฌธ ๋ถ„์„์— SCSS๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š”์ด htmlxparser.ts ์™€ ๊ด€๋ จ๋œ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@dummdidumm ์ด ๋ฒ„๊ทธ๋ฅผ ๊ฒŒ์‹œํ•˜๊ธฐ ์ „์— ์‹ค์ œ๋กœ ์ถœ๋ ฅ์„ ํ™•์ธ

๊ทธ๊ฒƒ์€ scss์—์„œ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด์™€ ๊ฐ™์€ node-sass ๋ฌธ์ œ๋ผ๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์‚ฌ์‹ค ์ผ ๊ฒƒ์ด๋ผ๊ณ  ํšŒ์˜์ ์ด์ง€๋งŒ ๋‚ด๊ฐ€ ์ฐพ์€ ๊ฒƒ์„ ์กฐ์‚ฌํ•˜๊ณ  ๋ณผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@Egnus ์ถœ๋ ฅ์—์„œ svelte.config.js ๊ฐ€ ๋ฐœ๊ฒฌ๋˜์—ˆ์Œ์„ ์ถ”๋ก  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ตฌ์„ฑ์„ ์ฐพ์„ ์ˆ˜ ์—†์ง€๋งŒ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ( lang / type ์ด (๊ฐ€) script / style ), No svelte.config.js found but one is needed ๋ฉ”์‹œ์ง€ ๋กœ๊ทธ์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
๋˜ํ•œ svelte2tsx ์˜ htmlxparser์™€๋Š” ์•„๋ฌด๋Ÿฐ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๊ฑฐ๊ธฐ์—์„œ ์ˆ˜ํ–‰๋˜๋Š” ์ „์ฒ˜๋ฆฌ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. svelte ์ปดํŒŒ์ผ๋Ÿฌ์—์„œ ์ง„๋‹จ์„ ๊ฐ€์ ธ ์˜ค๋Š” ๋™์•ˆ ์—ฌ๊ธฐ์—์„œ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์€ Svelte ์ถœ๋ ฅ์„ ํ™•์ธํ•  ๋•Œ ์–ป์€ ๋กœ๊ทธ์ž…๋‹ˆ๋‹ค (์ต๋ช…ํ™” ๋œ ๊ฒฝ๋กœ, VS ์ฝ”๋“œ์— ํ‘œ์‹œ ๋  ๋•Œ์™€ ๊ฐ™์€ ์Šฌ๋ž˜์‹œ).

Initialize language server at c:/PATH/TO/PROJECT/
Initialize new ts service at  
loading config for c:/PATH/TO/PROJECT/src/App.svelte
Using Svelte v3.22.3 from c:\PATH\TO\PROJECT\node_modules\svelte\compiler
Using Svelte v3.22.3 from c:\PATH\TO\PROJECT\node_modules\svelte\compiler
loading config for c:/PATH/TO/PROJECT/src/App.svelte
Using Svelte v3.22.3 from c:\PATH\TO\PROJECT\node_modules\svelte\compiler
Using Svelte v3.22.3 from c:\PATH\TO\PROJECT\node_modules\svelte\compiler
loading config for c:/PATH/TO/PROJECT/src/App.svelte
Using Svelte v3.22.3 from c:\PATH\TO\PROJECT\node_modules\svelte\compiler
Using Svelte v3.22.3 from c:\PATH\TO\PROJECT\node_modules\svelte\compiler
loading config for c:/PATH/TO/PROJECT/src/App.svelte
Using Svelte v3.22.3 from c:\PATH\TO\PROJECT\node_modules\svelte\compiler
Using Svelte v3.22.3 from c:\PATH\TO\PROJECT\node_modules\svelte\compiler
loading config for c:/PATH/TO/PROJECT/src/App.svelte
Using Svelte v3.22.3 from c:\PATH\TO\PROJECT\node_modules\svelte\compiler
Using Svelte v3.22.3 from c:\PATH\TO\PROJECT\node_modules\svelte\compiler

@Egnus ์˜ VS Code ์ถœ๋ ฅ๊ณผ ๊ฑฐ์˜ ๋™์ผํ•˜๋ฉฐ Initializing new ts service at ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ์ค‘์š”ํ•œ ๊ฒƒ์ธ์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ๋ฉ”์‹œ์ง€ ์‚ฌ์ด์— ์Šฌ๋ž˜์‹œ๊ฐ€ ๋ฒˆ๊ฐˆ์•„ ๊ฐ€๋ฉฐ ๋ˆˆ์— ๋ˆ๋‹ค.

๋˜ํ•œ node-sass๊ฐ€ ๋‚ด Windows ๋ฐ Node.js ๋ฒ„์ „๊ณผ ํ˜ธํ™˜๋˜๋Š”์ง€ ๋‹ค์‹œ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. node-sass v4.14.1 (ํ˜„์žฌ ์ตœ์‹  ๋ฆด๋ฆฌ์Šค)์€ ๋‚ด ๋ฒ„์ „์˜ ๋…ธ๋“œ v13.7๊ณผ ํ˜ธํ™˜๋ฉ๋‹ˆ๋‹ค.

ํ•œ ๋ฒˆ ๋” ํ™•์ธํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ํ•ด๋‹น ์˜์—ญ์— ๋” ๋งŽ์€ ๋กœ๊ทธ์ธ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์—…๋ฐ์ดํŠธ๋ฅผ ํ‘ธ์‹œํ•˜๊ณ  ์‚ฌ์šฉ์ž์—๊ฒŒ ํ‘œ์‹œ๋˜๋Š” ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋„ ์•ฝ๊ฐ„ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค.

์œ„์˜ ์ปค๋ฐ‹์„ ์–ธ๊ธ‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด ์ปค๋ฐ‹์ด ๋ณ‘ํ•ฉ ๋œ ํ›„ ํ™•์ธํ•˜๊ณ  ํ™•์ธํ•˜๊ธฐ ์ „์— ์ƒˆ ์—…๋ฐ์ดํŠธ๋ฅผ ์„ค์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ์€ ์•ฝ 8 ์‹œ๊ฐ„ ์ „์— ๋งˆ์ง€๋ง‰์œผ๋กœ ์•ผ๊ฐ„์— ๊ฒŒ์‹œ๋˜๋ฏ€๋กœ 14 ์‹œ๊ฐ„ ์ „ ๋กœ๊ทธ๋Š” "์ด์ „"๋ฒ„์ „ ์ผ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค.

์•„, ์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์— ๊ฐ€๋Šฅํ•  ๋•Œ ์ƒˆ ๋กœ๊ทธ๋ฅผ ๋ฐ›๊ฒŒ๋ฉ๋‹ˆ๋‹ค.

๋ช‡ ์‹œ๊ฐ„ ์ „์— ํ™•์ธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

ํฅ๋ฏธ ๋กญ๊ตฐ์š”, ๋‹น์‹  ๋ง์ด ๋งž์•˜์–ด์š” :

Preprocessing failed
Error: Cannot find any of modules: node-sass,sass
    at Object.exports.importAny (/PATH/TO/PROJECT/node_modules/svelte-preprocess/dist/utils.js:1:2844)

svelte.config.js ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋ฅผ ํ™•์ธํ•˜๊ณ  ๋Œ์•„์˜ฌ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ข‹์•„, svelte-preprocess ๋Š” VSCode์— ์˜ํ•ด ์ „์—ญ ๋˜๋Š” ๋กœ์ปฌ ๋ชจ๋‘ node-sass ๋ฅผ ์ฐพ์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋™์ผํ•œ ๋กค์—… ๊ตฌ์„ฑ์ด ๋‹ค์Œ svelte.config.js ๊ฐ€์ ธ ์˜ค๋Š” ๋™์•ˆ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.

// svelte.config.js
const sveltePreprocess = require('svelte-preprocess');

module.exports = {
  preprocess: sveltePreprocess({
    scss: {
      includePaths: ['x', 'y', 'z'],
    },
    typescript: {
      extensions: ['x', 'y', 'z'],
      includePaths: ['x', 'y', 'z'],
    },
  }),
  // ...other svelte options
};

// The following alternative should make SCSS to work but nothing else will. Why the auto preprocess does not work here?

// import sass from 'node-sass';
// module.exports = {
//   preprocess: {
//     style: async ({ content, attributes }) => {
//       if (attributes.type !== 'text/scss') {
//         return;
//       }

//       const result = await sass.renderSync({
//         data: content,
//         sourceMap: 'style.css.map',
//         omitSourceMapUrl: true,
//       });

//       return {
//         code: result.css.toString('utf8'),
//         map: result.map.toString('utf8'),
//       };
//     },
//   },
// };

Svelte Beta์˜ ๋ฌธ์ œ์ผ๊นŒ์š”? ์ „์ฒ˜๋ฆฌ๋ฅผ ์ง์ ‘ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ ์™ธ์—๋Š”์ด ์‹œ์ ์—์„œ VSCode์— ๋Œ€ํ•œ node-sass์˜ ๊ฒฝ๋กœ๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ๋ฐฉ๋ฒ•์„ ๋ชจ๋ฆ…๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์„ master์—์„œ ์–ป๊ณ  ์žˆ๊ณ  ๋‚ด ์ปดํ“จํ„ฐ์— node-sass๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. Typescript๊ฐ€ ์ž‘๋™ ์ค‘์ž…๋‹ˆ๋‹ค (!!!) ๋‹ค์†Œ ์„ฑ๊ฐ€์‹  ๋ฆฐํŠธ ๊ฒฝ๊ณ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

.
โ”œโ”€โ”€ home.svelte
โ”œโ”€โ”€ node_modules
โ”‚ย ย  โ”œโ”€โ”€ <strong i="6">@types</strong>
โ”‚ย ย  โ”œโ”€โ”€ detect-indent
โ”‚ย ย  โ”œโ”€โ”€ min-indent
โ”‚ย ย  โ”œโ”€โ”€ strip-indent
โ”‚ย ย  โ””โ”€โ”€ svelte-preprocess
โ”œโ”€โ”€ package-lock.json
โ”œโ”€โ”€ package.json
โ””โ”€โ”€ svelte.config.js

home.svelte

<script lang="typescript">
  export let title: string = "10";
</script>

<style>
  h2 {
    background: blue;
  }
</style>

<html lang="en">
  <h2>{parseInt(title, 10)}</h2>
</html>

svelte.config.js

const sveltePreprocess = require('svelte-preprocess')

module.exports = {
  preprocess: sveltePreprocess(),
}

CleanShot 2020-06-02 at 21 37 06@2x

์ด ๋ฒ”์œ„๋ฅผ ์ขํžˆ๊ธฐ ์œ„ํ•ด ๋” ๋งŽ์€ ๊ฒƒ์„ ํ…Œ์ŠคํŠธํ•˜๊ฒŒ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค.


๋‚˜๋Š” ๋˜ํ•œ โค๏ธ svelte.config.js ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ๋ช‡ ๊ฐ€์ง€ ์ผ๋ฐ˜์ ์ธ ๊ตฌ์„ฑ์„ ๊ตฌ์›Œ ๋†“์•˜์Šต๋‹ˆ๋‹ค. PR์„ ์—ด์–ด์„œ ๊ธฐ์ฉ๋‹ˆ๋‹ค. ํŽธ์ง‘ , ๋‚˜๋Š” _think_ https://github.com/sveltejs/language-tools/pull/87 ์ด ์ผ์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค ๐Ÿ‘

mm Im ํ˜ธ๊ธฐ์‹ฌ์ด @matthewmueller , ํ™•์žฅ ๊ธฐ๋Šฅ์—์„œ

์•„ํ•˜! ํฌ์ธํ„ฐ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

์ข‹์•„, ๊ทธ๋ž˜์„œ ์ด๊ฒƒ์€ ๋‚ด๊ฐ€ ๋†€์•˜๊ณ  ์‹ค์ œ ์•ฑ์—์„œ ์•„์ง ํ…Œ์ŠคํŠธํ•˜์ง€ ์•Š์•˜๋‹ค๋Š” ๊ฒƒ์„ ๋“œ๋Ÿฌ๋‚ธ๋‹ค ๐Ÿ˜†

๋Œ์ด์ผœ ๋ณด๋ฉด ๋ช…๋ฐฑํ•œ ๋‘ ๊ฐ€์ง€ ์•”์‹œ ์  ์ข…์†์„ฑ์ด ์žˆ์ง€๋งŒ ๊ฒฝ๊ณ ๋Š” ๋‹น์‹ ์„ ํƒ€๋ฝํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

  1. ์˜ค๋ฅ˜ : 'svelte / package.json'๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  2. ์˜ค๋ฅ˜ : [svelte-preprocess] 'typescript'๋ณ€ํ™˜ ์ค‘ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. 'typescript'๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

VSCode๊ฐ€ Typescript์—์„œ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ ์‚ฌ๋žŒ๋“ค์ด ๋น ๋ฅด๊ฒŒ ๋†€ ์ˆ˜ ์žˆ๋„๋ก ๋Œ€์ฒด Typescript ๋ฐ Svelte๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ๋ฉ‹์งˆ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์„ ๊ตฝ๋Š” ๊ฒƒ๊ณผ ๊ด€๋ จํ•˜์—ฌ : ๋‚˜๋„ ์ด๊ฒƒ์— ๋Œ€ํ•ด ์ƒ๊ฐํ–ˆ์ง€๋งŒ, ๋‚ ์”ฌํ•œ ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ์ด๋ฏธ ์‚ฌ์šฉ์ž ์ง€์ • ์ „์ฒ˜๋ฆฌ๊ธฐ์— ๋„ˆ๋ฌด ์ต์ˆ™ ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ชจ๋“  ๊ฒƒ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ ์•ˆ์— ์žˆ๋‹ค๋ฉด, ์ด๊ฒƒ์€ node-sass, less, babel, ..๊ณผ ๊ฐ™์€ ์˜์กด์„ฑ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋ถ€ํ’€๊ฒŒํ•ฉ๋‹ˆ๋‹ค.

ํŠน์ • ๋ฌธ์ œ๋กœ ๋Œ์•„ ๊ฐ€๋ฉด ๋‘ ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ๋ชจ๋“ˆ ํ•ด์ƒ๋„๋Š” ๋•Œ๋•Œ๋กœ ๋ง๊ฐ€์ง‘๋‹ˆ๋‹ค. ์กฐ์‚ฌ๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? yarn์˜ pnp์™€ ๊ฐ™์€ ์„ค์ •์ด ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ๋„ ์ฃผ๋ชฉํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. node-sass๋Š” ์‚ฌ์šฉ๋˜๋Š” ๋…ธ๋“œ ๋ฒ„์ „์— ๋งค์šฐ ๋ฏผ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‚˜์—๊ฒŒ ์žˆ์–ด์„œ๋Š” ๋‚ ์”ฌํ•œ ๋ฒ ํƒ€ ์„ค์ •์—์„œ ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ์„ ๋‚˜๋จธ์ง€ ์•ฑ์—์„œ๋„ ์‚ฌ์šฉ๋˜๋Š” ๋‚ด ๋…ธ๋“œ ์‹คํ–‰ ํŒŒ์ผ๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒํ•˜์ง€ ์•Š์œผ๋ฉด VSCode์˜ ๋…ธ๋“œ ๋ฒ„์ „์ด ์‚ฌ์šฉ๋˜๋ฉฐ ์ผ์น˜ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@dummdidumm ๋‚˜๋Š” ๋‹น์‹ ์˜ ๊ฐ์ •์— ๋Œ€ํ•ด ๋Š๋‚๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ €๋Š” ๊ฐœ์ธ์ ์œผ๋กœ Typescript๊ฐ€ ์ผ๋ฅ˜ ์ง€์›์„ ๋ณด์žฅํ•˜๋Š” ํŠน์ • ์ˆ˜์ค€์˜ ์ธ๊ธฐ์— ๋„๋‹ฌํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์ƒˆ๋กœ์šด ์ฝ”๋“œ๋ฒ ์ด์Šค๋Š” Typescript๋กœ ์‹œ์ž‘ํ•˜๊ณ  ์ด์ „ ์ฝ”๋“œ๋ฒ ์ด์Šค๋Š” ์—…๊ทธ๋ ˆ์ด๋“œ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด Svelte๋ฅผ ์‹œ๋„ํ•˜๋Š” ๊ฒƒ์„ ์ฐจ๋‹จํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค : https://news.ycombinator.com/item?id=21376557

์ €๋Š” ๊ฐœ์ธ์ ์œผ๋กœ ์ผ๋ฅ˜ ๋ฐ”๋ฒจ ์ง€์›์„ ๊ฑด๋„ˆ ๋›ฐ๊ณ  ์‚ฌ๋žŒ๋“ค์ด ์–ผ๋งˆ๋‚˜ ๋ถˆํ‰ํ•˜๋Š”์ง€๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ตฌ์„ฑ์— ๋„ˆ๋ฌด ๋งŽ์€ ๊ฐ€๋ณ€์„ฑ์ด ์žˆ๊ณ  ์ง€์› ์ธก๋ฉด์—์„œ ์›œ ์บ”์„ ์—ด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ์ด๋Ÿฌํ•œ ๋งŒ์žฅ์ผ์น˜ ์ง€์›์— ๋„๋‹ฌ ํ•œ CSS ์†”๋ฃจ์…˜์ด ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ Svelte๋Š” ์ด๋ฏธ ํ›Œ๋ฅญํ•œ ๋ฒ”์œ„์˜ CSS ์†”๋ฃจ์…˜์„ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ˜•์‹ํ™” ๋œ ์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ๋งŒํผ ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์•„ํ•˜! ํฌ์ธํ„ฐ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

์ข‹์•„, ๊ทธ๋ž˜์„œ ์ด๊ฒƒ์€ ๋‚ด๊ฐ€ ๋†€์•˜๊ณ  ์‹ค์ œ ์•ฑ์—์„œ ์•„์ง ํ…Œ์ŠคํŠธํ•˜์ง€ ์•Š์•˜๋‹ค๋Š” ๊ฒƒ์„ ๋“œ๋Ÿฌ๋‚ธ๋‹ค ๐Ÿ˜†

๋Œ์ด์ผœ ๋ณด๋ฉด ๋ช…๋ฐฑํ•œ ๋‘ ๊ฐ€์ง€ ์•”์‹œ ์  ์ข…์†์„ฑ์ด ์žˆ์ง€๋งŒ ๊ฒฝ๊ณ ๋Š” ๋‹น์‹ ์„ ํƒ€๋ฝํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

1. Error: Cannot find module 'svelte/package.json'

2. Error: [svelte-preprocess] Error transforming 'typescript'. Cannot find module 'typescript'

VSCode๊ฐ€ Typescript์—์„œ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ ์‚ฌ๋žŒ๋“ค์ด ๋น ๋ฅด๊ฒŒ ๋†€ ์ˆ˜ ์žˆ๋„๋ก ๋Œ€์ฒด Typescript ๋ฐ Svelte๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ๋ฉ‹์งˆ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

package.json์€ ํฅ๋ฏธ ๋กญ์Šต๋‹ˆ๋‹ค. ํ™•์ธํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ๋‚ด์žฅ ๋œ svelte ๋ฒ„์ „์œผ๋กœ ๋Œ์•„ ๊ฐ€์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์™ธ์—๋„, ์ด๊ฒƒ์€ ์ด๋ฏธ ํƒ€์ดํ”„ ์Šคํฌ๋ฆฝํŠธ์—์„œ๋งŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. svelte.config.js๋ฅผ ์™„์ „ํžˆ ์‚ญ์ œํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ typescript๋ฅผ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์ง€๋งŒ ๊ทธ ์ด์ƒ์€ ์ฒ˜๋ฆฌ ํ•  ์ˆ˜์—†๋Š” ํด ๋ฐฑ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ํ•ด๋‹น ์˜์—ญ์— ๋„ˆ๋ฌด ๋งŽ์€ ๋ณ€๋™์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์€ ๋ฌธ์„œํ™”๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๋„ค, ๋†€๋ž์Šต๋‹ˆ๋‹ค! svelte.config.js ์ œ๊ฑฐํ•˜๊ณ  svelte ๋ฐ typescript ์ข…์†์„ฑ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋งค๋ ฅ์ฒ˜๋Ÿผ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค!

๋‚จ์ž์—๊ฒŒ ๋ฌผ๊ณ ๊ธฐ๋ฅผ ๊ฐ€๋ฅด์ณ ์ค€ @egnus ์—๊ฒŒ๋„ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

์˜ˆ, svelte.config.js ์ œ๊ฑฐํ•˜๋ฉด ๋ฌธ์ œ๋„ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

@dummdidumm ํ™•์ธํ•˜๊ณ 

Initialize language server at  c:/PATH/TO/PROJECT/
Initialize new ts service at  
Trying to load config for c:/PATH/TO/PROJECT/src/App.svelte
Found config at  c:\PATH\TO\PROJECT\svelte.config.js
Using Svelte v3.22.3 from c:\PATH\TO\PROJECT\node_modules\svelte\compiler
Using Svelte v3.22.3 from c:\PATH\TO\PROJECT\node_modules\svelte\compiler
Preprocessing failed
Error: Cannot find any of modules: node-sass,sass
    at Object.exports.importAny (c:\PATH\TO\PROJECT\node_modules\svelte-preprocess\dist\utils.js:1:2844)

๋˜ํ•œ svelte.config.js ํŒŒ์ผ์„ ์ œ๊ฑฐํ•˜๋Š” ์‹คํ—˜์„ํ–ˆ์ง€๋งŒ ์ œ ๊ฒฝ์šฐ์—๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜๋„ ํ† ๋ก ์— ๋Œ€ํ•ด ์ดํ•ด ํ•œ ๋ฐ”์— ๋”ฐ๋ฅด๋ฉด typescript ์ „์ฒ˜๋ฆฌ๊ธฐ๋งŒ ์‚ฌ์šฉ๋˜๋Š” ์ƒํ™ฉ ๋งŒ ์ˆ˜์ •ํ•˜๋ ค๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ์ œ๊ธฐํ•˜๋Š” ์งˆ๋ฌธ์€ Svelte๊ฐ€ node_modules ๋Œ€์‹  ์‹œ์Šคํ…œ ๊ฒฝ๋กœ์—์žˆ์„ node-sass ๋˜๋Š” sass ๋ฅผ ์ฐพ๊ณ  ์žˆ๋Š”์ง€ ์—ฌ๋ถ€์ž…๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ๋ฅผ ์œ„ํ•ด ๋กœ์ปฌ๋กœ node-sass ์„ค์น˜ํ–ˆ์ง€๋งŒ ์ „์—ญ ์ ์œผ๋กœ ์„ค์น˜ํ•˜์ง€๋Š” ์•Š์•˜์Šต๋‹ˆ๋‹ค.

"๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ : ..."์˜ค๋ฅ˜๋Š” ํŒจํ‚ค์ง€๋ฅผ ์ฐพ์„ ์ˆ˜์—†๋Š” ๊ฒฝ์šฐ, ๋ชจ๋“ˆ ํ™•์ธ์—์„œ ์ฐพ์ง€ ๋ชปํ–ˆ๊ฑฐ๋‚˜ ๋ฐœ๊ฒฌํ–ˆ์ง€๋งŒ ๋…ธ๋“œ ๋ฒ„์ „์ด ์ผ์น˜ํ•˜์ง€ ์•Š์•„ node-sass๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋‚˜ํƒ€๋‚  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋ฅ˜. svelte-preprocess ๋Š”์ด ๋‘ ์˜ค๋ฅ˜๋ฅผ ๋ชจ๋‘ ์‚ผํ‚ค๊ณ  "๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค : ..."๋ฅผ ๋‚ด ๋ณด๋ƒ…๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์„ ์‹œ๋„ํ–ˆ๊ณ  ๋‚ด๊ฐ€ ๊ฒช์€ ๋ฌธ์ œ ๋Š” svelte.language-server.runtime ๋ฅผ ์„ค์ •ํ•˜์—ฌ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
@JoeBobMiles js ํŒŒ์ผ์—์„œ node-sass ๋ฅผ ์š”๊ตฌํ•˜๊ณ  ๋…ธ๋“œ๋กœ ํŒŒ์ผ์„ ์‹คํ–‰ํ•˜์—ฌ ์˜ค๋ฅ˜๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

const nodeSass = require('node-sass')

console.log(nodeSass)

์ด ํ…Œ์ŠคํŠธ ์ค‘ @JoeBobMiles ๋Š” svelte.config.js ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ DevDependency๋กœ sass ๋„ ์„ค์น˜ํ•˜๊ณ  (๋…ธ๋“œ sass ๋งŒ ์žˆ์Œ) ์ „์—ญ ์ ์œผ๋กœ node-sass๋ฅผ ์„ค์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฏธ ์ด์ „์— ์„ฑ๊ณตํ•˜์ง€ ๋ชปํ•œ ์ƒํƒœ์—์„œ JS ํŒŒ์ผ์„ ์ œ๊ฑฐํ–ˆ์„ ๋•Œ Svelte Beta๊ฐ€ ์ž‘๋™ํ–ˆ์ง€๋งŒ ๋‹ค๋ฅธ ์„ธ๋ถ€ ์‚ฌํ•ญ ์ค‘ ์–ด๋–ค ๊ฒƒ์ด ์˜ํ–ฅ์„ ๋ฐ›์•˜๋Š”์ง€ ์‹ค์ œ๋กœ ์•Œ ์ˆ˜ ์—†์œผ๋ฉฐ ์ง€๊ธˆ์€ ํ…Œ์ŠคํŠธ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
์ด๋Ÿฌํ•œ ์ถ”๊ฐ€ ๋ณ€๊ฒฝ์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ๋ ค์ฃผ์‹ญ์‹œ์˜ค. ๋˜ํ•œ ์‹œ๋„ ํ•  ๋•Œ๋งˆ๋‹ค Language-tools ๋ฐ vscode ์ฐฝ์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜์‹ญ์‹œ์˜ค.

@ jasonlyu123 ์กฐ์–ธ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ ์Šค ๋‹ˆํŽซ์„ ์‚ฌ์šฉํ•˜์—ฌ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ node-sass ๊ฐ€ ์‹ค์ œ๋กœ ์ž‘๋™ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. (์›นํŒฉ์ด ๋ฌธ์ œ์—†์ด ์ปดํŒŒ์ผ ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์—์ด ๊ฒ€์‚ฌ๊ฐ€ ์ค‘๋ณต๋˜์—ˆ์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋ฐฉ๊ธˆ ์ž…๋ ฅ ํ•œ ๊ฒƒ์œผ๋กœ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค.)

๊ทธ๋Ÿฌ๋‚˜ node-sass ๊ฐ€ ๋ฌธ์ œ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. sass ์„ค์น˜ํ•˜๊ณ  sass ๋งŒ ์„ค์น˜ ํ•œ ํ›„ Svelte Beta๋Š” ๊ฒฝ๊ณ ๋ณด๊ณ ๋ฅผ ์ค‘์ง€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ํ”„๋กœ์ ํŠธ์—์„œ node-sass ์„ ์ œ๊ฑฐํ–ˆ๋Š”๋ฐ ๊ฒฝ๊ณ ๊ฐ€ ๋‹ค์‹œ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. Svelte Beta๋Š” sass ๋˜๋Š” node-sass ๋Œ€์‹  sass ๋งŒ ์ฐพ๊ณ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ lang ๊ฐ’์„ scss ์—์„œ sass ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ–ˆ์œผ๋ฉฐ linting๊ณผ ๊ด€๋ จ๋œ ์žฌ๋ฏธ์žˆ๋Š” ๋™์ž‘์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. Svelte Beta๋Š” ๋” ์ด์ƒ ๋ถˆํ‰ํ•˜์ง€ ์•Š์ง€๋งŒ VS Code์˜ CSS linter๋Š” ์Šคํƒ€์ผ ํƒœ๊ทธ ๋‚ด์—์„œ ๋“ค์—ฌ ์“ฐ๊ธฐ ๊ธฐ๋ฐ˜ Sass ๊ตฌ๋ฌธ์„ ๋ณด๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

SvelteWarning004

Svelte ๋ฒ ํƒ€ ๋ฌธ์ œ๋ณด๋‹ค VS ์ฝ”๋“œ ๋ฌธ์ œ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

SASS๋Š” ํ˜„์žฌ๋กœ์„œ๋Š” ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Linting ๋“ฑ์„ ์œ„ํ•ด https://github.com/microsoft/vscode-css-languageservice/tree/master/src ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” SASS๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ํ†ตํ•ด ์˜ค๋ฅ˜๊ฐ€ ์ˆ˜์ • ๋œ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด์ด ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ•˜๊ณ ์ด ๋ฌธ์ œ์˜ ์›์ธ์„ ํŒŒ์•…ํ•˜๊ธฐ ์œ„ํ•ด์ด ๋ฌธ์ œ๋ฅผ ์—ด์–ด๋‘๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ์— ๋Œ€ํ•œ ์•ฝ๊ฐ„์˜ ํ”ผ๋“œ๋ฐฑ. ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ "svelte.language-server.runtime": "/<LOCAL_PATH>/bin/node" ์„ ์„ค์ •ํ•˜์—ฌ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์ด vscode ํ™•์žฅ Code Helper (Renderer) ์˜ ๊ธฐ๋ณธ ๋…ธ๋“œ ๋Ÿฐํƒ€์ž„์ด ์ „์ž ์‚ฌ์šฉ์ž ์ง€์ • ๋นŒ๋“œ์ด๊ธฐ ๋•Œ๋ฌธ์— node-sass์™€ ๊ฐ™์€ ๋„ค์ดํ‹ฐ๋ธŒ lib๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

ps aux ์ถœ๋ ฅ :

/Applications/Visual Studio Code.app/Contents/Frameworks/Code Helper (Renderer).app/Contents/MacOS/Code Helper (Renderer) --inspect=6009 /Users/username/.vscode/extensions/svelte.svelte-vscode-99.0.39/node_modules/svelte-language-server/bin/server.js --node-ipc --clientProcessId=72991

์ด๊ฒƒ์„ ์–ด๋”˜๊ฐ€์— ๋ฌธ์„œํ™”ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๋˜๋Š” ๋” ๋‚˜์€ ๋ฐฉ๋ฒ•์€ ๊ธฐ๋ณธ์ ์œผ๋กœ exec('/usr/bin/env which node') ์™€ ๊ฐ™์€ ํ™•์žฅ ๋‚ด์—์„œ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ์ผ๋ฐ˜ ๋…ธ๋“œ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค (Windows์—์„œ ๋™์ผํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ํ™•์‹คํ•˜์ง€ ์•Š์Œ).

๋ฌธ์„œํ™” ๋˜์–ด ์žˆ์œผ๋ฉฐ IDE์˜ ๊ฒฝ๊ณ ๋„ ์ด์— ๋Œ€ํ•ด ์•”์‹œํ•ฉ๋‹ˆ๋‹ค.

๊ฒฝ๊ณ ๋Š” ๋‹ค๊ฐ€์˜ค๋Š” ์ œํ’ˆ ๋ฆด๋ฆฌ์Šค์—์„œ ๋” ๋‚˜์•„์งˆ ๊ฒƒ์ด๋ฉฐ ์ด๋ฏธ ์•ผ๊ฐ„์— ํ…Œ์ŠคํŠธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์•ž์œผ๋กœ ๋ฌธ์ œ๋ฅผ ์ขํž ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” ์ด๋ฏธ ๋„ˆ๋ฌด ๋งŽ์€ ์ผ์ด ๋ณ‘๋ ฌ๋กœ ์ง„ํ–‰๋˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋Œ€๋ถ€๋ถ„์˜ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€๋Š” ์•Š๋”๋ผ๋„์ด ๋ฌธ์ œ๋ฅผ ์ข…๋ฃŒํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. SCSS ๊ด€๋ จ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ƒˆ ๋ฌธ์ œ๋ฅผ์—ฌ์‹ญ์‹œ์˜ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰