Devtool
devtool ìµì ì ìì¤ë§µ ìì± ì¬ë¶ì ë°©ë²ì ì ì´í©ëë¤.
ë³´ë¤ ì¸ë°í ì¤ì ì ìí´ SourceMapDevToolPluginì ì¬ì©íì¸ì. 기존 ìì¤ë§µì ì²ë¦¬íë ¤ë©´ Rule.extractSourceMap를 ì°¸ê³ íì¸ì.
devtool
string = 'eval' Array<{ type: "all" | "javascript" | "css", use: string }> false
ëë²ê¹ ê³¼ì í¥ìì ìí´ source mapping ì¤íì¼ì ì íí©ëë¤. ì´ ê°ì ë¹ë ë° ë¦¬ë¹ë ìëì í° ìí¥ì ë¯¸ì¹ ì ììµëë¤.
5.105.0+ëí ë¤ìí ìì° ì íì ëí´ ìë¡ ë¤ë¥¸ ìì¤ ë§µ ì¤íì¼ì 구ì±í기 ìí´ ê°ì²´ ë°°ì´ì ì ê³µí ìë ììµëë¤.
webpack.config.js
export default {
// ...
devtool: [
{ type: "javascript", use: "source-map" },
{ type: "css", use: "inline-source-map" },
],
};type íëë ì´ë¤ ìì° ì íì´ devtool ê°ì ë°ìì¼ íëì§ ì§ì í©ëë¤.
"all"- 모ë ìì° ì í(JavaScript ë° CSS)ì ì ì©"javascript"- JavaScript íì¼ìë§ ì ì©"css"- CSS íì¼ìë§ ì ì©
ë°°ì´ì ì¬ì©íë ê²½ì° ê° í목ì ììëë¡ ì²ë¦¬ë©ëë¤. 문ìì´ ê°ì ì ê³µíë©´ { type: "all", use: "your-string-value" }ë¡ ì²ë¦¬ë©ëë¤.
T>devtool ìµì
ì ì¬ì©íë ëì , ë ë§ì ìµì
ì´ ìë SourceMapDevToolPlugin/EvalSourceMapDevToolPluginì ì§ì ì¬ì©í ìë ììµëë¤. devtool ìµì
ê³¼ íë¬ê·¸ì¸ì í¨ê» ì¬ì©í´ìë ì ë©ëë¤. devtool ìµì
ì ë´ë¶ì ì¼ë¡ íë¬ê·¸ì¸ì ì¶ê°íë¯ë¡ íë¬ê·¸ì¸ì ë ë² ì ì©íë ê²ê³¼ ê°ìµëë¤.
| devtool | ì±ë¥ | íë¡ëì | íì§ | ì½ë©í¸ |
|---|---|---|---|---|
| (none) | build: ê°ì¥ ë¹ ë¦ rebuild: ê°ì¥ ë¹ ë¦ | ê°ë¥ | bundle | ìµë ì±ë¥ì ê°ì¶ íë¡ëì ë¹ë를 ìí´ ì¶ì²íë ìµì ì ëë¤. |
eval | build: ë¹ ë¦ rebuild: ê°ì¥ ë¹ ë¦ | no | generated | ìµë ì±ë¥ì ê°ì¶ ê°ë° ë¹ë를 ìí´ ì¶ì²íë ìµì ì ëë¤. |
eval-cheap-source-map | build: ë³´íµ rebuild: ë¹ ë¦ | no | transformed | ê°ë° ë¹ë를 ìí ê· í ì¡í ìµì ì ëë¤. |
eval-cheap-module-source-map | build: ë림 rebuild: ë¹ ë¦ | no | original lines | ê°ë° ë¹ë를 ìí ê· í ì¡í ìµì ì ëë¤. |
eval-source-map | build: ê°ì¥ ë림 rebuild: ë³´íµ | no | original | ê³ íì§ ìì¤ë§µì í¬í¨í ê°ë° ë¹ë를 ìí´ ì¶ì²íë ìµì ì ëë¤. |
cheap-source-map | build: ë³´íµ rebuild: ë림 | no | transformed | - |
cheap-module-source-map | build: ë림 rebuild: ë림 | no | original lines | - |
source-map | build: ê°ì¥ ë림 rebuild: ê°ì¥ ë림 | yes | original | ê³ íì§ ìì¤ë§µì í¬í¨í íë¡ëì ë¹ë를 ìí´ ì¶ì²íë ìµì ì ëë¤. |
inline-cheap-source-map | build: ë³´íµ rebuild: ë림 | no | transformed | - |
inline-cheap-module-source-map | build: ë림 rebuild: ë림 | no | original lines | - |
inline-source-map | build: ê°ì¥ ë림 rebuild: ê°ì¥ ë림 | no | original | ë¨ì¼ íì¼ì ë´ë³´ë¼ ë ì íí ì ììµëë¤. |
eval-nosources-cheap-source-map | build: ë³´íµ rebuild: ë¹ ë¦ | no | transformed | ìì¤ ì½ë를 í¬í¨íì§ ììµëë¤. |
eval-nosources-cheap-module-source-map | build: ë림 rebuild: ë¹ ë¦ | no | original lines | ìì¤ ì½ë를 í¬í¨íì§ ììµëë¤. |
eval-nosources-source-map | build: ê°ì¥ ë림 rebuild: ë³´íµ | no | original | ìì¤ ì½ë를 í¬í¨íì§ ììµëë¤. |
inline-nosources-cheap-source-map | build: ë³´íµ rebuild: ë림 | no | transformed | ìì¤ ì½ë를 í¬í¨íì§ ììµëë¤. |
inline-nosources-cheap-module-source-map | build: ë림 rebuild: ë림 | no | original lines | ìì¤ ì½ë를 í¬í¨íì§ ììµëë¤. |
inline-nosources-source-map | build: ê°ì¥ ë림 rebuild: ê°ì¥ ë림 | no | original | ìì¤ ì½ë를 í¬í¨íì§ ììµëë¤. |
nosources-cheap-source-map | build: ë³´íµ rebuild: ë림 | no | transformed | ìì¤ ì½ë를 í¬í¨íì§ ììµëë¤. |
nosources-cheap-module-source-map | build: ë림 rebuild: ë림 | no | original lines | ìì¤ ì½ë를 í¬í¨íì§ ììµëë¤. |
nosources-source-map | build: ê°ì¥ ë림 rebuild: ê°ì¥ ë림 | yes | original | ìì¤ ì½ë를 í¬í¨íì§ ììµëë¤. |
hidden-nosources-cheap-source-map | build: ë³´íµ rebuild: ë림 | no | transformed | ì°¸ì¡°ê° ìì¼ë©°, ìì¤ ì½ë를 í¬í¨íì§ ììµëë¤. |
hidden-nosources-cheap-module-source-map | build: ë림 rebuild: ë림 | no | original lines | ì°¸ì¡°ê° ìì¼ë©°, ìì¤ ì½ë를 í¬í¨íì§ ììµëë¤. |
hidden-nosources-source-map | build: ê°ì¥ ë림 rebuild: ê°ì¥ ë림 | yes | original | ì°¸ì¡°ê° ìì¼ë©°, ìì¤ ì½ë를 í¬í¨íì§ ììµëë¤. |
hidden-cheap-source-map | build: ë³´íµ rebuild: ë림 | no | transformed | ì°¸ì¡°ê° ììµëë¤. |
hidden-cheap-module-source-map | build: ë림 rebuild: ë림 | no | original lines | ì°¸ì¡°ê° ììµëë¤. |
hidden-source-map | build: ê°ì¥ ë림 rebuild: ê°ì¥ ë림 | yes | original | ì°¸ì¡°ê° ìì¼ë©°, ìë¬ ë³´ê³ ëª©ì ì¼ë¡ ìì¤ë§µì ì¬ì©í ë ì í í ì ììµëë¤. |
| ë¨ì¶ ëª ë ¹ì´ | ì¤ëª |
|---|---|
| performance: build | ì´ê¸° ë¹ë ì±ë¥ì devtool ì¤ì ì ì´ë»ê² ìí¥ì ë°ìµëê¹? |
| performance: rebuild | ì¦ë¶ ë¹ë ì±ë¥ì devtool ì¤ì ì ì´ë»ê² ìí¥ì ë°ìµëê¹? ë린 devtoolì watch 모ëìì ê°ë° í¼ëë°± 루í를 ì¤ì¼ ì ììµëë¤. ë³´íµ ë¹ëë³´ë¤ ë¦¬ë¹ë ìëê° ë¹ ë¥¼ ê²ì¼ë¡ ììí기 ë문ì ë¹ë ì±ë¥ê³¼ ë¹êµíì ë ê·ëª¨ê° ë¤ë¦ ëë¤. |
| production | íë¡ëì
ë¹ëì ì´ devtool ì ì¬ì©íë ê²ì´ í©ë¦¬ì ì¸ê°ì? devtoolì´ ì¬ì©ì ê²½íì ë¶ì ì ì¸ ìí¥ì ë¯¸ì¹ ê²½ì° ì¼ë°ì ì¼ë¡ ìëì¤ ì
ëë¤. |
| quality: bundled | ë¨ì¼ ì½ë blobìì ìì±ë 모ë ì²í¬ ì½ë를 ë³¼ ì ììµëë¤. ì´ê²ì devtooling ì§ìì´ ìë ìì ì¶ë ¥ íì¼ì ëë¤. |
| quality: generated | ìì±ë ì½ë를 íìí©ëë¤. íì§ë§ ë¸ë¼ì°ì devtoolììë ê° ëª¨ëì´ ë³ëì ì½ë íì¼ë¡ íìë©ëë¤. |
| quality: transformed | ìì±ë ì½ë를 íìí©ëë¤. ì½ëë ë¡ëì ìí ì¬ì ì²ë¦¬ê° ëìì¼ë, ì¶ê° webpack ë³íì ì ì©ëì§ ìììµëë¤. ìì¤ ë¼ì¸ë§ 매íëê³ ìì±ëì§ ìì ì´ ì ë³´ë í기ë©ëë¤. ì´ë¥¼ íµí´ ìµìí ë구ì í¨ê» ìëíì§ ìë ì¤ ì¤ê°ì ì¤ë¨ì ì ì¤ì í ì ìëë¡ í©ëë¤. |
| quality: original lines | 모ë ë¡ëê° ìì¤ë§µíì ì§ìíë¤ê³ ê°ì íì¬ ê°ë°ìê° ìì±í ì본 ì½ëê° íìë©ëë¤. ìì¤ ë¼ì¸ë§ 매íëê³ ìì±ëì§ ìì ì´ ì ë³´ë í기ë©ëë¤. ì´ë¥¼ íµí´ ìµìí ë구ì í¨ê» ìëíì§ ìë ì¤ ì¤ê°ì ì¤ë¨ì ì ì¤ì í ì ìëë¡ í©ëë¤. |
| quality: original | 모ë ë¡ëê° ìì¤ë§µíì ì§ìíë¤ê³ ê°ì íì¬ ê°ë°ìê° ìì±í ì본 ì½ëê° íìë©ëë¤. |
eval-* addition | 모ëë³ë¡ ìì¤ë§µì ìì±íê³ evalì íµí´ ì¶ê°í©ëë¤ (attach it via eval). 리ë¹ë ì±ë¥ì´ ê°ì ëì´ ê°ë°ì ê¶ì¥í©ëë¤. ìëì°ì¦ ëíëì ë°ì´ë¬ì¤ ê²ì¬ë¡ ì¸í´ ìëê° í¬ê² ì íëë 문ì ê° ììµëë¤. |
inline-* addition | ìì¤ë§µì ë³ëì íì¼ì ë§ëë ëì ì본 íì¼ì ì¸ë¼ì¸ì¼ë¡ ì¶ê°í©ëë¤. |
hidden-* addition | ìì¤ë§µì ëí ì°¸ì¡°ê° ì¶ê°ëì§ ìììµëë¤. ì¤ë¥ ë³´ê³ ëª©ì ë±, ìì¤ë§µì ë°°í¬íì§ ìì§ë§ ë°ëì ìì±ëì´ì¼ íë ê²½ì°ì ì¬ì©í©ëë¤. |
nosources-* addition | ìì¤ ì½ëê° ìì¤ë§µì í¬í¨ëì´ ìì§ ììµëë¤. ì´ê²ì ì본 íì¼ì 참조í´ì¼ í ë ì ì© í ì ììµëë¤ (ì¶ê° ì¤ì ìµì ì´ íìí¨). |
ì´ ê° ì¤ ì¼ë¶ë ê°ë°ì, ì¼ë¶ë íë¡ëì ì ì í©í©ëë¤. ê°ë°ì ê²½ì° ì¼ë°ì ì¼ë¡ ë²ë¤ í¬ê¸° ë³´ë¤ë ë¹ ë¥¸ ìì¤ë§µì´ íìí©ëë¤. íì§ë§ íë¡ëì ì ê²½ì° ì ííê³ ìµìí를 ì§ìíë ë³ëì ìì¤ë§µì´ íìí©ëë¤.
Qualities
bundled code - ìì±ë 모ë ì½ëê° í° ì½ë blobì¼ë¡ íìë©ëë¤. 모ëì ìë¡ ë¶ë¦¬ëì´ ìì§ ììµëë¤.
generated code - ê° ëª¨ëì ìë¡ ë¶ë¦¬ëê³ ëª¨ë ì´ë¦ì¼ë¡ 주ìì´ íìë©ëë¤. webpackì ìí´ ìì±ë ì½ëê° íìë©ëë¤. ì를 ë¤ë©´ import {test} from "module"; test(); ëì , var module__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(42); module__WEBPACK_IMPORTED_MODULE_1__.a();ì´ íìë©ëë¤.
transformed code - ê° ëª¨ëì ìë¡ ë¶ë¦¬ëê³ ëª¨ë ì´ë¦ì¼ë¡ 주ìì´ íìë©ëë¤. webpackì´ ë³íí기 ì ì´ì§ë§, ë¡ëê° í¸ëì¤íì¼í íì ì½ëê° íìë©ëë¤. ì를 ë¤ë©´, import {test} from "module"; class A extends test {} ëì , import {test} from "module"; var A = function(_test) { ... }(test);ì ê°ì ì½ëê° íìë©ëë¤.
original source - ê° ëª¨ëì ìë¡ ë¶ë¦¬ëê³ ëª¨ë ì´ë¦ì¼ë¡ 주ìì´ íìë©ëë¤. ê°ë°ìê° ìì±í í¸ëì¤íì¼ ì ì ì½ë를 ë³¼ ì ììµëë¤. ì´ê²ì ë¡ë ì§ìì ë°ë¼ ë¤ë¦
ëë¤.
without source content - ìì¤ë§µì ìì¤ì ë´ì©ì´ í¬í¨ëì§ ììµëë¤. ì¼ë°ì ì¼ë¡ ë¸ë¼ì°ì ë ì¹ ìë² ëë íì¼ ìì¤í
ìì ìì¤ë¥¼ ë¡ëí©ëë¤. ìì¤ URLê³¼ ì¼ì¹íëë¡ output.devtoolModuleFilenameTemplateì ì¬ë°ë¥´ê² ì¤ì í´ì¼ í©ëë¤.
(lines only) - ìì¤ë§µì´ í ì¤ë¹ íëì 매íì¼ë¡ ë¨ìíë©ëë¤. ì´ê²ì ì¼ë°ì ì¼ë¡ êµ¬ë¬¸ë¹ ë¨ì¼ 매íì ì미í©ëë¤ (ì´ ë°©ìì¼ë¡ ê°ë°ìê° ìì±íë¤ê³ ê°ì í©ëë¤). ì´ë¥¼ íµí´ 구문 ë 벨ìì ëë²ê¹
ì¤íì ë°©ì§íê³ , íëì ë¼ì¸ìì ì´ì ì¤ë¨ì ì ì¤ì í ì ììµëë¤. ìµìí ë구ë ë³´íµ í ì¤ë¡ ë´ë³´ë´ë¯ë¡ ìµìíì í¨ê» ì¬ì©íë ê²ì ë¶ê°ë¥í©ëë¤.
Development
ë¤ì ìµì ì ê°ë°ì ì´ìì ì ëë¤.
eval - ê° ëª¨ëì eval() ë° //# sourceURLì íµí´ ì¤íí©ëë¤. ì´ê²ì 꽤 ë¹ ë¦
ëë¤. ì본 ì½ë ëì í¸ëì¤íì¼ë ì½ëì 매íë기 ë문ì ì¤ ë²í¸ê° ì¬ë°ë¥´ê² íìëì§ ìë ê²ì´ ê°ì¥ í° ë¨ì ì
ëë¤. (ë¡ëì ìì¤ë§µì´ ìì)
eval-source-map - ê° ëª¨ëì eval()ì¼ë¡ ì¤íëê³ ìì¤ë§µì eval()ì DataUrlë¡ ì¶ê°í©ëë¤. ì²ììë ë리ì§ë§, 리ë¹ë를 ë¹ ë¥´ê² ì ê³µíê³ ì¤ì íì¼ì ìì±í©ëë¤. ì¤ ë²í¸ë ì본 ì½ëì 매íëë¯ë¡ ì¬ë°ë¥´ê² 매íë©ëë¤. ìµê³ íì§ì ê°ë°ì© ìì¤ë§µì ìì±í©ëë¤.
eval-cheap-source-map - eval-source-mapê³¼ ì ì¬íë©° ê° ëª¨ëì eval()ì¼ë¡ ì¤íí©ëë¤. ì´ ë§¤íì´ ìê³ ì¤ ë²í¸ë§ 매ííë¯ë¡ ë¹ì©ì´ "ì ë ´"í©ëë¤. ë¡ëì ìì¤ë§µì 무ìíê³ eval devtoolê³¼ ë¹ì·íê² í¸ëì¤íì¼ ë ì½ëë§ íìí©ëë¤.
eval-cheap-module-source-map - eval-cheap-source-mapê³¼ ì ì¬íì§ë§, ì´ ê²½ì° ë ëì 결과를 ìí´ ë¡ëì ìì¤ë§µì ì¬ì©í©ëë¤. ê·¸ë¬ë ë¡ëì ìì¤ë§µì ë¼ì¸ ë¹ ë¨ì¼ 매íì¼ë¡ ë¨ìíë©ëë¤.
Special cases
ë¤ì ìµì ì ê°ë°ì´ë íë¡ëì ì ì í©íì§ ììµëë¤. ì¨ë íí° ë구를 ì¬ì©íë ë±, í¹ë³í ê²½ì°ì íìí©ëë¤.
inline-source-map - ìì¤ë§µì DataUrlë¡ ë²ë¤ì ì¶ê°í©ëë¤.
cheap-source-map - ë¡ë ìì¤ë§µì 무ìíê³ ì´ ë§¤íì´ ìë ìì¤ë§µì
ëë¤.
inline-cheap-source-map - cheap-source-mapê³¼ ì ì¬íì§ë§, ìì¤ë§µì DataUrlë¡ ë²ë¤ì ì¶ê°í©ëë¤.
cheap-module-source-map - ì´ ë§¤íì´ìë ìì¤ë§µì´ë©° ë¡ëì ìì¤ë§µì ì¤ ë¹ ë¨ì¼ 매íì¼ë¡ ë¨ìíí©ëë¤.
inline-cheap-module-source-map - cheap-module-source-mapê³¼ ë¹ì·íì§ë§, ìì¤ë§µì DataUrlë¡ ë²ë¤ì ì¶ê°í©ëë¤.
Production
ìëì ìµì ì ì¼ë°ì ì¼ë¡ íë¡ëì ìì ì¬ì©ë©ëë¤.
(none)(devtool ìµì
ìëµ ëë devtool: falseë¡ ì¤ì ) - ìì¤ë§µì ë´ë³´ë´ì§ ììµëë¤. ì´ê²ì ììí기ì ì¢ì ìµì
ì
ëë¤.
source-map - ì ì²´ ìì¤ë§µì ë³ëì íì¼ë¡ ë´ë³´ë
ëë¤. ë²ë¤ì 참조 주ìì ì¶ê°íì¬ ê°ë° ë구ìì ì°¾ì ì ìëë¡ í©ëë¤.
hidden-source-map - source-mapê³¼ ëì¼íì§ë§ ë²ë¤ì 참조 주ìì ì¶ê°íì§ ììµëë¤. ì¤ë¥ ë³´ê³ ìì ì¤ë¥ ì¤í
ì¶ì ìë§ ìì¤ë§µì 매ííê³ ë¸ë¼ì°ì ê°ë° ë구ìë ìì¤ë§µì ë
¸ì¶íì§ ìë ê²½ì°ì ì ì©í©ëë¤.
nosources-source-map - sourcesContentìì´ ìì¤ë§µì´ ìì±ë©ëë¤. 모ë ìì¤ ì½ë를 ë
¸ì¶íì§ ìê³ í´ë¼ì´ì¸í¸ìì ì¤í
ì¶ì ì 매ííë ë° ì¬ì©í ì ììµëë¤. ìì¤ë§µ íì¼ì ì¹ ìë²ì ë°°í¬ í ì ììµëë¤.



