Language-tools: ν™•μž₯ 없이 Svelte ꡬ성 μš”μ†Œ κ°€μ Έμ˜€κΈ° 지원

에 λ§Œλ“  2020λ…„ 09μ›” 23일  Β·  5μ½”λ©˜νŠΈ  Β·  좜처: sveltejs/language-tools

κΈ°λŠ₯ μš”μ²­μ΄ λ¬Έμ œμ™€ κ΄€λ ¨λ˜μ–΄ μžˆμŠ΅λ‹ˆκΉŒ?

λ§Žμ€ ν•˜μœ„ ꡬ성 μš”μ†Œκ°€ μžˆλŠ” λ³΅μž‘ν•œ ꡬ성 μš”μ†Œκ°€ μžˆμŠ΅λ‹ˆλ‹€. ν•˜μœ„ ꡬ성 μš”μ†ŒλŠ” λΉ„κ³΅κ°œμ΄λ©° ν•¨κ»˜ λͺ¨μ—¬ ν•˜λ‚˜μ˜ 큰 ꡬ성 μš”μ†Œλ₯Ό λ§Œλ“­λ‹ˆλ‹€.

λ‹€μŒμ€ μ˜ˆμž…λ‹ˆλ‹€.

form/
  input.svelte
  textarea.svelte
  index.svelte
  radio.svelte
  checkbox.svelte

μ›ν•˜λŠ” μ†”λ£¨μ…˜ μ„€λͺ…

form/index.svelte λͺ…μ‹œμ μœΌλ‘œ μž‘μ„±ν•˜λŠ” λŒ€μ‹  form/ λ₯Ό form/index.svelte 둜 ν•΄κ²°ν•  수 있기λ₯Ό λ°”λžλ‹ˆλ‹€.

이 ν”ŒλŸ¬κ·ΈμΈμ€ 기본적으둜 .svelte ν™•μž₯자λ₯Ό 가진 νŒŒμΌμ— λŒ€ν•΄ node.js μŠ€νƒ€μΌ 해상도λ₯Ό 따라야 ν•œλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

form/             => form/index.svelte
form/input        => form/input.svelte (or form/input/index.svelte)
form/input.svelte => form/input.svelte
enhancement

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

이에 λŒ€ν•œ 리치의 심정을 μ•Œκ³  μ‹Άλ‹€λ©΄ https://twitter.com/Rich_Harris/status/1002959357250801664 - 그리고 Node.js의 μ œμž‘μž Ryan Dahlκ³Ό λ™μΌν•œ λ‚΄μš©μž…λ‹ˆλ‹€.

저도 λ™μ˜ν•©λ‹ˆλ‹€. 당신은 ν™•μž₯μžκ°€μ—†λŠ” νŒŒμΌμ„ ν•΄κ²°ν•  수 μžˆμŠ΅λ‹ˆλ‹€ν•΄μ„œ, 당신이해야 μ˜λ―Έν•˜μ§€ μ•ŠλŠ”λ‹€.

λͺ¨λ“  5 λŒ“κΈ€

λ‚˜λŠ” 이것에 λ°˜λŒ€ν•©λ‹ˆλ‹€. 그러면 μ–΄λ–€ 파일이 Svelte 파일이고 μ–΄λ–€ 파일이 일반 νŒŒμΌμΈμ§€ 더 이상 ꡬ별할 수 μ—†κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€. index.js 와 index.svelte κ°€ 같은 폴더에 있으면 μ–΄λ–»κ²Œ λ©λ‹ˆκΉŒ? 무엇을 μˆ˜μž…ν•΄μ•Όν•©λ‹ˆκΉŒ? 이것은 획기적인 λ³€ν™”κ°€ 될 κ²ƒμž…λ‹ˆλ‹€. λ˜ν•œ λ‚΄κ°€ μ•„λŠ” ν•œ λ²ˆλ“€λŸ¬μ—μ„œλ„ μ§€μ›ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

κ·€ν•˜μ˜ νŠΉμ • κ²½μš°μ—λŠ” λ‹€μŒ λ‚΄μš©κ³Ό ν•¨κ»˜ index.js λ₯Ό μΆ”κ°€ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.

export { default as Index } from './index.svelte';
// ... you can add your other Svelte files here as well

그런 λ‹€μŒ λ‹€μŒκ³Ό 같이 κ°€μ Έμ˜΅λ‹ˆλ‹€.

<script>
   import { Index } from './form';
</script>

응닡해 μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€. λ‚˜λŠ” 이 λ¬Έμ œκ°€ 맀우 λ…ΌμŸμ˜ 여지가 μžˆλ‹€κ³  μƒκ°ν•˜μ§€ μ•Šμ•˜κΈ° λ•Œλ¬Έμ— μš°λ¦¬κ°€ 같은 νŽ˜μ΄μ§€μ— μžˆλŠ”μ§€ λ‹€μ‹œ ν™•μΈν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€.

Javascript, Typescript, JSX λ˜λŠ” TSX νŒŒμΌμ„ ν•΄κ²°ν•˜λŠ” 것과 λ™μΌν•œ λ°©μ‹μœΌλ‘œ Svelte νŒŒμΌμ„ ν•΄κ²°ν•˜λŠ” κΈ°λŠ₯을 μš”μ²­ν•©λ‹ˆλ‹€.

같은 λ°©μ‹μœΌλ‘œ Typescript λ˜λŠ” React ν”„λ‘œμ νŠΈμ— ν™•μž₯을 μΆ”κ°€ν•  ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€.

import A from "./a.ts"
// you can just do
import A from "./a"

VSCode typescript ν•΄μ„κΈ°λŠ” Node.js 해석 κ·œμΉ™μ„ λ”°λ¦…λ‹ˆλ‹€. λ…Έλ“œμ˜ 해상도 κ·œμΉ™ 섀계에 λŒ€ν•΄ 이야기할 λ•Œ κ·€ν•˜μ˜ μš”μ μ€ 맀우 μœ νš¨ν•©λ‹ˆλ‹€. 더 μ œν•œμ μ΄λΌλŠ” 데 λ™μ˜ν•©λ‹ˆλ‹€.

ν•˜μ§€λ§Œ κ·Έ λ°°κ°€ μΆœν•­ν–ˆλ‹€λ©΄ .svelte ν™•μž₯이 .ts , .tsx , .jsx ν™•μž₯κ³Ό λ‹€λ₯Έ 점은 λ¬΄μ—‡μž…λ‹ˆκΉŒ?

ν™•μž₯을 κ±΄λ„ˆλ›°λŠ” 것은 μ—­μ‚¬μ μœΌλ‘œ Node의 ν•΄κ²° λ©”μ»€λ‹ˆμ¦˜μ˜ νŠΉμ΄ν•œ μ μž…λ‹ˆλ‹€. λ‹Ήμ‹œ 토둠에 μ°Έμ—¬ν–ˆλ˜ Npm의 μ•„μ΄μž‘ Z. μŠλ£¨ν„°(Isaac Z. Schlueter)λŠ” 이후 이에 λŒ€ν•΄ μœ κ°μ„ ν‘œλͺ…ν–ˆλ‹€. 그리고 κ·ΈλŠ” μžμ‹ μ˜ κ²Œμ‹œλ¬Όμ— 달린 λŒ“κΈ€μ—μ„œ 이해할 수 μ—†λ‹€λŠ” λ°˜μ‘μ„ λ³΄μ˜€μŠ΅λ‹ˆλ‹€. 이것은 ν™•μ‹€νžˆ 맀우 λ…Όλž€μ˜ 여지가 μžˆλŠ” μ£Όμ œμž…λ‹ˆλ‹€.

ν‘œμ€€ ESM κ°€μ Έμ˜€κΈ°μ—λŠ” ν™•μž₯을 κ±΄λ„ˆλ›°λŠ” μ˜λ―Έκ°€ μ—†μœΌλ©° 기본적으둜 Svelte(및 Rollup)κ°€ μΌμΉ˜ν•˜λŠ” λ°©ν–₯μž…λ‹ˆλ‹€.

즉, 그것은 μˆœμ „νžˆ μ‚¬μš©ν•˜λŠ” λ²ˆλ“€λŸ¬μ˜ κ΄€μ‹¬μ‚¬μž…λ‹ˆλ‹€. λ‚΄ 기얡이 λ§žλ‹€λ©΄ Webpack .svelte ν™•μž₯μžλŠ” 기본적으둜 선택 μ‚¬ν•­μž…λ‹ˆλ‹€. 그리고 Rollupμ—μ„œλŠ” node-resolve ν”ŒλŸ¬κ·ΈμΈμ˜

즉, 그것은 μˆœμ „νžˆ μ‚¬μš©ν•˜λŠ” λ²ˆλ“€λŸ¬μ˜ κ΄€μ‹¬μ‚¬μž…λ‹ˆλ‹€. λ‚΄ 기얡이 λ§žλ‹€λ©΄ Webpack .svelte ν™•μž₯μžλŠ” 기본적으둜 선택 μ‚¬ν•­μž…λ‹ˆλ‹€. 그리고 Rollupμ—μ„œλŠ” node-resolve ν”ŒλŸ¬κ·ΈμΈμ˜

ν₯λ―Έλ‘­κ²Œλ„ webpack ν”ŒλŸ¬κ·ΈμΈμ—μ„œ ν™•μž₯이 기본적으둜 선택 μ‚¬ν•­μ΄λΌλŠ” 것을 λͺ°λžμŠ΅λ‹ˆλ‹€.

이것을 μ§€μ›ν•œλ‹€λŠ” 것은 λͺ¨λ“ˆ 해석이 μ–Έμ–΄ μ„œλ²„μ—μ„œ .svelte 없이 μž‘μ„±λœ Svelte κ°€μ Έμ˜€κΈ°λ₯Ό μ›ν•˜λŠ” 경우 λΉŒλ“œ ꡬ성도 λ³€κ²½ν•΄μ•Ό ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λ‚˜λŠ” λ‹€λ₯Έ μ‚¬λžŒλ“€μ΄ 이것에 λŒ€ν•΄ 평가할 수 μžˆλ„λ‘ λ‹€μ‹œ μ—΄ κ²ƒμž…λ‹ˆλ‹€.

이에 λŒ€ν•œ 리치의 심정을 μ•Œκ³  μ‹Άλ‹€λ©΄ https://twitter.com/Rich_Harris/status/1002959357250801664 - 그리고 Node.js의 μ œμž‘μž Ryan Dahlκ³Ό λ™μΌν•œ λ‚΄μš©μž…λ‹ˆλ‹€.

저도 λ™μ˜ν•©λ‹ˆλ‹€. 당신은 ν™•μž₯μžκ°€μ—†λŠ” νŒŒμΌμ„ ν•΄κ²°ν•  수 μžˆμŠ΅λ‹ˆλ‹€ν•΄μ„œ, 당신이해야 μ˜λ―Έν•˜μ§€ μ•ŠλŠ”λ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰