Razzle: рдиреЛрдб рд╕рд░реНрд╡рд░ рдХреЛ vscode рд╕реЗ рдбрд┐рдмрдЧ рдХрд░реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 20 рдорд╛рд░реНрдЪ 2018  ┬╖  11рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: jaredpalmer/razzle

рдореИрдВ рдмрдирд╛рдо рдХреЛрдб рдХреЗ рд╕рд╛рде рдиреЛрдб рд╕рд░реНрд╡рд░ рдХреЛ рдбреАрдмрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВред рдореИрдВ yarn start --inspect рдЪрд▓рд╛рддрд╛ рд╣реВрдВ рдФрд░ рдореИрдВ рдЕрдкрдиреЗ launch.json . рдореЗрдВ рдЗрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдбреАрдмрдЧрд░ рд╕рдВрд▓рдЧреНрди рдХрд░рддрд╛ рд╣реВрдВ

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

рдореИрдВ рдмрд┐рд▓реНрдб/рд╕рд░реНрд╡рд░.рдЬреЗрдПрд╕ (рдПрдХ рд▓рд╛рд▓ рдмрд┐рдВрджреБ) рдореЗрдВ рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рд╕реЗрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ src/index.js (рдПрдХ рдЧреНрд░реЗ рд╕рд░реНрдХрд▓) рдореЗрдВ рд╕реЗрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ред рдореИрдВ рд╕реЛрд░реНрд╕рдореИрдкреНрд╕ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдЧрд▓рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ: рд╕реЛрдЪ:?

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореИрдВрдиреЗ рдЗрд╕реЗ рдПрдХ рдЕрд▓рдЧ рд╕реНрд░реЛрддрдореИрдк рд╕реЗрдЯрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛ рд╣реИ, 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 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореБрдЭреЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЖрдИрдбреА рджреНрд╡рд╛рд░рд╛ рд╕рдВрд▓рдЧреНрди рдХрд░рдиреЗ рдХрд╛ рд╕реМрднрд╛рдЧреНрдп рдорд┐рд▓рд╛ рд╣реИред рдПрдХ sourceMaps vscode рд▓реЙрдиреНрдЪ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡рд┐рдХрд▓реНрдк рднреА рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рд╕рд╣реА рдкрд░ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

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

@ajsharp рдЖрдкрдХреЗ рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж: рд╕реНрдорд╛рдЗрд▓реА_рдХреИрдЯ:

рд╕рдВрд▓рдЧреНрди рд╡рд┐рдзрд┐ рдХреЗ рд╕рдорд╛рдиред рдореИрдВ src/index.js рдореЗрдВ рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рд╕реЗрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред

рд╕реЛрд░реНрд╕рдореИрдкреНрд╕ рд╡рд┐рдХрд▓реНрдк рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рддреНрдп рд╣реИ (cf. 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 ред

@ рдмреЗрдирд╣реИрдорд▓рд┐рди : рдореБрд╕реНрдХрд╛рди_рдХреИрдЯ: рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ!
рдореИрдВрдиреЗ рдЕрднреА рдЖрдкрдХрд╛ рд╕реНрдирд┐рдкреЗрдЯ рдареАрдХ рдХрд┐рдпрд╛ рд╣реИ:

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'

рддреЛ рдореИрдВ рд╡рд┐рд╡рд╛рдж рдЦреЛрд▓рддрд╛ рд╣реВрдБ :рдкрд▓рдХ : ! рдХреНрдпреЛрдВ cheap-module-source-map рдХреЗ рдмрдЬрд╛рдп eval-source-map

рдХреЛрдИ рднреА рдЗрд╕ рдиреБрд╕реНрдЦрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдореЗрдВ рдПрдХ рдЕрдиреБрднрд╛рдЧ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ?

@jaredpalmer рдХреНрдпрд╛ рдореИрдВ eval-source-map рдХреЗ рд╕рд╛рде рдорд░реНрдЬ рдЕрдиреБрд░реЛрдз рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ? рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдбреЙрдХреНрдЯрд░ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИред

рд╣реЛрд▓рд╛! рддреЛ рдпрд╣рд╛рдБ рд╕реМрджрд╛ рд╣реИ, рдУрдкрди рд╕реЛрд░реНрд╕ рдФрд░ рдореЗрд░реЗ рджрд┐рди рдХреЗ рдХрд╛рдо рдФрд░ рдЬреАрд╡рди рдХреЗ рдмреАрдЪ рдФрд░ рдХреНрдпрд╛ рдирд╣реАрдВ, рдореЗрд░реЗ рдкрд╛рд╕ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХреБрдЫ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдпрд╣рд╛рдВ рдФрд░ рд╡рд╣рд╛рдВ рдХреБрдЫ рдЪреАрдЬреЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧрд┐рдЯрд╣рдм рдмреЙрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ GitHub рдмреЙрдЯ рдЗрд╕реЗ рдмрд╛рд╕реА рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рд╣рд╛рд▓ рдХреА рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реБрдИ рд╣реИред рдпрджрд┐ рдХреБрдЫ рджрд┐рдиреЛрдВ рдореЗрдВ рдХреЛрдИ рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ рддреЛ рдЗрд╕реЗ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕реЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рди рд▓реЗрдВ--рдЧрдВрднреАрд░рддрд╛ рд╕реЗ--рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд╛рд░реНрд░рд╡рд╛рдИ рд╣реИред рдЕрдЧрд░ рдпрд╣ рдПрдХ рдЧрд▓рддреА рд╣реИ, рддреЛ рдмрд╕ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВ, рдореБрдЭреЗ рдбреАрдПрдо рдХрд░реЗрдВ, рдПрдХ рд╡рд╛рд╣рдХ рдХрдмреВрддрд░, рдпрд╛ рдПрдХ рдзреВрдореНрд░рдкрд╛рди рд╕рдВрдХреЗрдд рднреЗрдЬреЗрдВред

рдирд┐рд╖реНрдХреНрд░рд┐рдпрддрд╛ рдХреЗ рдХрд╛рд░рдг ProBot рдиреЗ рдЗрд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ред рд╣реЛрд▓рд░ рдЕрдЧрд░ рдпрд╣ рдПрдХ рдЧрд▓рддреА рд╣реИ, рдФрд░ рд╣рдо рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓реЗрдВрдЧреЗред

рдЕрдкрдбреЗрдЯ: рд╕рд░реНрд╡рд░ рдХреЛ рдбреАрдмрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП vscode рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдмреЗрд╣рддрд░ рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЕрдкрдиреЗ рд▓реЙрдиреНрдЪ.рдЬреЗрд╕рди рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ, рдФрд░ devtool рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ razzle рдХреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкрд░ рдЫреЛрдбрд╝ рджреЗрдВред

рдпрд╣ VSCode рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛, рд╕рд╛рде рд╣реА рдПрдХ рдмреЗрд╣рддрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдбрд┐рдмрдЧрд┐рдВрдЧ рдЕрдиреБрднрд╡ (eval-source-maps, React рдХреЗ рдбрд┐рдмрдЧ рдПрд░рд░ рд╡реНрдпреВрдЕрд░ рдХреЛ рддреЛрдбрд╝рддрд╛ рд╣реИ)ред

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

рдзрдиреНрдпрд╡рд╛рдж @ рдмреЗрдиреНрд╣рдорд▓рд┐рдиред рдХреНрдпрд╛ рдЖрдк рд░реИрдЬрд╝рд▓ рдореЗрдВ рд╕реЙрдлреНрдЯ рд░реАрд╕реНрдЯрд╛рд░реНрдЯ ( rs рдлрд┐рд░ ENTER ) рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж VSCode рдореЗрдВ рдбрд┐рдмрдЧрд░ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдлрд┐рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдПрдЯреАрдПрдо рдЕрдЧрд░ рдореИрдВ рд╕реЙрдлреНрдЯ рд░реАрд╕реНрдЯрд╛рд░реНрдЯ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рд╡реАрдПрд╕рд╕реАрдУрдбреА рдбреАрдмрдЧрд░ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд╕рд░реНрд╡рд░ рдХреЛ рдорд╛рд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕реЗ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдлрд┐рд░ рдбреАрдмрдЧрд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

@benhamlin рдпрд╣ рдЗрд╕ рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдЖрдХрд░реНрд╖рдг рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: рдкрд▓рдХ:

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

@ourmaninamsterdam RS рдПрдХ рдирдП рдбрд┐рдмрдЧ рдкреЛрд░реНрдЯ (9230 + 1) рдкрд░ рд╕рд░реНрд╡рд░ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рд▓реЙрдиреНрдЪ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдЕрдЯреИрдЪ рдкреЛрд░реНрдЯ рдХреЛ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ред рдореИрдВрдиреЗ рдФрд░ рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХреА: рдирд┐рд░рд╛рд╢:

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

MaxGoh picture MaxGoh  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

sebmor picture sebmor  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

gabimor picture gabimor  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

charlie632 picture charlie632  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

knipferrc picture knipferrc  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ