Razzle: vscode๋กœ ๋…ธ๋“œ ์„œ๋ฒ„ ๋””๋ฒ„๊ทธ

์— ๋งŒ๋“  2018๋…„ 03์›” 20์ผ  ยท  11์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: jaredpalmer/razzle

vscode๋กœ ๋…ธ๋“œ ์„œ๋ฒ„๋ฅผ ๋””๋ฒ„๊น…ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. yarn start --inspect ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  launch.json ์— ์ด ๊ตฌ์„ฑ์œผ๋กœ ๋””๋ฒ„๊ฑฐ๋ฅผ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

{
   "type": "node",
   "request": "attach",
   "name": "Attach",
   "port": 9230,
   "outFiles": [
      "${workspaceRoot}/build/**/*.js"
   ]
}

build/server.js(๋นจ๊ฐ„์ƒ‰ ์ )์—์„œ ์ค‘๋‹จ์ ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ src/index.js(ํšŒ์ƒ‰ ์›)์—์„œ๋Š” ์„ค์ •ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์†Œ์Šค๋งต์— ๋ฌด์—‡์„ ์ž˜๋ชปํ•˜๊ณ  ์žˆ๋Š” ๊ฑธ๊นŒ์š”?:thinking: ?

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

๋‹ค๋ฅธ ์†Œ์Šค ๋งต ์„ค์ •์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ๋Š”๋ฐ VSCode๊ฐ€ cheap-module-sourcemap ๋ฅผ ์ข‹์•„ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
razzle.config.js :

module.exports = {
    modify(config, { target, dev }, webpack) {
        config.devtool = dev ? 'eval-source-map' : 'none';
        return config;
    }
}

launch.json :

{
    "name": "Attach to dev server",
    "type": "node",
    "request": "attach",
    "protocol": "inspector",
    "address": "localhost",
    "port": 9230
}

yarn start --inspect --inspect-port 9230 ๋กœ ์„œ๋ฒ„๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

*์ˆ˜์ •๋จ, ์˜ค๋ฅ˜๋ฅผ ์žก์•„์ค€ @dguyonvarch ์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

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

ํ”„๋กœ์„ธ์Šค ID๋กœ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐ ํ–‰์šด์ด ์žˆ์Šต๋‹ˆ๋‹ค. true๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” sourceMaps vscode ์‹คํ–‰ ๊ตฌ์„ฑ ์˜ต์…˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

    {
      "type": "node",
      "request": "attach",
      "name": "Attach by Process ID",
      "processId": "${command:PickProcess}",
      "restart": true
    }

@ajsharp ๋‹ต๋ณ€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค :smiley_cat:

์ฒจ๋ถ€ ๋ฐฉ๋ฒ•๊ณผ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. src/index.js์— ์ค‘๋‹จ์ ์„ ์„ค์ •ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

sourceMaps ์˜ต์…˜์€ ๊ธฐ๋ณธ์ ์œผ๋กœ true์ž…๋‹ˆ๋‹ค(https://code.visualstudio.com/docs/nodejs/nodejs-debugging#_source-maps ์ฐธ์กฐ).

๋‹ค๋ฅธ ์†Œ์Šค ๋งต ์„ค์ •์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ๋Š”๋ฐ VSCode๊ฐ€ cheap-module-sourcemap ๋ฅผ ์ข‹์•„ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
razzle.config.js :

module.exports = {
    modify(config, { target, dev }, webpack) {
        config.devtool = dev ? 'eval-source-map' : 'none';
        return config;
    }
}

launch.json :

{
    "name": "Attach to dev server",
    "type": "node",
    "request": "attach",
    "protocol": "inspector",
    "address": "localhost",
    "port": 9230
}

yarn start --inspect --inspect-port 9230 ๋กœ ์„œ๋ฒ„๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

*์ˆ˜์ •๋จ, ์˜ค๋ฅ˜๋ฅผ ์žก์•„์ค€ @dguyonvarch ์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

@benhamlin :smile_cat: ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค!
๋ฐฉ๊ธˆ ๊ท€ํ•˜์˜ ์Šค ๋‹ˆํŽซ์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

module.exports = {
  modify: (config, { target, dev }, webpack) => {
      config.devtool = dev ? 'eval-source-map' : 'none';
      return config
  }
}

razzle/packages/razzle/config/createConfig.js 93ํ–‰์—์„œ ์ด๊ฒƒ์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค.

// Controversially, decide on sourcemaps.
devtool: 'cheap-module-source-map'

๊ทธ๋ž˜์„œ ๋‚˜๋Š” ๋…ผ์Ÿ์„ ์—ฝ๋‹ˆ๋‹ค :wink: ! $# eval-source-map cheap-module-source-map ์ธ ์ด์œ 

์ด ๋ ˆ์‹œํ”ผ์— ๋Œ€ํ•œ ์„น์…˜์„ ๋ฌธ์„œ์— ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์€ ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

@jaredpalmer eval-source-map ๋กœ ๋ณ‘ํ•ฉ ์š”์ฒญ์„ ์ œ์•ˆํ•ด๋„ ๋ฉ๋‹ˆ๊นŒ? ์ด ๊ฒฝ์šฐ ๋ฌธ์„œ๋ฅผ ์—…๋ฐ์ดํŠธํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

ํ—! ๊ทธ๋ž˜์„œ ์—ฌ๊ธฐ ์˜คํ”ˆ ์†Œ์Šค์™€ ์ผ์ƒ ์—…๋ฌด ๋ฐ ์ƒํ™œ ์‚ฌ์ด์˜ ๊ฑฐ๋ž˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ด€๋ฆฌํ•ด์•ผ ํ•  ๊ฒƒ์ด ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— GitHub ๋ด‡์„ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๊ธฐ์ €๊ธฐ์„œ ๋ช‡ ๊ฐ€์ง€๋ฅผ ์ž๋™ํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ด ํŠน์ • GitHub ๋ด‡์€ ์ตœ๊ทผ ํ™œ๋™์ด ํ•œ๋™์•ˆ ์—†์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ถ€์‹คํ•œ ๊ฒƒ์œผ๋กœ ํ‘œ์‹œํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฉฐ์น  ๋™์•ˆ ๋” ์ด์ƒ ํ™œ๋™์ด ์—†์œผ๋ฉด ํ์‡„๋ฉ๋‹ˆ๋‹ค. ์ด ์ž‘์—…์„ ๊ฐœ์ธ์ ์œผ๋กœ ์‹ฌ๊ฐํ•˜๊ฒŒ ๋ฐ›์•„๋“ค์ด์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ์ด๊ฒƒ์€ ์™„์ „ํžˆ ์ž๋™ํ™”๋œ ์ž‘์—…์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์‹ค์ˆ˜๋ผ๋ฉด ๋Œ“๊ธ€, DM, ์บ๋ฆฌ์–ด ๋น„๋‘˜๊ธฐ ๋˜๋Š” ์—ฐ๊ธฐ ์‹ ํ˜ธ๋ฅผ ๋ณด๋‚ด์‹ญ์‹œ์˜ค.

๋น„ํ™œ์„ฑ ์ƒํƒœ๋กœ ์ธํ•ด ProBot์ด ์ด๋ฅผ ์ž๋™์œผ๋กœ ๋‹ซ์•˜์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์‹ค์ˆ˜๋ผ๋ฉด Holler, ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ๋‹ค์‹œ ์—ด ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์—…๋ฐ์ดํŠธ: ์„œ๋ฒ„๋ฅผ ๋””๋ฒ„๊ทธํ•˜๊ธฐ ์œ„ํ•ด vscode๋ฅผ ์–ป๋Š” ๋” ์ข‹์€ ๋ฐฉ๋ฒ•์€ ์ด๊ฒƒ์„ launch.json์— ์ถ”๊ฐ€ํ•˜๊ณ  devtool ๊ตฌ์„ฑ์„ razzle์˜ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ๋‘๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด VSCode ๋””๋ฒ„๊น…๊ณผ ๋” ๋‚˜์€ ํด๋ผ์ด์–ธํŠธ ๋””๋ฒ„๊น… ๊ฒฝํ—˜์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค(eval-source-maps๋Š” React์˜ ๋””๋ฒ„๊ทธ ์˜ค๋ฅ˜ ๋ทฐ์–ด๋ฅผ ์ค‘๋‹จํ•จ).

"sourceMapPathOverrides": {
    "webpack:///*": "${workspaceRoot}/*"
 }

@benhamlin๋‹˜ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. Razzle์—์„œ ์†Œํ”„ํŠธ ์žฌ์‹œ์ž‘( rs then ENTER )์„ ์ˆ˜ํ–‰ํ•œ ํ›„ VSCode์—์„œ ๋””๋ฒ„๊ฑฐ ์ธ์Šคํ„ด์Šค์— ์‰ฝ๊ฒŒ ๋‹ค์‹œ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

ATM์„ ์†Œํ”„ํŠธ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋ฉด VSCode ๋””๋ฒ„๊ฑฐ ์—ฐ๊ฒฐ์ด ๋Š์–ด์ง€๋ฏ€๋กœ ์„œ๋ฒ„๋ฅผ ์ข…๋ฃŒํ•˜๊ณ  ๋‹ค์‹œ ์‹œ์ž‘ํ•œ ๋‹ค์Œ ๋””๋ฒ„๊ฑฐ๋ฅผ ๋‹ค์‹œ ์—ฐ๊ฒฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@benhamlin ์ด ๊ตฌ์„ฑ์œผ๋กœ ๋งค๋ ฅ์ฒ˜๋Ÿผ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.wink:

{
      "type": "node",
      "request": "attach",
      "name": "Attach",
      "port": 9230,
      "sourceMapPathOverrides": {
         "webpack:///*": "${workspaceRoot}/*"
      }
}

@ourmaninamsterdam RS๋Š” ์ƒˆ ๋””๋ฒ„๊ทธ ํฌํŠธ(9230 + 1)์—์„œ ์„œ๋ฒ„๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋ฏ€๋กœ ์‹œ์ž‘ ๊ตฌ์„ฑ์—์„œ ์—ฐ๊ฒฐ ํฌํŠธ๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋” ์ด์ƒ ์กฐ์‚ฌํ•˜์ง€ ์•Š์•˜๋‹ค : ์‹ค๋ง :

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

๊ด€๋ จ ๋ฌธ์ œ

JacopKane picture JacopKane  ยท  3์ฝ”๋ฉ˜ํŠธ

piersolenski picture piersolenski  ยท  4์ฝ”๋ฉ˜ํŠธ

gabimor picture gabimor  ยท  3์ฝ”๋ฉ˜ํŠธ

pseudo-su picture pseudo-su  ยท  3์ฝ”๋ฉ˜ํŠธ

MaxGoh picture MaxGoh  ยท  4์ฝ”๋ฉ˜ํŠธ