ì´ ì¤ì ì ì ì íê² ì¬ì©íê³ ì½ê² ë°°í¬íë ¤ë©´ webpack.config.jsë¡ webpackì ì¤ì í ì ììµëë¤. CLIë¡ ì ì¡ë 모ë íë¼ë¯¸í°ë ì¤ì íì¼ì í´ë¹ íë¼ë¯¸í°ì 매íë©ëë¤.
webpack ë° CLI를 ìì§ ì¤ì¹íì§ ìì ê²½ì° ì¤ì¹ ê°ì´ë를 ì½ì´ë³´ì¸ì.
webpack-clië webpackì ë ì½ê² ì¬ì©í ì ìëë¡ ë¤ìí ëª ë ¹ì ì ê³µí©ëë¤. 기본ì ì¼ë¡ webpackì ë¤ìê³¼ ê°ì ëª ë ¹ì´ë¥¼ ì ê³µí©ëë¤.
| ëª ë ¹ì´ | ì¬ì©ë² | ì¤ëª |
|---|---|---|
build | build|bundle|b [entries...] [options] | webpackì ì¤íí©ëë¤. (기본 ëª ë ¹ì´, ìëµ ê°ë¥). |
configtest | configtest|t [config-path] | webpack ì¤ì ì ê²ì¦í©ëë¤. |
help | help|h [command] [option] | ëª ë ¹ì´ ë° ìµì ì ëí ëìë§ì íìí©ëë¤. |
info | info|i [options] | ìì¤í ì 보를 ì¶ë ¥í©ëë¤. |
serve | serve|server|s [options] | webpack-dev-server를 ì¤íí©ëë¤. |
version | version|v [commands...] | webpack, webpack-cli ë° webpack-dev-serverì ë²ì ëë²ë¥¼ ì¶ë ¥í©ëë¤. |
watch | watch|w [entries...] [options] | webpackì ì¤ííê³ íì¼ ë³ê²½ì ê°ì§í©ëë¤. |
webpackì ì¤íí©ëë¤. (기본 ëª ë ¹ì´, ìëµ ê°ë¥).
npx webpack build [options]example
npx webpack build --config ./webpack.config.js --stats verbosecreate-new-webpack-app를 ì¬ì©íì¬ ìë¡ì´ webpack íë¡ì í¸ë¥¼ ì´ê¸°íí기 ìí´ ì¬ì©í©ëë¤.
npx create-new-webpack-app [generation-path] [options]ìì
npx create-new-webpack-app ./my-app --force --template=defaultë³ì¹ì¼ë¡:
npx create-new-webpack-app init ./my-app --force --template=defaultì¤ì ì ìì±í ìì¹ì
ëë¤. 기본ê°ì process.cwd()ì
ëë¤.
-t, --template
string = 'default'
ìì±í í í릿ì ì´ë¦ì ëë¤.
-f, --force
boolean
ì§ë¬¸ ìì´ íë¡ì í¸ë¥¼ ìì±í©ëë¤. íì±ííë©´ ê° ì§ë¬¸ì ëí 기본 ëµë³ì ì¬ì©í©ëë¤.
--template=default - 기본 ì¤ì ì ê°ì¶ í
í릿ì
ëë¤.--template=react - React ì¤ì ì ì¬ì©í í
í릿ì
ëë¤.--template=vue - Vue ì¤ì ì ì¬ì©í í
í릿ì
ëë¤.--template=svelte - Svelte ì¤ì ì ì¬ì©í í
í릿ì
ëë¤.ë¡ë를 ì¤ìºí´ëí©ëë¤.
npx create-new-webpack-app loader [output-path] [options]example
npx create-new-webpack-app loader ./my-loader --template=defaultì¶ë ¥ ëë í°ë¦¬ ê²½ë¡, ì) ./loader-name.
-t, --template
string = 'default'
í í릿ì ì íì ëë¤.
íë¬ê·¸ì¸ì ì¤ìºí´ëí©ëë¤.
npx create-new-webpack-app plugin [output-path] [options]example
npx create-new-webpack-app plugin ./my-plugin --template=defaultì¶ë ¥ ëë í°ë¦¬ ê²½ë¡, ì) ./plugin-name.
-t, --template
string = 'default'
í í릿ì ì íì ëë¤.
ìì¤í ì ëí ì 보를 ì¶ë ¥í©ëë¤.
npx webpack info [options]ìì
npx webpack info --output json --addition-package postcss-a, --additional-package
string
ì¶ë ¥ì í¨í¤ì§ë¥¼ ì¶ê°í©ëë¤.
ìì
npx webpack info --additional-package postcss-o, --output
string : 'json' | 'markdown'
ì§ì ë íìì¼ë¡ ì¶ë ¥ì ê°ì ¸ìµëë¤.
ìì
npx webpack info --output markdownwebpack ì¤ì ì ê²ì¦í©ëë¤.
npx webpack configtest [config-path]ìì
npx webpack configtest ./webpack.config.jswebpack ì¤ì íì¼ì ê²½ë¡ì
ëë¤. 기본ê°ì ./webpack.config.jsì
ëë¤.
webpack dev server를 ì¤íí©ëë¤.
npx webpack serve [options]example
npx webpack serve --static --openwebpackì ì¤ííê³ íì¼ ë³ê²½ì ê°ì§í©ëë¤.
npx webpack watch [options]example
npx webpack watch --mode development기본ì ì¼ë¡ webpackì ë¤ì íëê·¸ì í¨ê» ì ê³µë©ëë¤.
| íëê·¸ / ë³ì¹ | íì | ì¤ëª |
|---|---|---|
--entry | string[] | ì í리ì¼ì´ì
ì ìí¸ë¦¬ í¬ì¸í¸ì
ëë¤. (ì: ./src/main.js) |
--config, -c | string[] | webpack ì¤ì íì¼ì ê²½ë¡ë¥¼ ì ê³µí©ëë¤. (ì: ./webpack.config.js) |
--config-name | string[] | ì¬ì©í ì¤ì ì ì´ë¦ì ëë¤. |
--name | string | ì¬ì©í ì¤ì ì ì´ë¦. ë³µìì ì¤ì ì ë¡ëí ë ì¬ì©í©ëë¤. |
--color | boolean | ì½ììì ìì íì±í |
--merge, -m | boolean | webpack-merge를 ì¬ì©íì¬ ë ì´ìì 구ì±ì ë³í©í©ëë¤. |
--env | string[] | í¨ìì¼ ë ì¤ì ì ì ë¬ë íê²½ì ëë¤. |
--config-node-env | string | process.env.NODE_ENV를 ì§ì ë ê°ì¼ë¡ ì¤ì í©ëë¤. |
--progress | boolean, string | ë¹ë ì¤ ì»´íì¼ ì§íë¥ ì ì¶ë ¥í©ëë¤. |
--help | boolean | ì§ìëë íëê·¸ ë° ëª ë ¹ 목ë¡ì ì¶ë ¥í©ëë¤. |
--output-path, -o | string | webpackì ìí´ ìì±ë íì¼ì ì¶ë ¥ ìì¹ì
ëë¤. (ì: ./dist) |
--target, -t | string[] | ë¹ë ëìì ì¤ì í©ëë¤. |
--watch, -w | boolean | íì¼ ë³ê²½ ì¬íì íì¸í©ëë¤. |
--watch-options-stdin | boolean | stdin ì¤í¸ë¦¼ì´ ì¢ ë£ëë©´ ê°ì를 ì¤ë¨í©ëë¤. |
--devtool, -d | string | ìì¤ ë§µ ìì± ì¬ë¶ì ë°©ë²ì ì ì´í©ëë¤. |
--json, -j | boolean, string | 결과를 JSONì¼ë¡ ì¶ë ¥íê±°ë íì¼ì¼ë¡ ì ì¥í©ëë¤. |
--mode | string | webpackì ì ë¬í 모ë를 ì ìí©ëë¤. |
--version, -v | boolean | íì¬ ë²ì ì ê°ì ¸ìµëë¤. |
--stats | boolean, string | webpackì íµê³ ì²ë¦¬ ë°©ë²ì ì§ìí©ëë¤. |
--disable-interpret | boolean | ì¤ì íì¼ì ë¡ëí ë í´ìì ì¬ì©íì§ ìëë¡ ì¤ì í©ëë¤. |
--fail-on-warnings | boolean | webpackì ê²½ê³ ìì 0ì´ ìë ì¢ ë£ ì½ëë¡ webpack-cli íë¡ì¸ì¤ë¥¼ ì¤ì§í©ëë¤. |
--analyze | boolean | ë²ë¤ ì 보를 ì»ê¸° ìí´ webpack-bundle-analyzer íë¬ê·¸ì¸ì í¸ì¶í©ëë¤. |
--extends, -e | string[] | 기존 ì¤ì ì íì¥í©ëë¤. |
| íëê·¸ | ì¤ëª |
|---|---|
--no-color | ì½ììì 모ë ììì ë¹íì±íí©ëë¤. |
--no-hot | ì¤ì ì íµí´ íì±íí ê²½ì° í« ë¦¬ë¡ë©ì ë¹íì±íí©ëë¤. |
--no-stats | webpackìì ë´ë³´ë¸ ì»´íì¼ íµê³ë¥¼ ë¹íì±íí©ëë¤. |
--no-watch | íì¼ ë³ê²½ì ê°ìíì§ ììµëë¤. |
--no-devtool | ìì¤ ë§µì ìì±íì§ ììµëë¤. |
--no-watch-options-stdin | stdin ì¤í¸ë¦¼ì´ ì¢ ë£ëì´ë ê°ì를 ì¤ë¨íì§ ììµëë¤. |
CLI v4ì webpack v5ë¶í° CLIë webpack ì½ì´ìì ì ì²´ ì¤ì ì¤í¤ë§ë¥¼ ê°ì ¸ìµëë¤. 커맨ë ë¼ì¸ìì ê±°ì 모ë ì¤ì ìµì ì ì¡°ì í ì ììµëë¤.
CLI v4를 íµí webpack v5ìì ì§ìíë 모ë ì½ì´ íëê·¸ 목ë¡ì ëë¤. - ë§í¬
ì를 ë¤ì´, íë¡ì í¸ìì ì±ë¥ íí¸ë¥¼ íì±ííë ¤ë©´ ì¤ì ìì ì´ ìµì ì ì¬ì©í ì ììµëë¤. ì½ì´ íë그를 ì¬ì©íë©´ ìëì ê°ì´ í ì ììµëë¤.
npx webpack --performance-hints warningnpx webpack [--config webpack.config.js]ì¤ì íì¼ì ìµì ì configurationì ì°¸ê³ íì¸ì.
npx webpack --entry <entry> --output-path <output-path>ìì
npx webpack --entry ./first.js --entry ./second.js --output-path /buildíë¡ì í¸ ë¹ë를 ìí ìí¸ë¦¬ í¬ì¸í¸ íì¼ëª ëë ëª ëª ë íì¼ëª 모ìì ëë¤. ë³µìì ìí¸ë¦¬ë¥¼ ì ë¬í ì ììµëë¤ (모ë í목ì ìì ì ë¡ëë©ëë¤). ë¤ìì CLI를 íµí´ ìí¸ë¦¬ íì¼ì ì§ì íë ì¬ë¬ ê°ì§ ë°©ë²ì ëë¤.
npx webpack --entry-reset ./first-entry.jsnpx webpack --entry-reset --entry ./first-entry.jsnpx webpack --entry-reset ./first-entry.js ./other-entry.jsnpx webpack --entry-reset --entry ./first-entry.js ./other-entry.jsì ì¥í ë²ë¤ íì¼ì ê²½ë¡ì
ëë¤. ì¤ì ìµì
ì output.pathì 매íë©ëë¤.
ìì
íë¡ì í¸ êµ¬ì¡°ê° ë¤ìê³¼ ê°ë¤ê³ ê°ì í´ë´ ëë¤.
.
âââ dist
âââ index.html
âââ src
âââ index.js
âââ index2.js
âââ others.jsnpx webpack ./src/index.js --output-path distì´ ëª
ë ¹ì´ë ìì¤ ì½ëì ìí¸ë¦¬ë¥¼ í¨ê» index.jsë¡ ë²ë¤í©ëë¤. ì¶ë ¥ ë²ë¤ íì¼ì ê²½ë¡ë distì
ëë¤.
asset main.js 142 bytes [compared for emit] [minimized] (name: main)
./src/index.js 30 bytes [built] [code generated]
./src/others.js 1 bytes [built] [code generated]
webpack 5.1.0 compiled successfully in 187 msnpx webpack ./src/index.js ./src/others2.js --output-path dist/ì´ê²ì ë íì¼ì ë³ëì ìí¸ë¦¬ í¬ì¸í¸ë¡ í¬í¨íë ë²ë¤ì ìì±í©ëë¤.
asset main.js 142 bytes [compared for emit] [minimized] (name: main)
./src/index.js 30 bytes [built] [code generated]
./src/others2.js 1 bytes [built] [code generated]
./src/others.js 1 bytes [built] [code generated]
webpack 5.1.0 compiled successfully in 198 msCLIë íë¡ì í¸ ê²½ë¡ìì ì¼ë¶ 기본 ì¤ì ì ì°¾ìµëë¤. ìëë CLIìì ì°¾ë ì¤ì íì¼ì ëë¤.
ì¤ë¦ì°¨ìì¼ë¡ ì°ì ì¡°íí©ëë¤.
ì - ì¤ì íì¼ ì¡°í ììë .webpack/webpackfile > .webpack/webpack.config.js > webpack.config.js ì ëë¤.
'webpack.config',
'.webpack/webpack.config',
'.webpack/webpackfile',
CLIìì ì¬ì© ê°ë¥í 기본 ëª ë ¹ ë° íëê·¸ ëì´
webpack help [command] [option] ë° webpack [command] --help 모ë ì í¨í©ëë¤.
npx webpack --help
# or
npx webpack helpCLIìì ì§ìíë 모ë ëª ë ¹ ë° íë그를 ëì´
npx webpack --help=verboseí¹ì ëª ë ¹ì´ ëë ìµì ì ëí ëìë§ ë³´ê¸°
npx webpack help --modeì¤ì¹ë í¨í¤ì§ ë° íì í¨í¤ì§ì ë²ì íì
ì¬ì© ì¤ì¸ webpack ë° webpack-cliì ë²ì ì ê²ì¬íë ¤ë©´ ë¤ì ëª
ë ¹ì ì¤ííì¸ì.
npx webpack --version
# or
npx webpack versionë¤ì ê²°ê³¼ê° ì¶ë ¥ë©ëë¤.
webpack 5.31.2
webpack-cli 4.6.0webpack-dev-serverê° ì¤ì¹ë ê²½ì° í´ë¹ ë²ì ë ì¶ë ¥í©ëë¤.
webpack 5.31.2
webpack-cli 4.6.0
webpack-dev-server 3.11.2@webpack-cli/infoì ê°ì webpack-cliì íì í¨í¤ì§ ë²ì ì ê²ì¬íë ¤ë©´ ë¤ìê³¼ ê°ì ëª
ë ¹ì ì¤íí©ëë¤.
npx webpack info --versionê·¸ë¬ë©´ ë¤ì ê²°ê³¼ê° ì¶ë ¥ë©ëë¤.
@webpack-cli/info 1.2.3
webpack 5.31.2
webpack-cli 4.6.0
webpack-dev-server 3.11.2ì¤ì íì¼ì ì¬ì©íì¬ ìì¤ ë¹ë
ê¸°ë³¸ê° ì¤ íëì¸ webpack.config.jsê° ìë ë¤ë¥¸ configuration íì¼ì ì§ì í©ëë¤.
npx webpack --config example.config.jsì¤ì íì¼ì´ ì¬ë¬ ì¤ì ì ë´ë³´ë´ë ê²½ì° --config-nameì ì¬ì©íì¬ ì¤íí ì¤ì ì ì§ì í ì ììµëë¤.
ìëì ê°ì webpack.config.js를 ìê°í´ ë´
ìë¤.
module.exports = [
{
output: {
filename: './dist-first.js',
},
name: 'first',
entry: './src/first.js',
mode: 'development',
},
{
output: {
filename: './dist-second.js',
},
name: 'second',
entry: './src/second.js',
mode: 'development',
},
{
output: {
filename: './dist-third.js',
},
name: 'third',
entry: './src/third.js',
mode: 'none',
stats: 'verbose',
},
];second ì¤ì ë§ ì¤íí©ëë¤.
npx webpack --config-name secondì¬ë¬ ê°ì ì ë¬í ìë ììµëë¤.
npx webpack --config-name first --config-name second--mergeì ëìì¼ë¡ ë ê° ì´ìì ìë¡ ë¤ë¥¸ webpack ì¤ì ì ë³í©í ì ììµëë¤.
npx webpack --config ./first.js --config ./second.js --merge--extends를 ì¬ì©íì¬ ê¸°ì¡´ webpack ì¤ì ì íì¥í ì ììµëë¤.
npx webpack --extends ./base.webpack.config.jsì¤ì íì¥ìì ìì¸í ë´ì©ì ì½ì´ë³´ì¸ì.
webpack 결과를 JSONì¼ë¡ ì¶ë ¥
npx webpack --jsoníµê³ë¥¼ ì¶ë ¥íë ëì jsonì¼ë¡ ì ì¥
npx webpack --json stats.jsonë¤ë¥¸ 모ë ê²½ì°ì webpackì ë²ë¤, ì²í¬ ë° íì´ë° ì¸ë¶ ì 보를 ë³´ì¬ì£¼ë ì¼ë ¨ì íµê³ë¥¼ ì¶ë ¥í©ëë¤. ì´ ìµì ì ì¬ì©íë©´ ì¶ë ¥ì´ JSON ê°ì²´ê° ë ì ììµëë¤. webpackì ë¶ì ë구, chrisbatemanì webpack-visualizer ëë th0rì webpack-bundle-analyzer ìì ì´ ìëµì´ ìë½ë©ëë¤. ì´ë¬í ë¶ì ë구ë JSONì ê°ì ¸ìì ë¹ëì 모ë ì¸ë¶ ì 보를 ê·¸ëí½ íìì¼ë¡ ì ê³µí©ëë¤.
webpack ì¤ì ì´ í¨ì를 ë´ë³´ë¼ ë"environment"를 ì¤ì ì ì ë¬í ì ììµëë¤.
npx webpack --env production # env.production = true--env ì¸ìë ë³µìì ê°ì íì©í©ëë¤.
| í¸ì¶ | ê²°ê³¼ íê²½ |
|---|---|
npx webpack --env prod | { prod: true } |
npx webpack --env prod --env min | { prod: true, min: true } |
npx webpack --env platform=app --env production | { platform: "app", production: true } |
npx webpack --env foo=bar=app | { foo: "bar=app"} |
npx webpack --env app.platform="staging" --env app.name="test" | { app: { platform: "staging", name: "test" } |
ìì íìë ì¬ì©ì ì ì env ì¸ìë env íììë webpack ì¤ì ë´ìì ì¬ì©ëë ëª ê°ì§ ë´ì¥ 기ë¥ì´ ììµëë¤.
| íê²½ ë³ì | ì¤ëª |
|---|---|
WEBPACK_SERVE | serve|server|s를 ì¬ì©íê³ ìì¼ë©´ true |
WEBPACK_BUILD | build|bundle|b를 ì¬ì©íê³ ìì¼ë©´ true |
WEBPACK_WATCH | --watch|watch|w를 ì¬ì©íê³ ìì¼ë©´ true |
ë²ë¤ ì½ë ë´ììë ì´ë¬í ë´ì¥ íê²½ ë³ìì ì ê·¼í ì ìë ì ì ììëì¸ì.
module.exports = (env, argv) => {
return {
mode: env.WEBPACK_SERVE ? 'development' : 'production',
};
};--node-env ìµì
ì ì¬ì©íì¬ process.env.NODE_ENV를 ì¤ì í ì ìì¼ë©°, ì´ë ì¬ì©ì ì½ëì webpack ì¤ì 모ëìì ì¬ì©í ì ììµëë¤.
npx webpack --node-env production # process.env.NODE_ENV = 'production'process.env.NODE_ENV를 ì¤ì í기 ìí --node-envì ë³ì¹ì
ëë¤.
npx webpack --config-node-env production # process.env.NODE_ENV = 'production'ì¤ì ìì mode ìµì
ì´ ì§ì ëì§ ìì ê²½ì° --config-node-env ìµì
ì ì¬ì©íì¬ mode를 ì¤ì í ì ììµëë¤. ì를 ë¤ì´, --config-node-env productionì ì¬ì©íë©´ process.env.NODE_ENVì modeê° ëª¨ë 'production'ì¼ë¡ ì¤ì ë©ëë¤.
ì¤ì ì´ í¨ì를 ë´ë³´ë´ë ê²½ì°, í¨ìê° ë°íë í --config-node-env ê°ì´ modeì í ë¹ë©ëë¤. ì¦, modeë í¨ì ì¸ì(env ë° argv)ìì ì¬ì©í ì ììµëë¤. ê·¸ë¬ë --config-node-envì ê°ì í¨ì ë´ìì argv.nodeEnvë¡ ì ê·¼ ê°ë¥íë©° ê·¸ì ë°ë¼ ì¬ì©í ì ììµëë¤.
module.exports = (env, argv) => {
console.log(argv.defineProcessEnvNodeEnv); // 'production' --config-node-env productionì´ ì¬ì©ëë ê²½ì°
return {
// ë¹ì ì ì¤ì
};
};| íë¼ë¯¸í° | ì¤ëª | ì ë ¥ íì | ê¸°ë³¸ê° |
|---|---|---|---|
--config | ì¤ì íì¼ ê²½ë¡ | string[] | Default Configs |
--config-name | ì¬ì©í ì¤ì ì ì´ë¦ | string[] | - |
--env | í¨ìì¼ ë ì¤ì ì ì ë¬ë íê²½ | string[] | - |
webpack-bundle-analyzer를 ì¬ì©íì¬ webpackìì ë´ë³´ë¸ ì¶ë ¥ ë²ë¤ì ë¶ìí ì ììµëë¤. --analyze íë그를 ì¬ì©íì¬ CLI를 íµí´ í¸ì¶ í ì ììµëë¤.
npx webpack --analyzewebpack ì»´íì¼ ì§í ìí©ì íì¸íë ¤ë©´ --progress íë그를 ì¬ì©í©ëë¤.
npx webpack --progressì§í ë¨ê³ì ëí íë¡í ë°ì´í°ë¥¼ ìì§íë ¤ë©´ --progress íëê·¸ì profileì ê°ì¼ë¡ ì ë¬í ì ììµëë¤.
npx webpack --progress=profileNode.js íë¡ì¸ì¤ì ì§ì ì¸ì를 ì ë¬íë ¤ë©´ NODE_OPTIONS ìµì
ì ì¬ì©í ì ììµëë¤.
ì를 ë¤ì´, Node.js íë¡ì¸ì¤ì ë©ëª¨ë¦¬ ì íì 4GBë¡ ëë¦¬ë ¤ë©´ ìëì ê°ì´ ì¬ì©í©ëë¤.
NODE_OPTIONS="--max-old-space-size=4096" webpackëí Node.js íë¡ì¸ì¤ì ë³µìì ìµì ì ì ë¬í ì ììµëë¤.
NODE_OPTIONS="--max-old-space-size=4096 -r /path/to/preload/file.js" webpack| ì¢ ë£ ì½ë | ì¤ëª |
|---|---|
0 | ì±ê³µ |
1 | webpack ì¤ë¥ |
2 | ì¤ì / ìµì 문ì ëë ë´ë¶ ì¤ë¥ |
| íê²½ ë³ì | ì¤ëª |
|---|---|
WEBPACK_CLI_SKIP_IMPORT_LOCAL | trueì´ë©´ webpack-cliì ë¡ì»¬ ì¸ì¤í´ì¤ ì¬ì©ì ê±´ëëëë¤. |
WEBPACK_CLI_FORCE_LOAD_ESM_CONFIG | trueì´ë©´ ESM ì¤ì ì ê°ì ë¡ ë¡ëí©ëë¤. |
WEBPACK_PACKAGE | CLIìì ì¬ì©ì ì ì webpack ë²ì ì ì¬ì©í©ëë¤. |
WEBPACK_DEV_SERVER_PACKAGE | CLIìì ì¬ì©ì ì ì webpack-dev-server ë²ì ì ì¬ì©í©ëë¤. |
WEBPACK_CLI_HELP_WIDTH | ëìë§ ì¶ë ¥ì ì¬ì©ì ì ì ëë¹ë¥¼ ì¬ì©í©ëë¤. |
WEBPACK_CLI_FORCE_LOAD_ESM_CONFIG=true npx webpack --config ./webpack.config.esmCLIìì ì¬ì©ì ì ì webpack ë²ì ì ì¬ì©í©ëë¤. package.jsonìì ë¤ì ë´ì©ì ê³ ë ¤í©ëë¤.
{
"webpack": "^4.0.0",
"webpack-5": "npm:webpack@^5.32.0",
"webpack-cli": "^4.5.0"
}webpack v4.0.0ì ì¬ì©íë ¤ë©´ ìë ëª
ë ¹ì ì¬ì©í©ëë¤.
npx webpackwebpack v5.32.0ì ì¬ì©íë ¤ë©´ ìë ëª
ë ¹ì ì¬ì©í©ëë¤.
WEBPACK_PACKAGE=webpack-5 npx webpackTypeScriptìì 기본 ESMì ì¬ì©íë ê²½ì° ì´ì ê°ì ì¤ë¥ê° ë°ìí ì ììµëë¤ (ì: package.jsonì type: "module").
webpack-clië CommonJS ë° ESM íìì ì¤ì ì 모ë ì§ìíë©°, ì²ììë require()를 ì¬ì©íì¬ ì¤ì ì ë¡ëíë ¤ê³ ìëí©ëë¤. ì¼ë¨ ì¤í¨íë©´ 'ERR_REQUIRE_ESM' (ì´ ê²½ì°ì í¹ìí ì½ë) import()를 ì¬ì©íì¬ ì¤ì ë¡ë를 ìëí©ëë¤.
ê·¸ë¬ë, import() ë©ìëë loader í
ì´ íì±íëì´ ìì§ ìì¼ë©´ ts-nodeìì ìëíì§ ììµëë¤. (TypeStrong/ts-node#1007ì ì¤ëª
ëì´ ììµëë¤).
ìì ì¤ë¥ë¥¼ ìì íë ¤ë©´ ë¤ì ëª ë ¹ì ì¬ì©íì¸ì.
NODE_OPTIONS="--loader ts-node/esm" npx webpack --entry ./src/index.js --mode productionìì¸í ë´ì©ì TypeScriptë¡ webpack ì¤ì ìì±ì ëí 문ì를 ì°¸ê³ íì¸ì.