Sentry-javascript: @sentry/๋ธŒ๋ผ์šฐ์ € ํฌ๊ธฐ

์— ๋งŒ๋“  2018๋…„ 09์›” 20์ผ  ยท  69์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: getsentry/sentry-javascript

ํŒจํ‚ค์ง€ + ๋ฒ„์ „

  • [x] @sentry/browser
  • [ ] @sentry/node
  • [ ] raven-js
  • [ ] raven-node _(๋…ธ๋“œ์šฉ ๋ ˆ์ด๋ธ)_
  • [ ] ๋‹ค๋ฅธ:

๋ฒ„์ „:

4.0.2

์„ค๋ช…

@sentry/browser์˜ ํฌ๊ธฐ๋Š” raven-js ํฌ๊ธฐ์˜ ๋‘ ๋ฐฐ ์ด์ƒ์ž…๋‹ˆ๋‹ค(86kB ๋Œ€ 39kB(์ถ•์†Œ)). ์ œ ์ƒ๊ฐ์—๋Š” ์ด๊ฒƒ์€ ํ™•์‹คํžˆ ํ‡ด๋ณด์ด๋ฉฐ ์ƒˆ ๋ฒ„์ „์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜์ง€ ์•Š๋Š” ์‹ฌ๊ฐํ•œ ์ด์œ ์ž…๋‹ˆ๋‹ค.

Discussion Improvement

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

์••์ถ•๋˜์ง€ ์•Š์€ ์ถ•์†Œ ํŒŒ์ผ ํฌ๊ธฐ ๋Œ€์‹  gzip ๋ฒˆ๋“ค ํฌ๊ธฐ๋ฅผ ๋จผ์ € ๋น„๊ตํ•˜๋Š” ๊ฒƒ์ด ๊ณต์ •ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์„ฑ๋Šฅ ๋ฌธ์ œ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋‹ค์šด๋กœ๋“œ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๊ตฌ๋ฌธ ๋ถ„์„ ๋ฐ ์‹คํ–‰์—์„œ๋„ ๋ฐœ์ƒํ•˜๋ฏ€๋กœ ์ถ•์†Œ๋œ ํฌ๊ธฐ๋ฅผ ๋น„๊ตํ•˜๋Š” ๊ฒƒ๋„ ๊ณต์ •ํ•˜๋‹ค๊ณ  ์ฃผ์žฅํ•ฉ๋‹ˆ๋‹ค. ~92kb๋Š” ์ƒ๋‹นํžˆ ๋ฌด๊ฒ๊ณ  ์ €์‚ฌ์–‘ ์žฅ์น˜์—์„œ ์ตœ๋Œ€ 1์ดˆ์˜ ๊ตฌ๋ฌธ ๋ถ„์„ ์‹œ๊ฐ„์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์ด ํ•˜๋‚˜์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—๋งŒ ํ•ด๋‹น).

CDN๋œ ์Šคํฌ๋ฆฝํŠธ์˜ < 1KB ๋ฒˆํ˜ธ๋ฅผ ์–ด๋””์„œ ๊ฐ€์ ธ์™”๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ž์„ธํžˆ ์„ค๋ช…ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? https://browser.sentry-cdn.com/4.0.4/bundle.min.js ๋ฅผ ์—ด๋ฉด 22KB์˜ gzip ํฌ๊ธฐ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

Sentry์˜ SDK๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ํฌํ•จํ•˜๋Š” ๋งŽ์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ค‘ ํ•˜๋‚˜์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.

์ถ”์‹ : ์ €๋Š” ์„ผํŠธ๋ฆฌ๋ฅผ ์‚ฌ๋ž‘ํ•ฉ๋‹ˆ๋‹ค. ์ €ํฌ์—๊ฒŒ ํฐ ๋„์›€์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์›น ์„ฑ๋Šฅ์€ ๋‚ด๊ฐ€ ์—ด์ •์„ ๊ฐ–๊ณ  ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ;)

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

์ด ๋ฌธ์ œ๋ฅผ ์ œ๊ธฐํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.
๋ฒˆ๋“ค ํฌ๊ธฐ์— ๋Œ€ํ•œ ๊ท€ํ•˜์˜ ์šฐ๋ ค๋ฅผ ์ดํ•ดํ•˜๊ณ  ์ผ๋ฐ˜์ ์œผ๋กœ ๋™์˜ํ•˜์ง€๋งŒ ์••์ถ•๋˜์ง€ ์•Š์€ ์ถ•์†Œ ํŒŒ์ผ ํฌ๊ธฐ ๋Œ€์‹  gzip ๋ฒˆ๋“ค ํฌ๊ธฐ๋ฅผ ๋จผ์ € ๋น„๊ตํ•˜๋Š” ๊ฒƒ์ด ๊ณต์ •ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@sentry/browser ๋Š” 21.3799KB์ž…๋‹ˆ๋‹ค.
raven-js 13.44KB

๋˜ํ•œ ์ด๊ฒƒ์ด ๋ชจ๋“  ์‚ฌ๋žŒ์—๊ฒŒ ์ ์šฉ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ ์ผ๋ฐ˜์ ์œผ๋กœ ์›น์‚ฌ์ดํŠธ์—์„œ SDK๋ฅผ ์„ค์ •ํ•  CDN ๋กœ๋”๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์‚ฌ๋žŒ๋“ค์„ ์ œ๊ณตํ•˜๊ณ  ์•ˆ๋‚ดํ•ฉ๋‹ˆ๋‹ค.

์ฐธ์กฐ: https://docs.sentry.io/quickstart/?platform=browser

๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ์œ ์ง€ํ•˜๋ฉด์„œ <1KB gzip์œผ๋กœ ์••์ถ•๋œ ์ด ์Šคํฌ๋ฆฝํŠธ์˜ ํŽ˜์ด์ง€ ๋กœ๋“œ ์‹œ๊ฐ„๊ณผ ๊ณต๊ฐ„์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ.

๊ทธ๋ž˜์„œ tl; dr:
์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์œผ๋ฉฐ ๊ฐœ์„ ์˜ ์—ฌ์ง€๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ์ง€๊ธˆ ๋‹น์žฅ์€ ์ตœ์šฐ์„  ์ˆœ์œ„๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

์••์ถ•๋˜์ง€ ์•Š์€ ์ถ•์†Œ ํŒŒ์ผ ํฌ๊ธฐ ๋Œ€์‹  gzip ๋ฒˆ๋“ค ํฌ๊ธฐ๋ฅผ ๋จผ์ € ๋น„๊ตํ•˜๋Š” ๊ฒƒ์ด ๊ณต์ •ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์„ฑ๋Šฅ ๋ฌธ์ œ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋‹ค์šด๋กœ๋“œ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๊ตฌ๋ฌธ ๋ถ„์„ ๋ฐ ์‹คํ–‰์—์„œ๋„ ๋ฐœ์ƒํ•˜๋ฏ€๋กœ ์ถ•์†Œ๋œ ํฌ๊ธฐ๋ฅผ ๋น„๊ตํ•˜๋Š” ๊ฒƒ๋„ ๊ณต์ •ํ•˜๋‹ค๊ณ  ์ฃผ์žฅํ•ฉ๋‹ˆ๋‹ค. ~92kb๋Š” ์ƒ๋‹นํžˆ ๋ฌด๊ฒ๊ณ  ์ €์‚ฌ์–‘ ์žฅ์น˜์—์„œ ์ตœ๋Œ€ 1์ดˆ์˜ ๊ตฌ๋ฌธ ๋ถ„์„ ์‹œ๊ฐ„์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์ด ํ•˜๋‚˜์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—๋งŒ ํ•ด๋‹น).

CDN๋œ ์Šคํฌ๋ฆฝํŠธ์˜ < 1KB ๋ฒˆํ˜ธ๋ฅผ ์–ด๋””์„œ ๊ฐ€์ ธ์™”๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ž์„ธํžˆ ์„ค๋ช…ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? https://browser.sentry-cdn.com/4.0.4/bundle.min.js ๋ฅผ ์—ด๋ฉด 22KB์˜ gzip ํฌ๊ธฐ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

Sentry์˜ SDK๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ํฌํ•จํ•˜๋Š” ๋งŽ์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ค‘ ํ•˜๋‚˜์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.

์ถ”์‹ : ์ €๋Š” ์„ผํŠธ๋ฆฌ๋ฅผ ์‚ฌ๋ž‘ํ•ฉ๋‹ˆ๋‹ค. ์ €ํฌ์—๊ฒŒ ํฐ ๋„์›€์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์›น ์„ฑ๋Šฅ์€ ๋‚ด๊ฐ€ ์—ด์ •์„ ๊ฐ–๊ณ  ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ;)

@klaemo
ํ—คํ—ค ๊ฑฑ์ •๋งˆ์„ธ์š” ๐Ÿ˜‚

๋‚ด๊ฐ€ ๋งํ–ˆ๋“ฏ์ด, ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ๊ณ  ๊ทธ๊ฒƒ์ด ๋” ์ž‘์•„์ง€๋Š” ๊ฒƒ์„ ์›ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค.
์šฐ๋ฆฌ์—๊ฒŒ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ์ƒˆ๋กœ์šด SDK๋ฅผ ์ถœ์‹œํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ๋ฒˆ๋“ค ํฌ๊ธฐ๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๋” ๋งŽ์€ ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ: tslib ์‚ฌ์šฉ , ๋ฌธ์ž์—ด ๊ฒฐํ•ฉ ...
๋”ฐ๋ผ์„œ ๊ฐœ์„ ํ•  ์—ฌ์ง€๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์ „์— ๊ฒŒ์‹œ ํ•œ ๋งํฌ๋Š” ์ด๋ฏธ ๊ตฌ์‹์ž…๋‹ˆ๋‹ค ๐Ÿ™ƒ
๋‚˜๋Š” _Loader_๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค: https://docs.sentry.io/platforms/javascript/loader/
_Loader_๋„ ๋น„๋™๊ธฐ ํŠน์„ฑ์œผ๋กœ ์ธํ•ด ํ•œ๊ณ„๊ฐ€ ์žˆ๊ณ  ๊ฒฐ๊ตญ์—๋Š” ์—ฌ์ „ํžˆ SDK๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  ์ฃผ์ž…ํ•ฉ๋‹ˆ๋‹ค(๋น„๋™๊ธฐ์ผ์ง€๋ผ๋„). ์‚ฌ๋žŒ๋“ค์ด ์š”์ฒญํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๋Œ€์•ˆ์ž…๋‹ˆ๋‹ค.

@HazAT ์ฃ„์†กํ•˜์ง€๋งŒ ๋‹ค์Œ ๋ฒ„์ „ ์ถœ์‹œ์ผ์„ ์•Œ๋ ค์ฃผ์‹ค ์ˆ˜ ์žˆ๋‚˜์š”?
๋‚ด ๋ง์€, #master ๋ธŒ๋žœ์น˜์— ์ด๋ฏธ ๋ช‡ ๊ฐ€์ง€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์žˆ์ง€๋งŒ ์•„์ง ๋ฆด๋ฆฌ์Šค๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ Angular5+ ํ”„๋กœ์ ํŠธ์—๋Š” 4x ๋ฒ„์ „์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

@rayzru ๋ฐฉ๊ธˆ 4.0.5 ๋ฅผ ์ถœ์‹œํ–ˆ์ง€๋งŒ ํ•ด๋‹น ์ฃผ์ œ์™€ ๊ด€๋ จ๋œ ๊ฒŒ์‹œ๋ฌผ์„ ๊ณ„์† ๋‚จ๊ฒจ์ฃผ์„ธ์š”.

์ œ ์ƒ๊ฐ์—๋Š” ์ด๊ฒƒ์€ ํ™•์‹คํžˆ ํ‡ด๋ณด์ด๋ฉฐ ์ƒˆ ๋ฒ„์ „์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜์ง€ ์•Š๋Š” ์‹ฌ๊ฐํ•œ ์ด์œ ์ž…๋‹ˆ๋‹ค.

๐Ÿ’ฏ ๋‚˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์‚ฌ์‹ค์„ ์•Œ์•„์ฐจ๋ฆด ๋•Œ๊นŒ์ง€ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋ ค๋˜ ์ฐธ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

capture d ecran 2018-10-03 a 15 07 27

์ ์–ด๋„ ํŒจํ‚ค์ง€ ํฌ๊ธฐ๋Š” ๋” ์ž‘์ง€๋งŒ ๋ฒˆ๋“ค์— โš ๏ธ +10KB ์˜ gzipped JavaScript๊ฐ€ ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ธฐ๋‹ค๋ฆด ๊ฒƒ์ž…๋‹ˆ๋‹ค, ์ข‹์€ ์ผ์„ ๊ณ„์†ํ•˜์‹ญ์‹œ์˜ค :)

@HazAT esm ํŒŒ์ผ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์›นํŒฉ์ด ์—ฐ๊ฒฐ ๋ฐ ํŠธ๋ฆฌ ํ”๋“ค๋ฆผ์œผ๋กœ ๋” ๋‚˜์€ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ ๋ณ‘ํ•ฉ ์š”์ฒญ์— ๋Œ€ํ•œ ํŒจํ‚ค์ง€์˜ ๋ฒˆ๋“ค ํฌ๊ธฐ๋ฅผ ์ถ”์ ํ•˜๊ธฐ ์œ„ํ•ด ์ผ๋ถ€ CI ๋„๊ตฌ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ ์ดํ›„ ์‹ค์ œ๋กœ 100kB๋กœ ์ฆ๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. https://bundlephobia.com/result?p=@sentry/browser @4.3.0์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์˜ˆ๋ฅผ ๋“ค์–ด https://github.com/siddharthkp/bundlesize ์‹œ๋„

Webpack์˜ ์ง„์ž…์ ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ์„ฑ๋Šฅ ์˜ˆ์‚ฐ์€ ๋ชจ๋“  ์žฅ์น˜์™€ ๋„คํŠธ์›Œํฌ์—์„œ ์ ์ ˆํ•œ ์„ฑ๋Šฅ์„ ์–ป์„ ์ˆ˜ ์žˆ๋„๋ก 250kb์ž…๋‹ˆ๋‹ค. 100kb์˜ Sentry๋Š” ์ƒ๋‹นํ•œ ์˜ˆ์‚ฐ์„ ์ฐจ์ง€ํ•ฉ๋‹ˆ๋‹ค.

์ด ํšŒ๊ท€๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์ด ๋กœ๋“œ๋งต์— ์ „ํ˜€ ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š๊ฑฐ๋‚˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๊ทœ๋ชจ ์˜ˆ์‚ฐ ์—†์ด ๊ณ„์† ์„ฑ์žฅํ•  ๊ฒฝ์šฐ ๊ณ„์† ์—…๋ฐ์ดํŠธํ•ด ์ฃผ์‹ญ์‹œ์˜ค.

์šฐ๋ฆฌ๋Š” ๊ณ ๊ฐ์—๊ฒŒ ๋น„์šฉ์„ ์ง€๋ถˆํ•˜๊ณ  ๋ฐฑ์—”๋“œ, ๋„ค์ดํ‹ฐ๋ธŒ ๋ฐ ์›น ๋ชจ๋‘์—์„œ Sentry์— ๋ง‰๋Œ€ํ•œ ํˆฌ์ž๋ฅผ ํ•˜๊ณ  ์žˆ์ง€๋งŒ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํฌ๊ธฐ์˜ 3๋ฐฐ ์ด์ƒ([email protected]์€ 31kB)์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋Š” ๊ฒƒ์€ ์ •๋‹นํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค.

@jacobrask ์ด์ „ ๋ฒ„์ „์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. https://www.onepixel.com/ ์—์„œ ํ•˜๋Š” ๋Œ€๋กœ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ‘Œ.
dont-confuse-motion-with-progress

@jacobrask ๊ทธ๊ฒƒ์€ ํ™•์‹คํžˆ ์šฐ๋ฆฌ ๋ชฉ๋ก์— ์žˆ๊ณ  ์šฐ๋ฆฌ๋Š” ๋˜ํ•œ ๋ฒˆ๋“ค ํฌ๊ธฐ๋ฅผ ์‰ฝ๊ฒŒ ์ค„์ผ ์ˆ˜ ์žˆ๋Š” ๋‚ฎ์€ ๋งค๋‹ฌ๋ฆฐ ๊ณผ์ผ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
์ ์  ๋” ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์ด๊ฒƒ์„ ์š”๊ตฌํ•˜๋ฏ€๋กœ ์˜ˆ์ƒ๋ณด๋‹ค ๋นจ๋ฆฌ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@HAZAT
Sentry ๋ธŒ๋ผ์šฐ์ € SDK ๋กค์—… ๋ฒˆ๋“ค์€ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฒˆ๋“ค min js ํŒŒ์ผ์—๋Š” ๋ฐ˜๋ณต๋˜๋Š” tslib ์ฝ”๋“œ๊ฐ€ ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด __generator, __assign. ๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ์—์„œ๋Š” ํ•˜๋‚˜์˜ ์ฝ”๋“œ๋ฅผ ๊ณต์œ ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ธŒ๋ผ์šฐ์ € ํ”„๋กœ์ ํŠธ๋Š” ๋‹ค๋ฅธ ํŒจํ‚ค์ง€ dist ํŒŒ์ผ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. gzip ํฌ๊ธฐ๋ฅผ 23K์—์„œ 16K๋กœ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฒˆ๋“ค ํฌ๊ธฐ๋Š” 4.3.2์—์„œ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.
https://bundlephobia.com/result?p=@sentry/browser @4.3.2 ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๊ด€๊ณ„์—†์ด
https://github.com/getsentry/sentry-javascript/pull/1738 :(

@vkrol ์ ์–ด๋„ npm ํŒจํ‚ค์ง€์— ๋Œ€ํ•ด @gaterking ์ด ๋งŒ๋“  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋˜๋Œ๋ ค์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.
๋ฐ˜๋ฉด CDN์˜ ๋ฒˆ๋“ค์€ ๋” ์ž‘์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋‹ค์‹œ ์ถ”๊ฐ€ํ•  ๊ฒƒ์ด์ง€๋งŒ ์˜ˆ๋ฅผ ๋“ค์–ด tslib ์— ๋Œ€ํ•œ ๋‹ด๋‹น์ž๊ฐ€ ํ•„์š”ํ•˜๋ฏ€๋กœ ์ด์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๋˜ํ•œ ํƒ€์ดํ•‘์ด ์ƒ์„ฑ๋˜๋Š” ๋ฐฉ์‹์ด ๊นจ์กŒ์Šต๋‹ˆ๋‹ค.

@HazAT ๋„ค , ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

@vkrol ์ ์–ด๋„ npm ํŒจํ‚ค์ง€์— ๋Œ€ํ•ด @gaterking ์ด ๋งŒ๋“  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋˜๋Œ๋ ค์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.
๋ฐ˜๋ฉด CDN์˜ ๋ฒˆ๋“ค์€ ๋” ์ž‘์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋‹ค์‹œ ์ถ”๊ฐ€ํ•  ๊ฒƒ์ด์ง€๋งŒ ์˜ˆ๋ฅผ ๋“ค์–ด tslib ์— ๋Œ€ํ•œ ๋‹ด๋‹น์ž๊ฐ€ ํ•„์š”ํ•˜๋ฏ€๋กœ ์ด์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๋˜ํ•œ ํƒ€์ดํ•‘์ด ์ƒ์„ฑ๋˜๋Š” ๋ฐฉ์‹์ด ๊นจ์กŒ์Šต๋‹ˆ๋‹ค.

๊ฐ€๋Šฅํ•œ ํ•œ ๋นจ๋ฆฌ ๋ฐ”๋ž๋‹ˆ๋‹ค.

@gaterking @kamilogorek ์ด๋ฏธ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค https://github.com/getsentry/sentry-javascript/pull/1751
"๊ธด๊ธ‰" ๋ฆด๋ฆฌ์Šค๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋˜๋Œ๋ฆฐ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ด๊ฒƒ์ด ์˜ค๋ฅ˜๋ฅผ ์บก์ฒ˜ํ•˜๊ณ  API์— ์ œ์ถœํ•˜๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ๋ณต์žกํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋˜ ๋ฌด์—‡์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

๋‹จ์ˆœํ•œ ์˜ค๋ฅ˜ ๋ณด๊ณ ์ž๊ฐ€ ์™œ ๊ทธ๋ ‡๊ฒŒ ์ƒ๋‹นํ•œ ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•ด์•ผ ํ•˜๋Š”์ง€ ์ดํ•ดํ•˜๊ธฐ๊ฐ€ ์ •๋ง ์–ด๋ ต์Šต๋‹ˆ๋‹ค ๐Ÿ˜

@mindplay-dk ๋Œ€๋ถ€๋ถ„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์™€ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์—‰๋ง์ด๋ผ์„œ ^^
๊นจ์ง„/์ž˜๋ชป๋œ ์Šคํƒ ์ถ”์ ์„ ์ˆ˜์ •ํ•˜๋Š” ๋ฐ ๋งŽ์€ ์ž‘์—…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
"์˜ค๋ฅ˜ ์žก๊ธฐ"๋ผ๋Š” ๊ฐ„๋‹จํ•œ ์ž‘์—…๋„ ๋ณด์ด๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋” ๋ณต์žกํ•ฉ๋‹ˆ๋‹ค.

๋‹จ์ˆœํ•œ ์˜ค๋ฅ˜ ๋ณด๊ณ ์ž๊ฐ€ ์™œ ๊ทธ๋ ‡๊ฒŒ ์ƒ๋‹นํ•œ ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•ด์•ผ ํ•˜๋Š”์ง€ ์ดํ•ดํ•˜๊ธฐ๊ฐ€ ์ •๋ง ์–ด๋ ต์Šต๋‹ˆ๋‹ค ๐Ÿ˜

@mindplay-dk ๊ฐ„๋‹จํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—.

๋‹ค์Œ์€ ๋ชจ๋“  ๋ธŒ๋ผ์šฐ์ €์—์„œ ์˜ค๋ฅ˜๋ฅผ ์บก์ฒ˜ํ•˜๊ณ  ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋กœ ํ†ตํ•ฉํ•˜๋Š” ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. https://github.com/getsentry/sentry-javascript/blob/master/packages/browser/src/tracekit.ts

์ตœ๊ทผ ์‚ฌ์ด์ฆˆ ์ถ•์†Œ ์ž˜ ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ‘

๋งํฌ๋œ ํŒŒ์ผ์„ ํ•œ ๋ˆˆ์— ๋ณด๋ฉด Opera 10์˜ ์˜ค๋ฅ˜๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ •๋ง ์—ฌ์ „ํžˆ ํ•„์š”ํ•œ๊ฐ€์š”? TraceKit์€ ๋˜ํ•œ ์ด๋ฏธ ํฐ Raven์—์„œ (ํ˜„์žฌ) 2๋ฐฐ ํฌ๊ธฐ ์ฆ๊ฐ€๋ฅผ ์„ค๋ช…ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ช‡ ๊ฐ€์ง€ ์ œ์•ˆ:

  • md5 ์ œ๊ฑฐ
  • async/await ์‚ฌ์šฉ์„ ์ค„์ด๋ฉด ES5๋กœ ์ œ๋Œ€๋กœ ์ปดํŒŒ์ผ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. https://github.com/getsentry/sentry-javascript/blob/master/packages/core/src/baseclient.ts#L307 -L378์„ ์ถœ๋ ฅ ์ฝ”๋“œ์™€ ๋น„๊ตํ•˜์‹ญ์‹œ์˜ค(ํ”„๋กœ๋•์…˜ ๋ฒˆ๋“ค์—์„œ "processEvent" ๊ฒ€์ƒ‰). ์ „์ฒด ํŒŒ์ผ์€ ํ”„๋กœ๋•์…˜ ๋ฒˆ๋“ค์—์„œ ๊ฑฐ๋Œ€ํ•ด์ง‘๋‹ˆ๋‹ค.

package/core์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์— ์ผ๋ถ€ ๊ณต์œ  ์ฝ”๋“œ(rewriteframes.ts์˜ app:///${base} )๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ํด๋ผ์ด์–ธํŠธ์—์„œ๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๋…ธ๋“œ์—์„œ๋Š” ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๊ฐ„๋‹จํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

@kamilogorek yikes, ๋‹น์‹ ์ด ๋ถ„๋ช…ํžˆ ์˜ณ์•˜์Šต๋‹ˆ๋‹ค ... JavaScript๊ฐ€ ์—‰๋ง์ด๋ผ๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค. ์ „์—์ด ๋ถ„์•ผ๋ฅผ ํŒŒ๊ณ  ๋“ค์–ด ๋ณธ ์ ์ด์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ๋‚˜์œ์ง€ ๋ชฐ๋ž์Šต๋‹ˆ๋‹ค. JS์—์„œ ์Šคํƒ ์ถ”์ ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์€ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์ง€. ๊ทธ๋ ‡๊ตฐ์š”. ๐Ÿ˜

๋„์šฐ๋ฏธ๋ฅผ ์ตœ์†Œํ™”ํ•˜๋ ค๊ณ  ํ•˜๋Š” ๋Œ€์‹  ์ด๋ฏธ ์–ธ๊ธ‰ํ•œ esm ํŒŒ์ผ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์˜ค๋Š˜๋‚ ์—๋„ ์‰ฝ๊ณ  ๋ชจ๋ฒ” ์‚ฌ๋ก€์ž…๋‹ˆ๋‹ค.

async/await ์‚ฌ์šฉ์„ ์ค„์ด๋ฉด ES5๋กœ ์ œ๋Œ€๋กœ ์ปดํŒŒ์ผ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. https://github.com/getsentry/sentry-javascript/blob/master/packages/core/src/baseclient.ts#L307 -L378์„ ์ถœ๋ ฅ ์ฝ”๋“œ์™€ ๋น„๊ตํ•˜์‹ญ์‹œ์˜ค(ํ”„๋กœ๋•์…˜ ๋ฒˆ๋“ค์—์„œ "processEvent" ๊ฒ€์ƒ‰). ์ „์ฒด ํŒŒ์ผ์€ ํ”„๋กœ๋•์…˜ ๋ฒˆ๋“ค์—์„œ ๊ฑฐ๋Œ€ํ•ด์ง‘๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€ ์ž˜๋ชป๋œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ES5์— ๋Œ€ํ•ด ์ถ”๊ฐ€๋กœ ์ตœ์ ํ™”ํ•˜๋Š” ๋Œ€์‹  ์ตœ์‹  ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์‚ฌ์šฉํ•˜๋Š” 80.07% ์— ๋งž๊ฒŒ ์ตœ์ ํ™”ํ•˜๋Š” ๊ฒƒ์ด ๋” ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

์ด์ „ ๋ธŒ๋ผ์šฐ์ € ์ง€์›์ด ํ•„์š”ํ•œ ๋ชจ๋“  ์‚ฌ๋žŒ์„ ์œ„ํ•ด:
๋น„๋™๊ธฐ ๊ธฐ๋Šฅ์€ <script type="module"> (caniuse: esm , async )๋ฅผ ์ง€์›ํ•˜๋Š” ๋ชจ๋“  ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ง€์›๋˜๋ฏ€๋กœ ์ด์ „ ๋ธŒ๋ผ์šฐ์ €์˜ ์‚ฌ์šฉ์ž๋งŒ ๋” ์˜ค๋ž˜ ๊ธฐ๋‹ค๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค(์–ด์จŒ๋“  ๋” ์˜ค๋ž˜ ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค).

์ฆ๊ฑฐ:
160KB(es5, ๋ฒˆ๋“ค) > 119KB(esm, ์ผ๋ฐ˜ ํŒŒ์ผ)

๋”ฐ๋ผ์„œ esm ํŒŒ์ผ๋„ ๋ฒˆ๋“ค๋กœ ๋ฌถ์œผ์‹ญ์‹œ์˜ค module ๋ฐ target in /tsconfig.esm.json ( tsconfig.build.json ํ™•์žฅ)๋ฅผ esnext ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ๋งŒํผ ์‰ฝ์Šต๋‹ˆ๋‹ค. tsconfig.esm.json tsconfig.build.json ํŒŒ์ผ์„ ํŒจํ‚ค์ง€์— ์ถ”๊ฐ€ํ•˜๊ณ  ๋นŒ๋“œ ๋ฐ ํŒจํ‚ค์ง€์— ์ถ”๊ฐ€ ํ•˜๊ณ  package.json ์— ๋ชจ๋“ˆ ํ•ญ๋ชฉ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

์›ํ•˜์‹ ๋‹ค๋ฉด PR์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์›ํ•˜์‹ ๋‹ค๋ฉด PR์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@cromefire ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค :)

vue cli์™€ ๊ฐ™์ด ํด๋ž˜์‹ ๋ชจ๋“œ์™€ ๋ชจ๋˜ ๋ชจ๋“œ ์ค‘์—์„œ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ์˜ต์…˜์ด ์žˆ๋‹ค๋ฉด ๊ต‰์žฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ตœ์‹  ๋ฒ„์ „์€ ๋Œ€๋ถ€๋ถ„์˜ ์ตœ์‹  ๋ธŒ๋ผ์šฐ์ €๋งŒ ์ง€์›ํ•˜๋ฏ€๋กœ ๋œ ๋ถ€ํ’€๋ ค์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜๋Š” webpack env์ฒ˜๋Ÿผ ์ž‘๋™ํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ํ•„์š”ํ•œ ๋ธŒ๋ผ์šฐ์ € ์ง€์›์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๋” ์ข‹์Šต๋‹ˆ๋‹ค. Ofc, ์ด๊ฒƒ์€ ์‰ฌ์šด ์‰ฌ์šด ๊ธฐ๋Šฅ์ด ์•„๋‹ˆ์ง€๋งŒ ๊ทธ๋ƒฅ ๋ฒ„๋ฆฌ๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. :)

๋ฉ‹์ง„ ์ œํ’ˆ!

์ƒˆ๋กœ์šด PR์„ ์‚ฌ์šฉํ•˜์—ฌ babel์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ํ•„์š”ํ•œ ๋ธŒ๋ผ์šฐ์ €๋งŒ ์ง€์›ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

@sentry/browser์˜ ํฌ๊ธฐ๋Š” raven-js ํฌ๊ธฐ์˜ ๋‘ ๋ฐฐ ์ด์ƒ์ž…๋‹ˆ๋‹ค( 86kB ๋Œ€ 39kB(์ถ•์†Œ)).

์ฐธ๊ณ : ์ตœ์‹  ๋ฒ„์ „์˜ @sentry/browser ํฌ๊ธฐ๊ฐ€ 91.8kB ๋กœ ์ฆ๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ถœ์ฒ˜: https://bundlephobia.com/result?p=@sentry/browser @4.5.0.

@cromefire ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํฌ๊ธฐ ์ตœ์ ํ™” ์ž‘์—…์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!

๋ฐฉ๊ธˆ v4.5.0 ์—์„œ ์ƒˆ esm ๋นŒ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ์ง€๋งŒ ๋งŽ์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. @sentry/utils/esm ์˜ ๋ชจ๋“ˆ์„ ํ™•์ธํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋‘ ํŠธ๋ฆฌ๊ฑฐ๋ฉ๋‹ˆ๋‹ค.

์‚ฌ์‹ค ๋‚˜๋Š” ์ƒˆ๋กœ์šด yarn install ์ดํ›„ node_modules ์—์„œ ํด๋”๋ฅผ ์ฐพ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. (์Šคํฌ๋ฆฐ์ƒท ์ฐธ์กฐ)

์™„์ „ํ•œ ์˜ค๋ฅ˜ ๋ชฉ๋ก

./node_modules/@sentry/core/esm/baseclient.js์˜ ์˜ค๋ฅ˜
๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ: ์˜ค๋ฅ˜: './node_modules/@sentry/core/esm'์—์„œ '@sentry/utils/esm/async'๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
./node_modules/@sentry/browser/esm/backend.js์˜ ์˜ค๋ฅ˜
๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ: ์˜ค๋ฅ˜: './node_modules/@sentry/browser/esm'์—์„œ '@sentry/utils/esm/is'๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
./node_modules/@sentry/browser/esm/tracekit.js์˜ ์˜ค๋ฅ˜
๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ: ์˜ค๋ฅ˜: './node_modules/@sentry/browser/esm'์—์„œ '@sentry/utils/esm/is'๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
./node_modules/@sentry/browser/esm/integrations/breadcrumbs.js์˜ ์˜ค๋ฅ˜
๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ: ์˜ค๋ฅ˜: './node_modules/@sentry/browser/esm/integrations'์—์„œ '@sentry/utils/esm/is'๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
./node_modules/@sentry/browser/esm/integrations/helpers.js์˜ ์˜ค๋ฅ˜
๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ: ์˜ค๋ฅ˜: './node_modules/@sentry/browser/esm/integrations'์—์„œ '@sentry/utils/esm/is'๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
./node_modules/@sentry/browser/esm/integrations/pluggable/vue.js์˜ ์˜ค๋ฅ˜
๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ: ์˜ค๋ฅ˜: './node_modules/@sentry/browser/esm/integrations/pluggable'์—์„œ '@sentry/utils/esm/is'๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
./node_modules/@sentry/core/esm/baseclient.js์˜ ์˜ค๋ฅ˜
๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ: ์˜ค๋ฅ˜: './node_modules/@sentry/core/esm'์—์„œ '@sentry/utils/esm/is'๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
./node_modules/@sentry/core/esm/dsn.js์˜ ์˜ค๋ฅ˜
๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ: ์˜ค๋ฅ˜: './node_modules/@sentry/core/esm'์—์„œ '@sentry/utils/esm/is'๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
./node_modules/@sentry/core/esm/integrations/inboundfilters.js์˜ ์˜ค๋ฅ˜
๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ: ์˜ค๋ฅ˜: './node_modules/@sentry/core/esm/integrations'์—์„œ '@sentry/utils/esm/is'๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
./node_modules/@sentry/core/esm/integrations/extraerrordata.js์˜ ์˜ค๋ฅ˜
๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ: ์˜ค๋ฅ˜: './node_modules/@sentry/core/esm/integrations'์—์„œ '@sentry/utils/esm/is'๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
./node_modules/@sentry/browser/esm/integrations/globalhandlers.js์˜ ์˜ค๋ฅ˜
๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ: ์˜ค๋ฅ˜: './node_modules/@sentry/browser/esm/integrations'์˜ '@sentry/utils/esm/logger'๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
./node_modules/@sentry/browser/esm/integrations/breadcrumbs.js์˜ ์˜ค๋ฅ˜
๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ: ์˜ค๋ฅ˜: './node_modules/@sentry/browser/esm/integrations'์˜ '@sentry/utils/esm/logger'๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
./node_modules/@sentry/core/esm/baseclient.js์˜ ์˜ค๋ฅ˜
๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ: ์˜ค๋ฅ˜: './node_modules/@sentry/core/esm'์—์„œ '@sentry/utils/esm/logger'๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
./node_modules/@sentry/core/esm/basebackend.js์˜ ์˜ค๋ฅ˜
๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ: ์˜ค๋ฅ˜: './node_modules/@sentry/core/esm'์—์„œ '@sentry/utils/esm/logger'๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
./node_modules/@sentry/core/esm/sdk.js์˜ ์˜ค๋ฅ˜
๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ: ์˜ค๋ฅ˜: './node_modules/@sentry/core/esm'์—์„œ '@sentry/utils/esm/logger'๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
./node_modules/@sentry/core/esm/integration.js์˜ ์˜ค๋ฅ˜
๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ: ์˜ค๋ฅ˜: './node_modules/@sentry/core/esm'์—์„œ '@sentry/utils/esm/logger'๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
./node_modules/@sentry/core/esm/integrations/dedupe.js์˜ ์˜ค๋ฅ˜
๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ: ์˜ค๋ฅ˜: './node_modules/@sentry/core/esm/integrations'์˜ '@sentry/utils/esm/logger'๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
./node_modules/@sentry/core/esm/integrations/sdkinformation.js์˜ ์˜ค๋ฅ˜
๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ: ์˜ค๋ฅ˜: './node_modules/@sentry/core/esm/integrations'์˜ '@sentry/utils/esm/logger'๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
./node_modules/@sentry/core/esm/integrations/inboundfilters.js์˜ ์˜ค๋ฅ˜
๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ: ์˜ค๋ฅ˜: './node_modules/@sentry/core/esm/integrations'์˜ '@sentry/utils/esm/logger'๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
./node_modules/@sentry/hub/esm/hub.js์˜ ์˜ค๋ฅ˜
๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ: ์˜ค๋ฅ˜: './node_modules/@sentry/hub/esm'์˜ '@sentry/utils/esm/logger'๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
./node_modules/@sentry/browser/esm/client.js์˜ ์˜ค๋ฅ˜
๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ: ์˜ค๋ฅ˜: './node_modules/@sentry/browser/esm'์—์„œ '@sentry/utils/esm/misc'๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
./node_modules/@sentry/browser/esm/tracekit.js์˜ ์˜ค๋ฅ˜
๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ: ์˜ค๋ฅ˜: './node_modules/@sentry/browser/esm'์—์„œ '@sentry/utils/esm/misc'๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
./node_modules/@sentry/browser/esm/integrations/useragent.js์˜ ์˜ค๋ฅ˜
๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ: ์˜ค๋ฅ˜: './node_modules/@sentry/browser/esm/integrations'์˜ '@sentry/utils/esm/misc'๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
./node_modules/@sentry/browser/esm/integrations/breadcrumbs.js์˜ ์˜ค๋ฅ˜
๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ: ์˜ค๋ฅ˜: './node_modules/@sentry/browser/esm/integrations'์˜ '@sentry/utils/esm/misc'๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
./node_modules/@sentry/browser/esm/integrations/trycatch.js์˜ ์˜ค๋ฅ˜
๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ: ์˜ค๋ฅ˜: './node_modules/@sentry/browser/esm/integrations'์˜ '@sentry/utils/esm/misc'๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
./node_modules/@sentry/browser/esm/integrations/helpers.js์˜ ์˜ค๋ฅ˜
๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ: ์˜ค๋ฅ˜: './node_modules/@sentry/browser/esm/integrations'์˜ '@sentry/utils/esm/misc'๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
./node_modules/@sentry/browser/esm/integrations/pluggable/reportingobserver.js์˜ ์˜ค๋ฅ˜
๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ: ์˜ค๋ฅ˜: './node_modules/@sentry/browser/esm/integrations/pluggable'์—์„œ '@sentry/utils/esm/misc'๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
./node_modules/@sentry/browser/esm/integrations/pluggable/vue.js์˜ ์˜ค๋ฅ˜
๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ: ์˜ค๋ฅ˜: './node_modules/@sentry/browser/esm/integrations/pluggable'์—์„œ '@sentry/utils/esm/misc'๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
./node_modules/@sentry/browser/esm/integrations/pluggable/ember.js์˜ ์˜ค๋ฅ˜
๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ: ์˜ค๋ฅ˜: './node_modules/@sentry/browser/esm/integrations/pluggable'์—์„œ '@sentry/utils/esm/misc'๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
./node_modules/@sentry/browser/esm/transports/beacon.js์˜ ์˜ค๋ฅ˜
๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ: ์˜ค๋ฅ˜: './node_modules/@sentry/browser/esm/transports'์˜ '@sentry/utils/esm/misc'๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
./node_modules/@sentry/browser/esm/transports/fetch.js์˜ ์˜ค๋ฅ˜
๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ: ์˜ค๋ฅ˜: './node_modules/@sentry/browser/esm/transports'์˜ '@sentry/utils/esm/misc'๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
./node_modules/@sentry/core/esm/baseclient.js์˜ ์˜ค๋ฅ˜
๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ: ์˜ค๋ฅ˜: './node_modules/@sentry/core/esm'์—์„œ '@sentry/utils/esm/misc'๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
./node_modules/@sentry/core/esm/integrations/dedupe.js์˜ ์˜ค๋ฅ˜
๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ: ์˜ค๋ฅ˜: './node_modules/@sentry/core/esm/integrations'์˜ '@sentry/utils/esm/misc'๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
./node_modules/@sentry/core/esm/integrations/inboundfilters.js์˜ ์˜ค๋ฅ˜
๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ: ์˜ค๋ฅ˜: './node_modules/@sentry/core/esm/integrations'์˜ '@sentry/utils/esm/misc'๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
./node_modules/@sentry/hub/esm/scope.js์˜ ์˜ค๋ฅ˜
๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ: ์˜ค๋ฅ˜: './node_modules/@sentry/hub/esm'์˜ '@sentry/utils/esm/misc'๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
./node_modules/@sentry/hub/esm/hub.js์˜ ์˜ค๋ฅ˜
๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ: ์˜ค๋ฅ˜: './node_modules/@sentry/hub/esm'์˜ '@sentry/utils/esm/misc'๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
./node_modules/@sentry/browser/esm/parsers.js์˜ ์˜ค๋ฅ˜
๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ: ์˜ค๋ฅ˜: './node_modules/@sentry/browser/esm'์—์„œ '@sentry/utils/esm/object'๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
./node_modules/@sentry/browser/esm/integrations/breadcrumbs.js์˜ ์˜ค๋ฅ˜
๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ: ์˜ค๋ฅ˜: './node_modules/@sentry/browser/esm/integrations'์˜ '@sentry/utils/esm/object'๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
./node_modules/@sentry/browser/esm/integrations/trycatch.js์˜ ์˜ค๋ฅ˜
๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ: ์˜ค๋ฅ˜: './node_modules/@sentry/browser/esm/integrations'์˜ '@sentry/utils/esm/object'๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
./node_modules/@sentry/browser/esm/integrations/helpers.js์˜ ์˜ค๋ฅ˜
๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ: ์˜ค๋ฅ˜: './node_modules/@sentry/browser/esm/integrations'์˜ '@sentry/utils/esm/object'๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
./node_modules/@sentry/core/esm/api.js์˜ ์˜ค๋ฅ˜
๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ: ์˜ค๋ฅ˜: './node_modules/@sentry/core/esm'์—์„œ '@sentry/utils/esm/object'๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
./node_modules/@sentry/core/esm/basebackend.js์˜ ์˜ค๋ฅ˜
๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ: ์˜ค๋ฅ˜: './node_modules/@sentry/core/esm'์—์„œ '@sentry/utils/esm/object'๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
./node_modules/@sentry/core/esm/dsn.js์˜ ์˜ค๋ฅ˜
๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ: ์˜ค๋ฅ˜: './node_modules/@sentry/core/esm'์—์„œ '@sentry/utils/esm/object'๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
./node_modules/@sentry/hub/esm/scope.js์˜ ์˜ค๋ฅ˜
๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ: ์˜ค๋ฅ˜: './node_modules/@sentry/hub/esm'์—์„œ '@sentry/utils/esm/object'๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
./node_modules/@sentry/core/esm/integrations/pluggable/rewriteframes.js์˜ ์˜ค๋ฅ˜
๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ: ์˜ค๋ฅ˜: './node_modules/@sentry/core/esm/integrations/pluggable'์—์„œ '@sentry/utils/esm/path'๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
./node_modules/@sentry/browser/esm/parsers.js์˜ ์˜ค๋ฅ˜
๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ: ์˜ค๋ฅ˜: './node_modules/@sentry/browser/esm'์—์„œ '@sentry/utils/esm/string'์„ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
./node_modules/@sentry/browser/esm/integrations/breadcrumbs.js์˜ ์˜ค๋ฅ˜
๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ: ์˜ค๋ฅ˜: './node_modules/@sentry/browser/esm/integrations'์˜ '@sentry/utils/esm/string'์„ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
./node_modules/@sentry/core/esm/baseclient.js์˜ ์˜ค๋ฅ˜
๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ: ์˜ค๋ฅ˜: './node_modules/@sentry/core/esm'์˜ '@sentry/utils/esm/string'์„ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
./node_modules/@sentry/core/esm/integrations/inboundfilters.js์˜ ์˜ค๋ฅ˜
๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ: ์˜ค๋ฅ˜: './node_modules/@sentry/core/esm/integrations'์˜ '@sentry/utils/esm/string'์„ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
./node_modules/@sentry/browser/esm/backend.js์˜ ์˜ค๋ฅ˜
๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ: ์˜ค๋ฅ˜: './node_modules/@sentry/browser/esm'์—์„œ '@sentry/utils/esm/supports'๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
./node_modules/@sentry/browser/esm/integrations/breadcrumbs.js์˜ ์˜ค๋ฅ˜
๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ: ์˜ค๋ฅ˜: './node_modules/@sentry/browser/esm/integrations'์—์„œ '@sentry/utils/esm/supports'๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
./node_modules/@sentry/browser/esm/integrations/pluggable/reportingobserver.js์˜ ์˜ค๋ฅ˜
๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ: ์˜ค๋ฅ˜: './node_modules/@sentry/browser/esm/integrations/pluggable'์—์„œ '@sentry/utils/esm/supports'๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
./node_modules/@sentry/browser/esm/transports/fetch.js์˜ ์˜ค๋ฅ˜
๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ: ์˜ค๋ฅ˜: './node_modules/@sentry/browser/esm/transports'์—์„œ '@sentry/utils/esm/supports'๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

screenshot 2019-01-10 at 4 37 45 pm

@pascaliske esm ๋นŒ๋“œ๋Š” ์•„์ง ์‹คํ—˜ ๋‹จ๊ณ„์— ์žˆ์œผ๋ฉฐ ์•„์ง ๊ณต๊ฐœ์ ์œผ๋กœ ๋ฌธ์„œํ™”ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋ชจ๋“  ๊ฒƒ์ด ํ…Œ์ŠคํŠธ๋˜๋ฉด ๊ทธ๊ฒƒ์„ ํ•  ๊ฒƒ์ด๊ณ  ์šฐ๋ฆฌ์˜ ๋ฐœ๊ฒฌ์„ ์—ฌ๊ธฐ์— ๊ฒŒ์‹œํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@kamilogorek ๋„ค, ์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์˜ค๋ฅ˜๋ฅผ ์•Œ๋ ค๋“œ๋ฆฌ๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ™‚

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค, ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค @pascaliske! ๋น ๋ฅธ ์‹œ์ผ ๋‚ด์— ESM ์ง€์›์„ ์ œ๊ณตํ•˜๋„๋ก ๋…ธ๋ ฅํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. :)

@pascaliske yarn build ๋จผ์ € ์‹œ๋„

@cromefire ์•„๋‹ˆ์š”, ์ œ ์ƒ๊ฐ์—๋Š” ๋„์›€์ด ๋˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฐฉ๊ธˆ npm์—์„œ ํŒจํ‚ค์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋นŒ๋“œ ํ™˜๊ฒฝ์ด ์—†์Šต๋‹ˆ๋‹ค. ๐Ÿ™‚

์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์กฐ๊ธˆ ๊ฒ€์ƒ‰ํ•˜์—ฌ @sentry/browser ์™€ @sentry/utils ๋ฅผ ๋น„๊ตํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์ด ๋ฌธ์ œ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค: packages/utils/tsconfig.build.json#L5 vs. packages/browser/tsconfig.build.json#L5 . ์ผ๋ฐ˜ ๋นŒ๋“œ ์ถœ๋ ฅ์ด esm ๋นŒ๋“œ ์ถœ๋ ฅ์„ ๋ฎ์–ด์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๐Ÿค”

๋‚ด node_modules ํด๋” ์•ˆ์— browser ํŒจํ‚ค์ง€์—๋Š” normal ๋ฐ esm์˜ ๋นŒ๋“œ ์ถœ๋ ฅ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ utils ํŒจํ‚ค์ง€๋Š” ๋ฃจํŠธ ํด๋”์— ์ผ๋ฐ˜ ๋นŒ๋“œ ์ถœ๋ ฅ๋งŒ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฏธ ์ถœ์‹œ๋˜์—ˆ๋‚˜์š”?

์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์กฐ๊ธˆ ๊ฒ€์ƒ‰ํ•˜๊ณ  @sentry/browser ์™€ @sentry/utils ๋ฅผ ๋น„๊ตํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์ด ๋ฌธ์ œ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค: packages/utils/tsconfig.build.json#L5 vs. packages/browser/tsconfig.build.json#L5 . ์ผ๋ฐ˜ ๋นŒ๋“œ ์ถœ๋ ฅ์ด esm ๋นŒ๋“œ ์ถœ๋ ฅ์„ ๋ฎ์–ด์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๐Ÿค”

์•„๋‹ˆ์š”, esm tsconfig๋ฅผ ๋ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‚ด์ผ ๋ด์•ผ๊ฒ ๋‹ค

๋ชจ๋‘ ์•ˆ๋…•! ๋˜ํ•œ Sentry์˜ ๋ฒˆ๋“ค ํฌ๊ธฐ ์ค‘ ์ผ๋ถ€๋ฅผ ์‚ดํŽด๋ณด๊ณ  ๋‹ค์Œ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. https://github.com/getsentry/sentry-javascript/blob/master/packages/minimal/package.json#L20

๋งค์šฐ ์†Œ์ˆ˜์˜ ๊ธฐ๋Šฅ(ํ™•์‚ฐ ๋ฐ ํ• ๋‹น)์— ๋Œ€ํ•ด ํฌ๊ธฐ ๋ฉ์–ด๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” Typescript์— ์ต์ˆ™ํ•˜์ง€ ์•Š์ง€๋งŒ ๋Ÿฐํƒ€์ž„์— ์ด๊ฒƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ?

@sentry/types ๊ฐ€ devDependencies ์— ์œ„์น˜ํ•˜์ง€ ์•Š๊ณ  _runtime_ ์ข…์†์„ฑ์ด์–ด์•ผ ํ•˜๋Š” ์ด์œ ๋„ ๋ถˆ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค.

typescript์˜ ๋ชจ๋“  ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ @evocateur ์ด๊ฒƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. Typescript๋Š” ๋ชจ๋“  ๊ฒƒ์„ ์ตœ์ ํ™”ํ•ฉ๋‹ˆ๋‹ค.
(๊ทธ๋Ÿฌ๋‚˜ .d.ts ํŒŒ์ผ์— ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Œ)

@IanMitchell esm ๋นŒ๋“œ์—๋Š” ์‚ฌ์šฉ๋˜์ง€ ์•Š์ง€๋งŒ ์ผ๋ฐ˜ ๋นŒ๋“œ์—๋Š” ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

4.5.0์˜ bundle.js์—๋Š” Severity, htmlElementAsString, htmlElementAsString, uuid4, parseUrl ๋“ฑ๊ณผ ๊ฐ™์€ ์ค‘๋ณต ์ฝ”๋“œ๊ฐ€ ๋งŽ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์˜๋„ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค!

WebPack + Babel 7์„ ์‚ฌ์šฉํ•˜์—ฌ import * as Sentry from '@sentry/browser'; (ํŒŒ์ผ์˜ ์œ ์ผํ•œ ์ค„)์„ ํ†ตํ•ด ๋ฒˆ๋“ค์„ ์ˆ˜ํ–‰ํ•  ๋•Œ๋„ ๋™์ผํ•œ ์ผ์ด ๋ฐœ์ƒํ•˜๋ฉฐ ๋ฒˆ๋“ค ํฌ๊ธฐ๋Š” 326kb์ž…๋‹ˆ๋‹ค. ์ฐธ์กฐ: sentry.bundle.js.txt
์šฐ๋ฆฌ๋Š” ๋‹ค๋ฅธ ๋ฒˆ๋“ค์—๋„ ๋™์ผํ•œ ๊ตฌ์„ฑ์„ ์‚ฌ์šฉํ•˜์ง€๋งŒ sentry๋Š” ํ•ด๋‹น ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ์œ ์ผํ•œ ๋ฒˆ๋“ค์ž…๋‹ˆ๋‹ค.

bundle.min.js ์—๋Š” ๋‚ด๋ถ€์— ์ค‘๋ณต ์ฝ”๋“œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค . ์ด๋Š” ๋กค์—…์œผ๋กœ ์ธํ•œ ํŠธ๋ฆฌ ํ”๋“ค๋ฆผ์˜ ๊ฒฐ๊ณผ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ž„์‹œ ํ•ด๊ฒฐ์ฑ…์€ import '@sentry/browser/build/bundle.min.js'; ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

4.5.0์˜ bundle.js์—๋Š” Severity, htmlElementAsString, htmlElementAsString, uuid4, parseUrl ๋“ฑ๊ณผ ๊ฐ™์€ ์ค‘๋ณต ์ฝ”๋“œ๊ฐ€ ๋งŽ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์˜๋„ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค!

์ด๊ฒƒ์ด esm ๋นŒ๋“œ๊ฐ€ ์žˆ๋Š” ์ด์œ (๋˜๋Š” ์ ์–ด๋„ ํ•˜๋‚˜์˜ ์ด์œ )์ž…๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ๋ฒˆ๋“ค๋Ÿฌ๊ฐ€ ์žˆ๋‹ค๋ฉด ์‚ฌ์ „ ๋นŒ๋“œ ๋ฒˆ๋“ค์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค. (๋ฒ ํƒ€์ผ ๋ฟ์ด๊ณ  ์ง€๊ธˆ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹๊นจ์กŒ์Šต๋‹ˆ๋‹ค)

์ด๊ฒƒ์„ ๋‹ค์‹œ ๋ณด๋ฉด, ์ด๊ฒƒ์ด ์ด๋ณด๋‹ค ์ž‘์„ ์ˆ˜ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋” ์ž‘์€.

์†Œ์Šค ๋งต์„ ์ง€์›ํ•˜๋Š” ์Šคํƒ ์ถ”์ ์€ ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ๋‹จ์—ฐ์ฝ” ๊ฐ€์žฅ ๋ณต์žกํ•œ ๊ฒƒ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๋ฐœ์ž๊ตญ์€ node.js ํด๋ผ์ด์–ธํŠธ์™€ ๊ณต์œ ํ•˜๋Š” ํ•ต์‹ฌ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์˜จ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋ฐœ์ž๊ตญ์€ ์‹ค์ œ๋กœ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค.

์˜คํ•ดํ•˜์ง€ ๋งˆ์„ธ์š”. ์ด๊ฒƒ์€ ์•„ํ‚คํ…์ฒ˜์˜ ์•„๋ฆ„๋‹ค์šด ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ์•„์ฃผ ๋ฉ‹์ง„ TypeScript ์ž‘์—…์ž…๋‹ˆ๋‹ค.

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

๋น„๊ตํ•˜๋ ค๊ณ :

~10KB ํŒจํ‚ค์ง€์— ์œ ์‚ฌํ•œ ๊ธฐ๋Šฅ(์†Œ์Šค ๋งต์ด ์žˆ๋Š” ๋ธŒ๋ผ์šฐ์ € ๊ฐ„ ์Šคํƒ ์ถ”์ )์ด ์žˆ๋Š” TrackJS ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.

์›๋ž˜ TraceKit ์€ ~3KB min+gz์ž…๋‹ˆ๋‹ค.

x-browser ํด๋ฆฌํ•„์„ ์‚ฌ์šฉํ•˜์—ฌ ~8KB min+gz ๋˜๋Š” ~10KB์—์„œ ์†Œ์Šค ๋งต ๋น„ํŠธ(ํด๋ผ์ด์–ธํŠธ ์ธก)๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฅผ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค.

๊ทธ ์™ธ์—๋„ ๋ช‡ ๋น„ํŠธ์˜ ๋ธŒ๋ผ์šฐ์ € ์ •๋ณด๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ  ์˜ˆ์ƒ JSON ํ˜•์‹์œผ๋กœ ๋ž˜ํ•‘ํ•˜๊ณ  ๊ฒŒ์‹œํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์ด ์ž‘์—…์€ ๋ช‡ KB min+gz๋ฅผ ๋„˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์•ผ ํ• ๊นŒ์š”?

๋‚˜๋Š” ์ด๊ฒƒ์ด ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ํ•„์š”ํ•œ ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋” ๋งŽ์€ ์•„ํ‚คํ…์ฒ˜๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ ์ง€์›์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ JSON ๊ฒŒ์‹œ๋ฌผ์— ์ •๋ณด๋ฅผ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ„๋‹จํ•œ ํ›„ํฌ๊ฐ€ ํ•„์š”ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๊ทธ๊ฒŒ ์ „๋ถ€์ž…๋‹ˆ๋‹ค.

์š”์ฆ˜์—๋Š” ๋ฉ”๊ฐ€๋ฐ”์ดํŠธ์˜ JS๋ฅผ ๋ฐฐํฌํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ๋ชจ๋ฐ”์ผ์—์„œ ๋น ๋ฅด๊ฒŒ ๋กœ๋“œ๋˜๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ์—„๊ฒฉํ•œ ์ฝ˜ํ…์ธ  ์ •์ฑ…์ด ์ž‘๋™ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์˜ค๋ฅ˜์— JS ์˜ˆ์‚ฐ์˜ ์ ˆ๋ฐ˜ ์ด์ƒ์„ ์ง€์ถœํ•˜๋Š” ๊ฒƒ์„ ์ •๋‹นํ™”ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋กœ๊น… - ์•„๋งˆ๋„ 10%๊ฐ€ ์ตœ๊ณ ์ด๋ฏ€๋กœ ~15-20KB์™€ ๊ฐ™์€ ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋‹น์‹ ์˜ ์ œํ’ˆ์„ ์‚ฌ๋ž‘ํ•˜์ง€๋งŒ ์ด ํด๋ผ์ด์–ธํŠธ๋ฅผ ๋ฐฐํฌํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค ๐Ÿ˜

์ด์™€ ๊ฐ™์€ ๊ฒฝ์šฐ ์Šคํƒ ์ถ”์  ๋ฐ ์†Œ์Šค ๋งต ๊ตฌ๋ฌธ ๋ถ„์„์„ ์„œ๋ฒ„์— ์œ„์ž„ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ํฌ๊ธฐ๋Š” ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค.

์ด์™€ ๊ฐ™์€ ๊ฒฝ์šฐ ์Šคํƒ ์ถ”์  ๋ฐ ์†Œ์Šค ๋งต ๊ตฌ๋ฌธ ๋ถ„์„์„ ์„œ๋ฒ„์— ์œ„์ž„ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ํฌ๊ธฐ๋Š” ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค.

@cromefire ํฅ๋ฏธ๋กœ์šด ์•„์ด๋””์–ด์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด TrackJS๊ฐ€ ํฌ๊ธฐ๋ฅผ ์ž‘๊ฒŒ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํ•˜๋Š” ์ผ์ธ์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. (๊ทธ๋“ค์˜ ํด๋ผ์ด์–ธํŠธ๋Š” ๋…์ ์ ์ž…๋‹ˆ๋‹ค - ์ถ•์†Œ๋œ ์†Œ์Šค๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ทธ๋“ค์ด ๋ฌด์—‡์„ ํ•˜๋Š”์ง€ ๋งํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๊ทธ๊ฒƒ์„ ์„ค์น˜ํ•˜๊ณ  ์œ ์„ ์„ ํ†ตํ•ด ์ด๋™ํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ด…์‹œ๋‹ค...)

๋‹ค์Œ์€ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์†Œ์Šค ๋งต์„ ํ•ด๊ฒฐํ•˜๋Š” ๋” ๊ฐ„๋‹จํ•œ ํŒจํ‚ค์ง€์ž…๋‹ˆ๋‹ค. source-map-resolve at ~2KB min+gz ... ํด๋ฆฌํ•„์ด ์—†์ง€๋งŒ (์ด๊ฒƒ์ด ์ž‘๋™ํ•˜๋Š” ๊ฒฝ์šฐ) ~10KB์— ๋„๋‹ฌํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํด๋ฆฌํ•„์ด ํ•„์š”ํ•˜์ง€ ์•Š์€ ์ตœ์‹  ๋ธŒ๋ผ์šฐ์ €.

๊ทธ๊ฑด ํด๋ฆฌํ•„ ์—†์ด

Polyfills๋Š” esm ๋นŒ๋“œ์— ์—†์–ด์•ผ ํ•˜๋ฏ€๋กœ ์ž‘๋™ํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ bachend์—์„œ๋Š” ํ›จ์”ฌ ์ ์Šต๋‹ˆ๋‹ค.

@cromefire ESM ๋นŒ๋“œ๋Š” ์ง€๊ธˆ 4.5.1 ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ „ํˆฌ ํ…Œ์ŠคํŠธ๋ฅผ ๊ฑฐ์ณค๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์•„์ง ๋ฌธ์„œํ™”๋˜์ง€ ์•Š์•˜์ง€๋งŒ ์ง€๊ธˆ๊นŒ์ง€๋Š” ๋งค์šฐ ์ข‹์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” babel loader๋กœ ์ผ๋ฐ˜ webpack ๋นŒ๋“œ๋ฅผ ํ™•์ธํ–ˆ๊ณ  ๊ทธ๊ฒƒ์€ ๋งค๋ ฅ์ฒ˜๋Ÿผ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ ์™ธ์—๋„ ๋ช‡ ๋น„ํŠธ์˜ ๋ธŒ๋ผ์šฐ์ € ์ •๋ณด๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ  ์˜ˆ์ƒ JSON ํ˜•์‹์œผ๋กœ ๋ž˜ํ•‘ํ•˜๊ณ  ๊ฒŒ์‹œํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์ด ์ž‘์—…์€ ๋ช‡ KB min+gz๋ฅผ ๋„˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์•ผ ํ• ๊นŒ์š”?

@mindplay-dk ์šฐ๋ฆฌ๋Š” ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ ์Šคํƒ ์ถ”์  ๋ถ„์„์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์ด ์„œ๋ฒ„์—์„œ ์ด๋ฃจ์–ด์ง€๋ฏ€๋กœ ์ง€์›์„ ๋ฐ›์œผ๋ ค๋ฉด ๋จผ์ € ์†Œ์Šค ๋งต์„ ์—…๋กœ๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ๊ฐ€ ํ•˜๋Š” ์ผ์€:

  • Sentry๋กœ ์ „์†ก๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •/ํ•„ํ„ฐ๋ง/ํ–ฅ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ์šฉ์ž ์ •์˜ ํ›„ํฌ๋ฅผ ์ œ๊ณตํ•˜๋Š” ์ด๋ฒคํŠธ ํ”„๋กœ์„ธ์„œ
  • ๋ชจ๋“  ๋„ค์ดํ‹ฐ๋ธŒ API ๋ž˜ํ•‘ ์ฒ˜๋ฆฌ
  • ๋ชจ๋“  ์‚ฌ์šฉ์ž ์ƒํ˜ธ ์ž‘์šฉ, ๋„คํŠธ์›Œํฌ ํ˜ธ์ถœ, ํƒ์ƒ‰์—์„œ ์ด๋™ ๊ฒฝ๋กœ ์บก์ฒ˜
  • ์‚ฌ์šฉ์ž ์—์ด์ „ํŠธ ๋ฐ์ดํ„ฐ ์ถ”์ถœ
  • ์—ฐ๊ฒฐ๋œ ์˜ค๋ฅ˜์—์„œ ์ถ”๊ฐ€ ์˜ค๋ฅ˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•˜์—ฌ ๋‹ค๋ฅธ ์–ธ์–ด์—์„œ์™€ ๊ฐ™์ด ๋‹ค์ค‘ ์˜ค๋ฅ˜ ์ˆ˜์ค€์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋‘ ์ „์—ญ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ๊ธฐ ๋ชจ๋‘ ์ˆ˜์‹ 
  • ๋‹ค์ค‘ ๋„คํŠธ์›Œํฌ ์ „์†ก์„ ์ œ๊ณตํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ํ•ญ์ƒ ํ˜„์žฌ ํ™˜๊ฒฝ์— ๊ฐ€์žฅ ์ ํ•ฉํ•œ ์ „์†ก์„ ์–ป์„ ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
  • ์—์ง€ ์ผ€์ด์Šค์˜ 10๋ถ„์˜ 1๊ณผ ๋‹ค์–‘ํ•œ ์˜ค๋ฅ˜(๋งž์ถคํ˜• ์˜ค๋ฅ˜๋„ ํฌํ•จ) ๊ฐœ์ฒด ๋ฐ ๋‹ค์–‘ํ•œ ๊ธฐ๋ณธ ๊ตฌํ˜„์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • ์˜ˆ๋น„ ๋˜๋Š” ์†์ƒ๋œ ์˜ค๋ฅ˜ ์ •๋ณด์— ๋Œ€ํ•œ ๋Œ€์ฒด ์ œ๊ณต
  • ์ด๋ฒคํŠธ๋ฅผ ๋ฒ„ํผ๋งํ•˜์—ฌ ์ž์‹ ์˜ Sentry ์ธ์Šคํ„ด์Šค๊ฐ€ ๋ฒ”๋žŒํ•˜๊ฑฐ๋‚˜ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ ๋ฌด๋ฃŒ ์ด๋ฒคํŠธ๊ฐ€ ๋ถ€์กฑํ•˜์ง€ ์•Š๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

๋ช‡๊ฐ€์ง€ ๋งํ•˜์ž๋ฉด. "์˜ค๋ฅ˜ ํฌ์ฐฉ, ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€ ๋ฐ ์ „์†ก"๋งŒํผ ์‰ฌ์› ์œผ๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ ์‹ค์ œ ์„ธ๊ณ„์—๋Š” ์ˆ˜์‹ญ ๊ฐœ์˜ ์ž…๋ ฅ, ์ˆ˜์‹ญ ๊ฐœ์˜ ์†Œ์Šค ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ(๋ชจ๋‘ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•จ) ๋™์ž‘์ด ๋‹ค์–‘ํ•œ ์ˆ˜์‹ญ ๊ฐœ์˜ ํ™˜๊ฒฝ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
์šฐ๋ฆฌ๋Š” ์ด๊ฒƒ์„ ~10-15kB๋กœ ๋‚ฎ์ถ”๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๊ณ„์† ๋…ธ๋ ฅํ•  ๊ฒƒ์ด์ง€๋งŒ ์‹œ๊ฐ„์ด ์ข€ ๊ฑธ๋ฆด ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ง€๊ธˆ ์“ธ ์ˆ˜ ์žˆ๋Š” ๋ฆฌ์†Œ์Šค(์‚ฌ๋žŒ/์‹œ๊ฐ„ ์ฝ๊ธฐ)๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์Šต๋‹ˆ๋‹ค.

์š”์ฆ˜์—๋Š” ๋ฉ”๊ฐ€๋ฐ”์ดํŠธ์˜ JS๋ฅผ ๋ฐฐํฌํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ๋ชจ๋ฐ”์ผ์—์„œ ๋น ๋ฅด๊ฒŒ ๋กœ๋“œ๋˜๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ์—„๊ฒฉํ•œ ์ฝ˜ํ…์ธ  ์ •์ฑ…์ด ์ž‘๋™ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์˜ค๋ฅ˜์— JS ์˜ˆ์‚ฐ์˜ ์ ˆ๋ฐ˜ ์ด์ƒ์„ ์ง€์ถœํ•˜๋Š” ๊ฒƒ์„ ์ •๋‹นํ™”ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋กœ๊น… - ์•„๋งˆ๋„ 10%๊ฐ€ ์ตœ๊ณ ์ด๋ฏ€๋กœ ~15-20KB์™€ ๊ฐ™์€ ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ ๋กœ๋”๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค โ€“ https://docs.sentry.io/platforms/javascript/loader/ :)

๊ทธ๋Ÿฐ ๋‹ค์Œ ๋กœ๋”๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค โ€“ https://docs.sentry.io/platforms/javascript/loader/ :)

๊ทธ๋Ÿฌ๋‚˜ ์Šฌํ”„๊ฒŒ๋„ webpack์— ๋Œ€ํ•œ ์†”๋ฃจ์…˜์€ ์—†์Šต๋‹ˆ๋‹ค

๋ช‡๊ฐ€์ง€ ๋งํ•˜์ž๋ฉด. "์˜ค๋ฅ˜ ํฌ์ฐฉ, ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€ ๋ฐ ์ „์†ก"๋งŒํผ ์‰ฌ์› ์œผ๋ฉด ํ•ฉ๋‹ˆ๋‹ค.

๋ˆ„๊ตฐ๊ฐ€ tc39 ์—์„œ ๋ฌด์–ธ๊ฐ€๋ฅผ ์ œ์•ˆํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค๊ฐ€ ์–ด๋–ค์ง€ ์‚ดํŽด๋ด์•ผ ํ•˜๊ฒ ์ง€๋งŒ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์Šคํƒ ์ถ”์  ์ฝ๊ธฐ์™€ ๊ฐ™์€ ํ‘œ์ค€ํ™”๋œ API๋ฅผ ์ œ์•ˆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์Šฌํ”„๊ฒŒ๋„ webpack์— ๋Œ€ํ•œ ์†”๋ฃจ์…˜์€ ์—†์Šต๋‹ˆ๋‹ค

์ •ํ™•ํ•˜๊ฒŒ ๋ฌด์Šจ ๋œป์ž…๋‹ˆ๊นŒ? ๊ฐ€์ ธ์˜ค๊ธฐ ๋ฐ ๋ฒˆ๋“ค๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋กœ๋”์™€ ๊ณต์กดํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์˜ค๋ฅ˜ ๋˜๋Š” captureException ํ˜ธ์ถœ์ด ๋ฐœ์ƒํ•˜๋ฉด ๋น„๋™๊ธฐ์ ์œผ๋กœ ๋กœ๋“œ๋œ SDK์™€ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋Š” ํŒจํ‚ค์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

์ •ํ™•ํ•˜๊ฒŒ ๋ฌด์Šจ ๋œป์ž…๋‹ˆ๊นŒ? ๊ฐ€์ ธ์˜ค๊ธฐ ๋ฐ ๋ฒˆ๋“ค๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋กœ๋”์™€ ๊ณต์กดํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์˜ค๋ฅ˜ ๋˜๋Š” captureException ํ˜ธ์ถœ์ด ๋ฐœ์ƒํ•˜๋ฉด ๋น„๋™๊ธฐ์ ์œผ๋กœ ๋กœ๋“œ๋œ SDK์™€ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋Š” ํŒจํ‚ค์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

์˜ˆ, ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์š”์•ฝํ•˜๋ฉด ๋กœ๋”๋Š” cdn์„ ํ†ตํ•ด์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@cromefire ์˜ˆ, "์Šค๋‹ˆํŽซ"์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ https://github.com/getsentry/sentry-javascript/blob/master/packages/browser/src/loader.js ์—์„œ ์ฝ”๋“œ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

esm ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ž์‹ ์˜ ์ฝ”๋“œ์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ƒˆ PR์„ ์—ด์–ด์•ผ ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

minimal loader ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ  ์ตœ์ข… ๋ฒˆ๋“ค์— ๋ช‡ kB๋งŒ ํšจ๊ณผ์ ์œผ๋กœ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ์†”๋ฃจ์…˜์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

1kb ๋ฏธ๋งŒ์œผ๋กœ ๋กœ๋“œํ•˜๋Š” ๋กœ๋”๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์€ ์–ด๋ ต์ง€ ์•Š์„ ๊ฒƒ์ด๋ฏ€๋กœ ๋น ๋ฅธ ๊ฒƒ์„ ์ž‘์„ฑํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ๋งŽ์€ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ๋Š” ํ•œ ๊ฐ€์ง€๋Š” ๊ธฐ๋Šฅ ์ค‘ ์ผ๋ถ€๊ฐ€ ์„ ํƒ ์‚ฌํ•ญ์ธ ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์ •๋ง ์ข‹์€ ์ตœ์†Œํ•œ์˜ ๊ฐ’์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๊ธฐ๋ณธ ์˜ค๋ฅ˜ ์Šคํƒ ์ถ”์ (์ผ๋ถ€ ๋ธŒ๋ผ์šฐ์ €์—์„œ๋Š” ์ตœ์ ์ด ์•„๋‹ˆ์–ด๋„ ์ƒ๊ด€ ์—†์Œ)
  • ์‚ฌ์šฉ์ž ์—์ด์ „ํŠธ
  • ํƒ€์ž„์Šคํƒฌํ”„
  • URL
  • ์„œ๋ฒ„์˜ ์†Œ์Šค ๋งต๊ณผ ์ผ์น˜

์ถ”๊ฐ€ ๊ธฐ๋Šฅ์€ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ตœ์‹  ๋ธŒ๋ผ์šฐ์ €๋งŒ ์ง€์›ํ•˜๋ฏ€๋กœ ์ด์ „ ๋ธŒ๋ผ์šฐ์ €์˜ ๋ชจ๋“  ๊ธฐ๋ฐœํ•œ ๋™์ž‘์„ ํ•ด๊ฒฐํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

webpack ์ฝ”๋“œ ๋ถ„ํ• ์„ ์‚ฌ์šฉํ•˜๊ณ  ์˜ค๋ฅ˜ ๋ฐœ์ƒ ์‹œ์—๋งŒ ์„ผํŠธ๋ฆฌ ํด๋ผ์ด์–ธํŠธ๋ฅผ ๋กœ๋“œํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

sentry.js

import * as Sentry from '@sentry/browser';
Sentry.init({
  ...
  integrations: integrations => {
    return integrations.filter(integration => integration.name !== 'GlobalHandlers');
  },
});
export const logError = error => Sentry.captureException(error);

errors.js

const captureError = async error => {
 const { logError } await import(/* webpackChunkName: "sentry" */ './sentry');
 logError(error);
}
window.onerror = (message, url, line, column, error) => captureError(error);
window.onunhandledrejection = event => captureError(event.reason);

๋นต ๋ถ€์Šค๋Ÿฌ๊ธฐ ์ฑ„์šฐ๊ธฐ, ์ถ”๊ฐ€ ์ถ”๊ฐ€, ํƒœ๊ทธ ์ถ”๊ฐ€ ๋“ฑ๊ณผ ๊ฐ™์€ ์ž‘์—…์„ ๋” ์ˆ˜ํ–‰ํ•˜์ง€๋งŒ ์„ผํŠธ๋ฆฌ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๋ฒˆ๋“ค์„ ๋” ํฌ๊ฒŒ ๋งŒ๋“ค์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋‚ด๊ฐ€ #1846์—์„œ ๊ตฌํ˜„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
๋‹ค์Œ๊ณผ ๊ฐ™์ด webpack( 4.29.5 )๊ณผ ํ•จ๊ป˜ ESM ๋นŒ๋“œ๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

  • package.json module ์„ ์–ธ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ํ‘œ์ค€ ๋นŒ๋“œ ๋Œ€์‹  ESM ๋นŒ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์›นํŒฉ ๋ณ„์นญ ์ถ”๊ฐ€
resolve: {
    alias: {
        // use sentry ESM build which is not declared in the @sentry/browser package.json
        '@sentry/browser': path.resolve(
            __dirname,
            'node_modules/@sentry/browser/esm',
        ),
    }
  • ESM ๋นŒ๋“œ์— ES2015๋ณด๋‹ค ์ตœ์‹  ๊ธฐ๋Šฅ์ด ํฌํ•จ๋˜์–ด ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋ฏ€๋กœ babel-loader ๊ตฌ์„ฑ์— sentry/.+/esm ์— ๋Œ€ํ•œ ์ œ์™ธ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
{
    test: /\.m?jsx?$/,
    loader: 'babel-loader',
    // compile sentry as the ESM build is new and ships modern features which break our supported browsers
    exclude: /(node_modules\/(?!(@sentry\/[^/]+\/esm))|bower_components)\//,
}

๋…ธํŠธ:

  • ์ฝ”๋“œ์—์„œ ์‚ฌ์šฉํ•  ๋•Œ ๋ฒˆ๋“ค๋ง์— ๋Œ€ํ•ด ๊ฑฑ์ •ํ•  ํ•„์š”๊ฐ€ ์—†๋„๋ก ๋ณ„์นญ์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค(๋ฌด์—‡๋ณด๋‹ค๋„ lodash-es ์— ๋Œ€ํ•ด ์œ ์‚ฌํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•จ)

@๋ผ์ž„์Šค

@sentry/browser/esm ๋กœ ๋ฆฌ๋””๋ ‰์…˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

resolve: {
    alias: {
        // use sentry ESM build which is not declared in the @sentry/browser package.json
        '@sentry/browser': '@sentry/browser/esm'
    }

ํ•˜์ง€๋งŒ ๋ณ„์นญ์„ ์ถ”๊ฐ€ํ•  ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค @sentry/browser/esm ๊ฐ€์ ธ์˜ค๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๋กœ๋”์˜ ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ๋” ์‰ฝ์Šต๋‹ˆ๋‹ค.

  • babel์— ๋‹ค๋ฅธ ๊ฒƒ์ด ์žˆ๋‹ค๋ฉด:
{
    test: /other_things/,
    include: [/@sentry\/.+\/esm/],
    exclude: /node_modules/,
    // config
}
  • ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ:
{
    test: /@sentry\/.+\/esm/,
    exclude: /node_modules/,
    // config
}

๋˜ํ•œ ํ•„์š”์— ๋”ฐ๋ผ babel ๊ตฌ์„ฑ์„ ์‚ฌ์šฉ์ž ์ง€์ •ํ•˜๋Š” ๊ฒƒ์„ ์žŠ์ง€ ๋งˆ์‹ญ์‹œ์˜ค: babel docs , ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด esm ๋ฒ„์ „์„ ์‚ฌ์šฉํ•  ๊ฐ€์น˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์—…๋ฐ์ดํŠธ: ๋ฒˆ๋“ค ํฌ๊ธฐ๋ฅผ ํฌ๊ฒŒ ์ค„์ด๋Š” ์ƒˆ๋กœ์šด ์ฃผ์š” SDK ๋ฒ„์ „์„ ๊ณง ์ถœ์‹œํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

26.1 kB - https://bundlephobia.com/result?p=@sentry/browser @4.6.4
๋Œ€
17.2 kB - https://bundlephobia.com/result?p=@sentry/browser @5.0.0-rc.1

์‚ฌ์ „ ๊ตฌ์ถ•๋œ CDN ๋ฒ„์ „์€ ๋” ๋‚˜์€ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค(๋ฒˆ๋“ค ๊ณตํฌ์ฆ์ด ์–ด๋–ป๊ฒŒ ๋ฌผ๊ฑด์„ ์ธก์ •ํ•˜๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Œ)

ES6:  14.3535 kB
ES5:  15.6846 kB

์–ด์จŒ๋“ , ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์—ฌ์ „ํžˆ ๋ฒˆ๋“ค ํฌ๊ธฐ๋ฅผ ๋” ์ค„์ด๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Œ์„ ์•Œ๋ฆฌ๊ณ  ์‹ถ์—ˆ์ง€๋งŒ ์ด๊ฒƒ์€ ์ด๋ฏธ ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉํ–ฅ์œผ๋กœ์˜ ํฐ ์ง„์ „์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์—…๊ทธ๋ ˆ์ด๋“œ์— ๋Œ€ํ•œ ์ฐธ๊ณ  ์‚ฌํ•ญ: SDK์— ๋งŽ์€ ๋‚ด๋ถ€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์žˆ์œผ๋ฏ€๋กœ ํฐ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์ธก์—์„œ ํ•„์š”ํ•œ ์ฝ”๋“œ ๋ณ€๊ฒฝ์ด ์—†์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ํ˜„์žฌ sentry.io์—์„œ ์ƒˆ ๋ฒ„์ „์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์ง์ ‘ ํ…Œ์ŠคํŠธํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ฐธ์กฐ: https://github.com/getsentry/sentry/pull/12492

๋ฉด์ฑ… ์กฐํ•ญ: ์•„์ง ํ”„๋กœ๋•์…˜์—์„œ 5.0.0-rc.x ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ๐Ÿ™ˆ

@HazAT ์ง„์ง€ํ•˜๊ฒŒ ๋ฐ›์•„์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ์ด๊ฒƒ์€ ํฐ ์ง„์ „์ž…๋‹ˆ๋‹ค - ์ €๋Š” ์ด๋ฏธ ์ด๊ฒƒ์„ ์ง€๊ธˆ ๋ฐฐํฌํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ํ›จ์”ฌ ๋œ ๊ฑฑ์ •ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค :-)

image

@kamilogorek ๊ทธ๋ƒฅ ๊ถ๊ธˆํ•ด์„œ ๋น„๊ต์— 3.x ๋ถ„๊ธฐ์˜ ๋งˆ์ง€๋ง‰ ๋ฒ„์ „์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ €๋Š” ์ด ๋ฌธ์ œ๋ฅผ ๋‹ซ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ๋กœ์„œ๋Š” v4์—์„œ v5๋กœ ์ด๋™ํ•˜๋Š” ์ถ•์†Œ๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐ€๋Š” ์ถ”์„ธ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์—ฌ์ „ํžˆ ๊ทธ๊ฒƒ์„ ๋” ์ค„์ด๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•  ๊ฒƒ์ด๋ฉฐ ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ๋‹ค์‹œ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ๋งค์šฐ ์˜์‹ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ "๋ฒˆ๋“ค" ํฌ๊ธฐ๋งŒ ๋น„๊ตํ•˜๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ ์ค‘์ธ ๋ฒˆ๋“ค๋Ÿฌ์— ๋”ฐ๋ผ ๋งˆ์ผ๋ฆฌ์ง€๊ฐ€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋‹ค์Œ์€ ๋ฐฐ์†กํ•˜๋Š” CDN ๋ฒˆ๋“ค ๋ฒˆํ˜ธ์ž…๋‹ˆ๋‹ค.

| ํŒจํ‚ค์ง€ | ๋ฒ„์ „ | ํฌ๊ธฐ(๋ฐ”์ดํŠธ) | ํฌ๊ธฐ(KB) | ๋งํฌ |
|-----|---------|---------------|----- -------|------------------------------------------ ----------|
| ๊นŒ๋งˆ๊ท€-js | 3.27.0 | 13741๋ฐ”์ดํŠธ | ~13.4kb | https://cdn.ravenjs.com/3.27.0/raven.min.js |
| @sentry/๋ธŒ๋ผ์šฐ์ € | 4.6.6 | 22607๋ฐ”์ดํŠธ | ~22.1kb | https://browser.sentry-cdn.com/4.6.6/bundle.min.js |
| @sentry/๋ธŒ๋ผ์šฐ์ € | 5.0.3 | 16059๋ฐ”์ดํŠธ | ~15.7kb | https://browser.sentry-cdn.com/5.0.3/bundle.min.js |

v5์—์„œ๋Š” esm ๋นŒ๋“œ๋„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋ฒˆ๋“ค๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ฝ”๋“œ ๊ฒฝ๋กœ๋ฅผ ํŠธ๋ฆฌ์…ฐ์ดํฌํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋‹ค๋ ค์ฃผ์‹  ๋ชจ๋“  ๋ถ„๋“ค๊ป˜ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค ๐Ÿ™‡

@HazAT @kamilogorek ๊ต‰์žฅํ•ฉ๋‹ˆ๋‹ค!

@Limess @sentry/browser @sentry/browser/esm ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์˜ค๋Š˜๋‚ ์—๋„ ์—ฌ์ „ํžˆ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

import * as Sentry from "@sentry/browser/esm"; ์™€ ๊ฐ™์ด ๊ฐ€์ ธ์˜ค๊ณ  webpack -p $์™€ ํ•จ๊ป˜ ๋ฒˆ๋“ค๋กœ ์ œ๊ณต๋˜์ง€๋งŒ ๋ฒˆ๋“ค ํฌ๊ธฐ์—๋Š” ์ฐจ์ด๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ์ด๋‚˜ ๋กœ๋”๊ฐ€ ์—†๋Š” webpack.config.js ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

@0xbkt ์ ์–ด๋„ ์ง€๊ธˆ์€ ๋กค์—… ์„ ์‚ฌ์šฉํ•˜์—ฌ ์•ฑ์„ ๋ฌถ์„ ๋•Œ ๋ฒˆ๋“ค ํฌ๊ธฐ์— ์ฐจ์ด๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

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