Experiments
experiments
boolean: false
ì¬ì©ìê° ì¤íì 기ë¥ì íì±ííê³ ìíí´ ë³¼ ì ìë ê¶íì ë¶ì¬í기 ìí´ experiments ìµì
ì´ webpack 5ì ëì
ëììµëë¤.
ì¬ì© ê°ë¥í ìµì ì ë¤ìê³¼ ê°ìµëë¤.
asyncWebAssembly: ì ë°ì´í¸ë ì¬ìì ë°ë¼ ìë¡ì´ ì¹ ì´ì ë¸ë¦¬ë¥¼ ì§ìíì¬, ì¹ ì´ì ë¸ë¦¬ 모ëì ë¹ë기 모ëë¡ ë§ëëë¤. 그리ê³experiments.futureDefaultsê°trueë¡ ì¤ì ëë©´ 기본ì ì¼ë¡ íì±íë©ëë¤.backCompatbuildHttpcacheUnaffectedcssdeferImportfutureDefaultshtmllazyCompilationoutputModuletypescriptsourceImportsyncWebAssembly: webpack 4ììì ê°ì´ ì´ì ì¹ ì´ì ë¸ë¦¬ë¥¼ ì§ìí©ëë¤.layers: 모ë ë° ì²í¬ ë ì´ì´ë¥¼ íì±íí©ëë¤.5.102.0ë¶í°ë ì ê±°ëì´ ì¶ê° ìµì ìì´ ëìí©ëë¤.topLevelAwait: ìµìì ë 벨ììawait를 ì¬ì©íë©´ 모ëìasync모ëë¡ ë³íí©ëë¤. webpack5.83.0ë¶í°ë 기본ì¼ë¡ íì±íëë©°, ê·¸ ì´ì ë²ì ììëexperiments.topLevelAwait를trueë¡ ì¤ì í´ íì±íí ì ììµëë¤.5.102.0ë¶í°ë ì ê±°ëì´ ì¶ê° ìµì ìì´ ëìí©ëë¤.
webpack.config.js
export default {
// ...
experiments: {
asyncWebAssembly: true,
buildHttp: true,
lazyCompilation: true,
outputModule: true,
sourceImport: true,
syncWebAssembly: true,
topLevelAwait: true,
},
};experiments.backCompat
ë¤ìì webpack 4 APIì ëí ì§ì ì¤ë¨ ê²½ê³ ì í¨ê» ì´ì ë²ì ê³¼ í¸íëë ë ì´ì´ë¥¼ íì±íí©ëë¤.
- Type:
boolean
export default {
// ...
experiments: {
backCompat: true,
},
};experiments.buildHttp
íì±íëë©´, webpackì http(s): íë¡í ì½ë¡ ììíë ì격 리ìì¤ë¥¼ ë¹ëí ì ììµëë¤.
-
Type:
-
(string | RegExp | ((uri: string) => boolean))[]experiments.buildHttp.allowedUrisì ë°ë¡ê°ê¸°ì ëë¤. -
HttpUriOptions{ allowedUris: (string|RegExp|(uri: string) => boolean)[], cacheLocation?: false | string, frozen?: boolean, lockfileLocation?: string, upgrade?: boolean }
-
-
ì¬ì© ê°ë¥: 5.49.0+
-
ìì
webpack.config.js
export default { // ... experiments: { buildHttp: true, }, };// src/index.js import pMap1 from "https://cdn.skypack.dev/p-map"; // `buildHttp`ê° íì±íëë©´, webpackì ì¼ë° ë¡ì»¬ 모ëì²ë¼ pMap1ì ë¹ëí©ëë¤. console.log(pMap1);
experiments.buildHttp.allowedUris
íì©ë URI 목ë¡ì ëë¤.
-
Type:
(string|RegExp|(uri: string) => boolean)[] -
Example
webpack.config.js
export default { // ... experiments: { buildHttp: { allowedUris: [ "http://localhost:9990/", "https://raw.githubusercontent.com/", ], }, }, };
experiments.buildHttp.cacheLocation
ì격 리ìì¤ë¥¼ ìºì±í ìì¹ë¥¼ ì ìí©ëë¤.
-
Type
stringfalse
-
Example
webpack.config.js
export default { // ... experiments: { buildHttp: { cacheLocation: false, }, }, };
기본ì ì¼ë¡ webpackì ìºì±ì ìí´ <compiler-name.>webpack.lock.data/를 ì¬ì©íì§ë§, ê°ì falseë¡ ì¤ì íì¬ ë¹íì±íí ì ììµëë¤.
íë¡ëì
ë¹ë ì¤ìë ë¤í¸ìí¬ ìì²ì´ ì´ë£¨ì´ì§ì§ ìì¼ë¯ë¡ experiments.buildHttp.cacheLocation ìëì íì¼ì ë²ì ì ì´ ìì¤í
ì 커ë°í´ì¼ í©ëë¤.
experiments.buildHttp.frozen
ì격 리ìì¤ ë° ì ê¸ íì¼ì ê³ ì í©ëë¤. ì ê¸ íì¼ ëë 리ìì¤ ë´ì©ì ìì íë©´ ì¤ë¥ê° ë°ìí©ëë¤.
- Type:
boolean
experiments.buildHttp.lockfileLocation
ì ê¸ íì¼ì ì ì¥í ìì¹ë¥¼ ì ìí©ëë¤.
- Type:
string
기본ì ì¼ë¡ webpackì <compiler-name.>webpack.lock íì¼>ì ìì±í©ëë¤. íë¡ëì
ë¹ë ëì webpackì ì ê¸ íì¼ìì http(s): íë¡í ì½ë¡ ììíë 모ëì ë¹ëíê³ experiments.buildHttp.cacheLocation ìëì ìºìí©ëë¤.
experiments.buildHttp.proxy
ì격 리ìì¤ë¥¼ ê°ì ¸ì¤ë ë° ì¬ì©í íë¡ì ìë²ë¥¼ ì§ì í©ëë¤.
- Type:
string
기본ì ì¼ë¡ webpackì http_proxy(ëì문ì êµ¬ë¶ ìí¨) íê²½ ë³ììì ì격 리ìì¤ë¥¼ ê°ì ¸ì¤ë ë° ì¬ì©í íë¡ì ìë²ë¥¼ ì§ì í©ëë¤. íì§ë§ proxy ìµì
ì íµí´ ì§ì í ìë ììµëë¤.
experiments.buildHttp.upgrade
ì격 리ìì¤ì ë³ê²½ ì¬íì ê°ì§íê³ ìëì¼ë¡ ì ê·¸ë ì´ëí©ëë¤.
- Type:
boolean
experiments.css
ë¤ì´í°ë¸ CSS ì§ìì íì±íí©ëë¤. ìì§ ê°ë° ì¤ì¸ ì¤íì ì¸ ê¸°ë¥ì´ê³ webpack v6ìì 기본ì ì¼ë¡ íì±íë ìì ì´ì§ë§, GitHubìì ì§í ìí©ì íì¸í ì ììµëë¤.
- Type:
boolean
ì¤íì 기ë¥:
-
CSS 모ë ì§ì: webpackì ê° CSS í´ëì¤ì ëí´ ê³ ì í ì´ë¦ì ìì±í©ëë¤. CSS 모ëìë
5.103.0+.module.cssíì¥ì를 ì¬ì©íì¸ì.Webpackì CSS Modulesì
composesìì±ì 기본ì ì¼ë¡ ì§ìíë¯ë¡ ëì¼í íì¼, ë¤ë¥¸ CSS 모ë ëë ì ì í´ëì¤ì í´ëì¤ë¥¼ ì¡°í©í ì ììµëë¤./* styles.module.css */ .base { color: blue; } .button { composes: base; padding: 10px; } .primary { composes: button; background: blue; } /* ë¤ë¥¸ CSS moduleìì ì¡°í© */ .composed { composes: className from "./other.module.css"; } /* ì ì classìì ì¡°í© */ .globalComposed { composes: global-class from global; } -
5.87.0+ Style-specific fields resolution in
package.jsonfiles: webpackìpackage.jsoníì¼ììstyleíë를 ì°¾ê³ , í´ë¹ íëê° ì¡´ì¬íë©´ CSS íì¼ ë´ì import 문ì ì¬ì©í©ëë¤.ì를 ë¤ì´ CSS íì¼ì
@import 'bootstrap';ì ì¶ê°íë©´ webpackìnode_modulesììbootstrapì ì°¾ê³ ê±°ê¸°ììpackage.jsonìstyleíë를 ì¬ì©í©ëë¤.styleíëê° ìì¼ë©´ webpackì ì´ì ë²ì ê³¼ì í¸íì±ì ì ì§í기 ìí´mainíë를 ëì ì¬ì©í©ëë¤. -
CSS íì¼ì ëí ì½í ì¸ í´ì: webpackì CSS íì¼ì ëí ì½í ì¸ í´ì를 ìì±íê³ íì¼ ì´ë¦ì ì¬ì©í©ëë¤. ì´ë ì¥ê¸° ìºì±ì ì ì©í©ëë¤.
-
CSS ì¶ì¶: webpackì CSS를 ë³ëì íì¼ë¡ ì¶ì¶í©ëë¤. ì´ ê¸°ë¥ì ë¤ì´í°ë¸ ì§ìì ì ê³µí기 ë문ì
mini-css-extract-pluginë°css-loaderì íìì±ì ëì²´í©ëë¤. -
CSS import: webpackì CSS import를 ìì±ë CSS íì¼ë¡ ì¸ë¼ì¸í©ëë¤.
-
Hot Module Reload (HMR): webpackì CSS íì¼ì© HMRì ì§ìí©ëë¤. ì´ë CSS íì¼ì ëí ë³ê²½ ì¬íì´ ì ì²´ íì´ì§ë¥¼ ë¤ì ë¡ëíì§ ìê³ ë¸ë¼ì°ì ì ë°ìëë¤ë ê²ì ì미í©ëë¤.
-
5.107.0+ CSS Modulesì ëí Scope hoisting (module concatenation)ì ì§ìí©ëë¤.
optimization.concatenateModulesê° íì±íëë©´exportTypeì´text,css-style-sheet,style,linkì¸ CSS Modulesë ê°ê° ë³ëì runtime ì¸ì¤í´ì¤ë¡ ì ì§ëì§ ìê³ íëì module ì¸ì¤í´ì¤ë¡ concatenation ë©ëë¤. ì´ë ê² íë©´ ì¤ë²í¤ë를 ì¤ì´ê³ CSS ë¹ì¤ì´ í° ë²ë¤ìì ë ìì ì¶ë ¥ë¬¼ì ë§ë¤ ì ììµëë¤. -
5.107.0+
@valueìë³ìë@importì path ì¸ììurl()참조 ë´ë¶ìì ì¬ì©í ì ìì¼ë¯ë¡, ê³µíµ pathì assetì í ë²ë§ ì ìíê³ ì¬ë¬ stylesheetìì ì¬ì¬ì©í ì ììµëë¤. ë°ì´íê° ìë íì ("./x",'./x')ê³¼ ìë íì(./x) 모ë íì©ëë©°, webpackì ì¼ë°ì ì¸ asset pipelineì íµí´ resolveë©ëë¤.@value path: "./other.module.css"; @import path; @value bg: "./image.png"; .a { background: url(bg); }
experiments.cacheUnaffected
ë³ê²½ëì§ ìì 모ëì ì¶ê° ì¸ë©ëª¨ë¦¬ ìºì±ì íì±ííê³ ë³ê²½ëì§ ìì 모ëë§ ì°¸ì¡°í©ëë¤.
- Type:
boolean
기본ê°ì futureDefaultsì ê°ì
ëë¤.
experiments.deferImport
tc39 ì ìimport defer ì ì ì§ìì íì±íí©ëë¤.
ì´ ê¸°ë¥ì ì¬ì©íë©´ 모ëì íê°ë¥¼ ì²ì ì¬ì©í ëê¹ì§ ì°ê¸°í ì ììµëë¤.
import()ì ë¹ë기ì í¹ì±ì¼ë¡ ì¸í´ ì¬ì©í ì ìë ê²½ì° ì½ë ì¤íì ë기ì ì¼ë¡ ì°ê¸°íë ë° ì ì©í©ëë¤.
- Type:
boolean
ì´ ê¸°ë¥ì ì¬ì©íë ¤ë©´ ë°íì íê²½ìì Proxy(ES6) ì§ìì´ íìí©ëë¤.
ë¤ì 구문ì íì±íí©ëë¤.
import defer * as module from "module-name";
import * as module2 from /* webpackDefer: true */ "module-name2";
// ëë ëì import ì¬ì©
import.defer("module-name3");
import(/* webpackDefer: true */ "module-name4");
export function f() {
// module-nameì ë기ì ì¼ë¡ íê°í í doSomething()ì í¸ì¶í©ëë¤.
module.doSomething();
}Limitations of magic comments (/* webpackDefer: true */)
ë§¤ì§ ì£¼ìì from í¤ìë ë¤ì ë£ë ê²ì´ ì¢ìµëë¤. ë¤ë¥¸ ìì¹ìë ìëí ì ìì§ë§ í
ì¤í¸ëì§ ìììµëë¤.
ë§¤ì§ ì£¼ìì import í¤ìë ë¤ì ë£ë ê²ì íì¼ ìì¤í
ìºìì í¸íëì§ ììµëë¤.
experiments.sourceImport
5.106.0+Source Phase Imports tc39 ì ìì ëí ì§ìì íì±íí©ëë¤.
ì´ ì ìì 모ëì ì¦ì íê°íë ëì source phase ìì importí ì ìë ë°©ë²ì ëì
í©ëë¤. webpackìì ì´ ì¤íì ì§ìì íì¬ WebAssembly modulesì ëí´ êµ¬íëì´ ììµëë¤. 먼ì ì»´íì¼ë WebAssembly.Moduleì ì»ê³ , ì´í ìíë importsì í¨ê» ì§ì instantiateí ì ììµëë¤. JavaScript source imports ì§ìì í¥í 릴리ì¤ìì ì¶ê°ë ìì ì
ëë¤.
- Type:
boolean
asyncWebAssemblyì í¨ê» íì±ííì¸ì.
// webpack.config.js
export default {
// ...
experiments: {
asyncWebAssembly: true,
sourceImport: true,
},
};ê·¸ë° ë¤ì .wasm importì í¨ê» static ëë dynamic source-phase 문ë²ì ì¬ì©í ì ììµëë¤.
// ì ì íì
import source wasmModule from "./module.wasm";
// ëì íì
const wasmModule2 = await import.source("./module.wasm");
const instance = await WebAssembly.instantiate(wasmModule);ì ì²´ ìì ë webpack ì ì¥ìì examples/wasm-simple-source-phaseìì íì¸í ì ììµëë¤.
import /* webpackDefer: true */ * as ns from "..."; // ìë ¤ì§ ë¬¸ì
import * as ns from /* webpackDefer: true */ "..."; // ê¶ì¥ë¡ëê° ë§¤ì§ ì£¼ìì ì ê±°íì§ ìëë¡ í´ì¼ í©ëë¤.
TypeScript, Babel, SWC ë° Flow.jsë ë§¤ì§ ì£¼ìì ë³´ì¡´íëë¡ êµ¬ì±í ì ììµëë¤.
Esbuildë ì´ ê¸°ë¥ê³¼ í¸íëì§ ììµëë¤(evanw/esbuild#1439 ë° evanw/esbuild#309 참조). íì§ë§ í¥í ì§ìë ì ììµëë¤.
5.105.0+import.defer()ê° ì´ì ContextModuleìì ì§ìë©ëë¤(ê°ì ¸ì¤ê¸° ê²½ë¡ë ëì ííìì
ëë¤). ìì ë ì§ì° ë¡ë© ê°ì´ë를 참조íì¸ì.
experiments.futureDefaults
ë¤ì webpack ë©ì´ì ë²ì ì 기본ê°ì ì¬ì©íê³ ë¬¸ì ê° ìë ìì¹ì ê²½ê³ ë¥¼ íìí©ëë¤.
webpack.config.js
export default {
// ...
experiments: {
futureDefaults: true,
},
};experiments.html
5.107.0+ë¤ì´í°ë¸ HTML module ì§ìì íì±íí©ëë¤. JavaScriptìì .html íì¼ì importíë©´ ê·¸ ìì íê·¸ ì°¸ì¡°ê° ì¼ë° webpack pipelineì ê±°ì¹ë©°, ì¤ë«ëì html-loaderê° ë§¡ì ìë ìí ì ëì²´í©ëë¤. ì´ íëê·¸ë NormalModuleFactoryì html module typeì ë±ë¡íê³ ìëì ì¤ëª
ë HTML ëìì íì±íí©ëë¤.
- Type:
boolean - Default:
false
webpack.config.js
export default {
// ...
experiments: {
html: true,
},
};ê·¸ë¤ì JavaScriptìì HTML íì¼ì importí©ëë¤. default exportë ì²ë¦¬ë HTML 문ìì´ì´ë©°, 모ë asset 참조ë webpackì íµí´ í´ìë©ëë¤.
// src/index.js
import page from "./page.html";
document.documentElement.innerHTML = page;Inline <style> tags
HTML module ë´ë¶ì ì¸ë¼ì¸ <style> ë¸ë¡ì exportType: "text"를 ì¬ì©íë ê°ì CSS moduleë¡ì webpackì CSS pipelineì 거칩ëë¤. url()ê³¼ @import 참조ë HTML íì¼ì 기ì¤ì¼ë¡ í´ìëë©°, ì²ë¦¬ë CSS í
ì¤í¸ë ìì±ë HTML 문ìì´ì ìë <style> íê·¸ ìì ë¤ì 기ë¡ë©ëë¤.
<!-- src/page.html -->
<!doctype html>
<html>
<head>
<style>
@import "./reset.css";
body {
background: url("./bg.png");
}
</style>
</head>
<body>
...
</body>
</html><style type="text/css">ì type attributeê° ìë <style>ì ì²ë¦¬ë©ëë¤. CSSê° ìë typeì ê°ì§ ê²½ì°ìë ë³ê²½ ìì´ ê·¸ëë¡ íµê³¼í©ëë¤.
Inline <script> tags
ì¸ë¼ì¸ <script> 본문ì <script src>ì ì¬ì©ëë ê²ê³¼ ëì¼í entry pipelineì 거칩ëë¤. ê° <script> 본문ì ìì²´ webpack entryê° ë©ëë¤. ì¼ë°ì ì¸ ì¸ë¼ì¸ scriptë CommonJSë¡ ë²ë¤ëê³ , <script type="module"> 본문ì ESMì¼ë¡ ë²ë¤ë©ëë¤. ìì±ë HTMLìì í´ë¹ íê·¸ë ìì±ë chunk를 ê°ë¦¬í¤ë <script src="â¦">ë¡ ë¤ì ìì±ëë©°, 본문ì ë¹ìì§ëë¤.
<!-- src/page.html -->
<!doctype html>
<html>
<body>
<script type="module">
import { greet } from "./lib.js";
greet("world");
</script>
<script>
console.log("classic inline script");
</script>
</body>
</html>ì¸ë¶ <script src>ì ì ì©ëë ê²ê³¼ ê°ì ëìì´ ì¬ê¸°ìë ì ì©ë©ëë¤.
output.moduleì´ íì±íëë©´ ì¼ë°ì ì¸ ì¸ë¼ì¸<script>íê·¸ë<script src>ì ëì¼íê² ìëì¼ë¡type="module"ë¡ ì ê·¸ë ì´ëë©ëë¤.webpackIgnoreë ì¸ë¼ì¸<script>íê·¸ìë ëìíë©°, ì´ ê²½ì° ìë 본문ì ë³ê²½ëì§ ììµëë¤.application/ld+json,importmapê°ì non-JStypeê°ì ë³ê²½ ìì´ ê·¸ëë¡ íµê³¼í©ëë¤.
<script src> and <link rel="modulepreload">
HTML module ë´ë¶ì <script src> ë° <link rel="modulepreload"> 참조ë ì¤ì webpack entryê° ë©ëë¤. ìì±ë chunk URLì ë¤ì HTML 문ìì´ì 기ë¡ëë¯ë¡, í´ìë íì¼ ì´ë¦ë JavaScript importììì ëì¼íê² ëìí©ëë¤.
<!-- src/page.html -->
<!doctype html>
<html>
<head>
<link rel="modulepreload" href="./preloaded.js" />
</head>
<body>
<script src="./entry.js"></script>
<script src="./second.js"></script>
</body>
</html>ë¤ì ëìì ììëë©´ ì¢ìµëë¤.
- ê°ì íì´ì§ì ì¬ë¬
<script src>íê·¸ë íëì runtimeì ê³µì í©ëë¤. ê° ê·¸ë£¹(ì¼ë° script ëëtype="module") ë´ìì ì ë scriptê° runtimeì ë³´ì íê³ , ë머ì§ë ì¬ê¸°ìdependOnì ì ì¸í©ëë¤. <link rel="modulepreload">entryë ë 립ì ì¼ë¡ ì ì§ëë©° íì scriptìì importëì§ ììµëë¤. ë°ë¼ì "ì¤í ìì´ preload" ìë¯¸ê° ì ì§ë©ëë¤.output.moduleì´ íì±íëë©´ ì¼ë°ì ì¸<script src>íê·¸ë<script type="module" src>ë¡ ìë ì ê·¸ë ì´ëëì´, ìì±ë ES-module chunkê° ì¬ë°ë¥¸ 모ëë¡ ë¡ëë©ëë¤.- Non-JS script type(
application/ld+json,importmap, â¦)ê³¼ data URIë ë³ê²½ ìì´ ê·¸ëë¡ ì ë¬ëë©° JSë¡ ë²ë¤ëì§ ììµëë¤.
webpackIgnore magic comment
HTML <!-- webpackIgnore: true --> comment를 íê·¸ ë°ë¡ ìì ëë©´ webpackì í´ë¹ íê·¸ì src, href, srcset ë° ì ì¬í attributeì ëí URL í´ìì ê±´ëëëë¤. ìì¸í ì¤ëª
ì magic comments를 ì°¸ê³ íì¸ì.
experiments.lazyCompilation
ìí¸ë¦¬ í¬ì¸í¸ì ëì importë ì¬ì© ì¤ì¼ ëë§ ì»´íì¼íì¸ì. Web ëë Node.jsì ì¬ì©í ì ììµëë¤.
-
Type
-
boolean -
object{ // 커ì¤í ë°±ìë ì ì backend?: (( compiler: Compiler, callback: (err?: Error, api?: BackendApi) => void ) => void) | ((compiler: Compiler) => Promise<BackendApi>) | { /** * 커ì¤í í´ë¼ì´ì¸í¸ */ client?: string; /** * ìë²ì ìì í ìì¹ë¥¼ ì§ì í©ëë¤. */ listen?: number | ListenOptions | ((server: Server) => void); /** * í´ë¼ì´ì¸í¸ê° ìë²ì ì°ê²°íë ë° ì¬ì©í´ì¼ íë íë¡í ì½ì ì§ì í©ëë¤. */ protocol?: "http" | "https"; /** * EventSource ìì²ì ì²ë¦¬íë ìë²ë¥¼ ìì±íë ë°©ë²ì ì§ì í©ëë¤. */ server?: ServerOptionsImport | ServerOptionsHttps | (() => Server); }, entries?: boolean, imports?: boolean, test?: string | RegExp | ((module: Module) => boolean) }backend: ë°±ìë를 커ì¤í°ë§ì´ì¦ í©ëë¤.entries: ìí¸ë¦¬ì ëí ì§ì° ì»´íì¼ì íì±íí©ëë¤.imports5.20.0 + : ëì importì ëí´ ì§ì° ì»´íì¼ì ì¬ì©í©ëë¤.test5.20.0+: ì´ë¤ import 모ëì ì§ì° ì»´íì¼í ì§ ì§ì í©ëë¤.
-
-
Available: 5.17.0+
-
Example 1:
export default { // ⦠experiments: { lazyCompilation: true, }, }; -
Example 2:
export default { // ⦠experiments: { lazyCompilation: { // ëì importì ëí ì§ì° ì»´íì¼ ë¹íì±í imports: false, // ìí¸ë¦¬ì ëí ì§ì° ì»´íì¼ ë¹íì±í entries: false, // moduleB를 ì§ì° ì»´íì¼íì§ ë§ì¸ì test: (module) => !/moduleB/.test(module.nameForCondition()), }, }, };
experiments.outputModule
boolean
íì±íëë©´, webpackì ê°ë¥í ëë§ë¤ ECMAScript 모ë 구문ì ì¶ë ¥í©ëë¤. ì를 ë¤ì´, import()를 ì¬ì©íì¬ ì²í¬ë¥¼ ë¡ëíë©´, ESMì ì²í¬ ë°ì´í°ë¥¼ ë
¸ì¶í기 ìí´ export í©ëë¤.
export default {
experiments: {
outputModule: true,
},
};experiments.typescript
5.107.0+ë¤ì´í°ë¸ TypeScript ì§ìì íì±íí©ëë¤. ì´ íë그를 ì¼ë©´ webpackì .ts, .cts, .mts íì¼(ê·¸ë¦¬ê³ í´ë¹íë data:text/typescript, data:application/typescript data URI)ë¤ì ì¸ë¶ loader ìì´ ì§ì ì»´íì¼í©ëë¤. ë´ë¶ì ì¼ë¡ë Node.jsì ë´ì¥ module.stripTypeScriptTypes를 í¸ì¶í©ëë¤.
- Type:
boolean - Default:
false(auto-enabled byexperiments.futureDefaults)
export default {
experiments: {
typescript: true,
},
entry: "./src/index.ts",
};ì´ íë그를 íì±ííë©´ ëª ê°ì§ í©ë¦¬ì ì¸ ê¸°ë³¸ê°ë í¨ê» ì°ê²°ë©ëë¤. .ts / .cts / .mtsì© ê¸°ë³¸ rules, .jsë³´ë¤ ìì .ts를 extension resolutionì ì¶ê°íë ëì, import "./foo.js"ê° ./foo.tsë ìëíëë¡ íë extensionAlias(.cjs / .mjs â .cts / .mts í¬í¨), tsconfig.json resolution, ê·¸ë¦¬ê³ ëª¨ë
¸ë í¬ í¨í¤ì§ê° package.json#exports를 íµí´ .ts ìì¤ë¥¼ ë°°í¬í ì ìê² íë "typescript" conditional-exports keyê° í¬í¨ë©ëë¤.
type checkingì´ íìíë¤ë©´ ì´ íë그를 tsc --noEmit ëë fork-ts-checker-webpack-pluginê³¼ í¨ê» ì¬ì©íì¸ì. JSXë ì§ìì§ ì ìë TypeScript 문ë²ì ì¬ì©íë¤ë©´ ê³ì ts-loaderë swc-loader를 ì¬ì©í´ì¼ í©ëë¤.
webpack ì ì¥ììë ë ê°ì§ ì°¸ê³ ìì ê° í¬í¨ëì´ ììµëë¤.
examples/typescript: ë´ì¥experiments.typescriptì¤ì ìì examples/typescript-non-erasable: ì§ìì§ ì ìë 문ë²ì´ íìí ëìts-loaderfallback ìì



