ì´ ì¹ì ììë webpackì¼ë¡ ì»´íì¼ë ì½ëìì ì¬ì©í ì ìë 모ë ë©ìë를 ë¤ë£¹ëë¤. Webpackì ì¬ì©íì¬ ì í리ì¼ì´ì ì ë²ë¤í ë ES6, CommonJS ë° AMDì ê°ì ì¬ë¬ ê°ì§ 구문 ì¤íì¼ ì¤ ì íí ì ììµëë¤.
Webpackì ì¬ë¬ 모ë 구문ì ì§ìíì§ë§, ì¼ê´ì±ì ì ì§íê³ ì´ìí ëìì´ë ë²ê·¸ë¥¼ í¼íë ¤ë©´ ë¨ì¼ 구문ì ë°ë¥´ë ê²ì´ ì¢ìµëë¤. ì¤ì ë¡ webpackì ê°ì¥ ê°ê¹ì´ ìì package.json íì¼ì ê°ì´ "module" ì´ê±°ë commonjsì¸ "type" íëê° í¬í¨ë ê²½ì°, .mjs íì¼, .cjs íì¼ ëë .js íì¼ì ëí ê¶ì¥ ì¬íì ì ì©í©ëë¤. ê³ìí´ì ì½ê¸° ì ì ë¤ì ì ì© ì¬íì ììë³´ì¸ì.
package.jsonì "type": "module"ì´ ìë .mjs ëë .js.
require, module.exports ëë exports를 ì¬ì©í ì ììµëë¤.import './src/App' ëì ì import './src/App.mjs'를 ì¬ì©í´ì¼ í©ëë¤. (Rule.resolve.fullySpecified를 ì¬ì©íì¬ ì´ ì¬íì ë¹íì±íí ì ììµëë¤.)package.jsonì "type": "commonjs"ê° ìë .cjs ëë .js.
importë exportë ì¬ì©í ì ììµëë¤.package.jsonì "type": "module"ì´ ìë .wasm.
Webpack ë²ì 2ë 기본ì ì¼ë¡ ES6 모ë 구문ì ì§ìí©ëë¤. ì¦, babelê³¼ ê°ì ë구 ìì´ import ë° export를 ì¬ì©íì¬ ì´ë¥¼ ì²ë¦¬í ì ììµëë¤. ë¤ë¥¸ ES6+ 기ë¥ìë ì¬ì í babelì´ íìí ì ììµëë¤. Webpackì´ ì§ìíë ë©ìëë ë¤ìê³¼ ê°ìµëë¤.
ë¤ë¥¸ 모ëì export를 ì ì ì¼ë¡ import í©ëë¤.
import MyModule from './my-module.js';
import { NamedExport } from './other-module.js';Data URI를 import í ìë ììµëë¤.
import 'data:text/javascript;charset=utf-8;base64,Y29uc29sZS5sb2coJ2lubGluZSAxJyk7';
import {
number,
fn,
} from 'data:text/javascript;charset=utf-8;base64,ZXhwb3J0IGNvbnN0IG51bWJlciA9IDQyOwpleHBvcnQgY29uc3QgZm4gPSAoKSA9PiAiSGVsbG8gd29ybGQiOw==';무ìì´ë default ëë ì´ë¦ì´ ì§ì ë ë´ë³´ë´ê¸°ë¡ ë´ë³´ë
ëë¤.
// ì´ë¦ì´ ì§ì ë ë´ë³´ë´ê¸°
export var Count = 5;
export function Multiply(a, b) {
return a * b;
}
// 기본 ë´ë³´ë´ê¸°
export default {
// ë°ì´í°...
};function(string path):Promise
모ëì ëì ì¼ë¡ ë¡ëí©ëë¤. import()ì ëí í¸ì¶ì ë¶í ì§ì ì¼ë¡ ì²ë¦¬ë©ëë¤. ì¦, ìì²ë 모ëê³¼ ê·¸ ììì ë³ëì ì²í¬ë¡ ë¶í ë©ëë¤.
if (module.hot) {
import('lodash').then((_) => {
// lodash(ì¼ëª
'_')ë¡ ìì
ìí...
});
}import(foo)ì ê°ì ìì í ëì ì¸ import 문ì ì¬ì©íë ê²ì ë¶ê°ë¥í©ëë¤. fooë ì ì¬ì ì¼ë¡ ìì¤í
ì´ë íë¡ì í¸ì 모ë íì¼ì ëí ê²½ë¡ê° ë ì ì기 ë문ì
ëë¤.
import()ë ìµìí 모ë ìì¹ì ëí ì 보를 í¬í¨í´ì¼ í©ëë¤. ë²ë¤ë§ì í¹ì ëë í°ë¦¬ ëë íì¼ ì§í©ì¼ë¡ ì íë ì ììµëë¤. ê·¸ë¬ë¯ë¡ ëì íí ìì ì¬ì©í ë import() í¸ì¶ ì ì ì¬ì ì¼ë¡ ìì² ê°ë¥í 모ë 모ëì´ í¬í¨ë©ëë¤.
ì를 ë¤ì´, import(`./locale/${language}.json`)ë ./locale ëë í°ë¦¬ì íì ëë í°ë¦¬ì ìë 모ë .json íì¼ë§ ì ì²í¬ë¡ ë¬¶ê³ ë¤ë¥¸ íì¼ íì¥ì를 ê°ì§ íì¼ì ì ì¸í©ëë¤. ë°íìì language ë³ìê° ê³ì°ëë©´ english.jsonì´ë german.jsonê³¼ ê°ì 모ë íì¼ì ì¬ì©í ì ììµëë¤.
// ì¿ í¤ë ë¤ë¥¸ ì ì¥ììì ì¸ì´ë¥¼ ê°ì ¸ì¤ë ë°©ë²ì´ ìë¤ê³ ììí´ ë³´ì¸ì.
const language = detectVisitorLanguage();
import(`./locale/${language}.json`).then((module) => {
// ë²ìê³¼ ê´ë ¨ë ìì
ì ìíí©ëë¤.
});ê°ì ¸ì¤ê¸°ì 주ìì ì¶ê°íì¬ ì²í¬ì ì´ë¦ì ì§ì íê±°ë ë¤ë¥¸ 모ë를 ì ííë ë±ì ì¬ë¬ ìì ì í ì ììµëë¤. ì´ í¹ë³í 주ìì ì ì²´ 목ë¡ê³¼ 주ìì´ ìííë ìì ì ìë ì½ëì ì¤ëª ì ì°¸ê³ íì¸ì.
// ë¨ì¼ ëì
import(
/* webpackChunkName: "my-chunk-name" */
/* webpackMode: "lazy" */
/* webpackExports: ["default", "named"] */
/* webpackFetchPriority: "high" */
'module'
);
// ì¬ë¬ ê°ë¥í ëì
import(
/* webpackInclude: /\.json$/ */
/* webpackExclude: /\.noimport\.json$/ */
/* webpackChunkName: "my-chunk-name" */
/* webpackMode: "lazy" */
/* webpackPrefetch: true */
/* webpackPreload: true */
`./locale/${language}`
);
import(/* webpackIgnore: true */ 'ignored-module.js');JavaScript Usage
trueë¡ ì¤ì íë©´ ëì import 구문 íì±ì ë¹íì±íí©ëë¤.
import.meta.urlì ì¬ì©í ë, ê·¸ëë¡ ì ì§ëì§ ìê³ , ëì baseURIì ë°ë¼ ëì²´ë©ëë¤. 모ëì ê²½ì° new URL("./", import.meta.url)ë¡ ëì²´ëê³ , ë¤ë¥¸ ê²½ì°ìë document.baseURIë¡ ê¸°ë³¸ ì¤ì ë©ëë¤. ì´ë ê² íë©´ 기본 URL 컨í
ì¤í¸ì ë§ê² ìë URLì´ ì¬ë°ë¥´ê² ìëí©ëë¤.
import(/* webpackIgnore: true */ 'ignored-module.js');
new URL(/* webpackIgnore: true */ 'file1.css', import.meta.url);CSS Usage
webpackIgnore 주ìì webpackì´ í¹ì ê°ì ¸ì¤ê¸° ëë URL 참조를 ì²ë¦¬í ì§ ì¬ë¶ë¥¼ ì ì´í ì ììµëë¤.
í¹ì ê²½ì°ìë ë°ë¡ ì¬ì©í ì ìì§ë§ ì±ë¥ìì ì´ì ë¡ ëª¨ë ê²½ì°ë¥¼ ì§ìíì§ë ììµëë¤.
ë¤ìì ê²½ì°ìë webpackIgnore를 ì§ìí©ëë¤:
@import /* webpackIgnore: false */ url(./basic.css);
.class {
color: red;
background: /* webpackIgnore: true */ url('./url/img.png');
}
.class {
background-image: image-set(
/*webpackIgnore: true*/ url(./url/img1x.png) 1x,
url(./url/img2x.png) 2x,
url(./url/img3x.png) 3x
);
}ì ì²í¬ì ì´ë¦ì
ëë¤. Webpack 2.6.0ë¶í° íë ì´ì¤íë [index]ì [request]ë 주ì´ì§ 문ìì´ ë´ìì ì¦ê°ë ì«ì ëë ì¤ì íì¸ë íì¼ ì´ë¦ì¼ë¡ ê°ê° ì§ìí©ëë¤. ì´ ì£¼ìì ì¶ê°íë©´ ê°ë³ ì²í¬ ì´ë¦ì´ [id].js ëì [my-chunk-name].jsë¡ ì§ì ë©ëë¤.
í¹ì ëì importì ëí fetchPriority를 ì¤ì í©ëë¤. module.parser.javascript.dynamicImportFetchPriority ìµì
ì ì¬ì©íì¬ ëª¨ë ëì importì ì ì 기본ê°ì ì¤ì í ìë ììµëë¤.
import(
/* webpackFetchPriority: "high" */
'path/to/module'
);Webpack 2.6.0ë¶í° ëì import를 í´ìí기 ìí ë¤ë¥¸ 모ë를 ì§ì í ì ììµëë¤. ë¤ì ìµì ì´ ì§ìë©ëë¤.
'lazy' (기본ê°): ê° import()ë 모ëì ëí´ ì§ì° ë¡ë ê°ë¥í ì²í¬ë¥¼ ìì±í©ëë¤.'lazy-once': import()ì ëí 모ë í¸ì¶ì ë§ì¡±ìí¬ ì ìë ë¨ì¼ ì§ì° ë¡ë ê°ë¥ ì²í¬ë¥¼ ìì±í©ëë¤. ì²í¬ë import()ì ëí 첫 ë²ì§¸ í¸ì¶ìì ê°ì ¸ì¤ê³ , import()ì ëí íì í¸ì¶ì ëì¼í ë¤í¸ìí¬ ìëµì ì¬ì©í©ëë¤. ì´ê²ì ì ì¬ì ì¼ë¡ ìì² ê°ë¥í ë³µìì 모ë ê²½ë¡ê° ìë import(`./locales/${language}.json`)ì ê°ì ë¶ë¶ ëì ë¬¸ì¼ ê²½ì°ìë§ ìë¯¸ê° ììµëë¤.'eager': ì¶ê° ì²í¬ë¥¼ ìì±íì§ ììµëë¤. 모ë 모ëì íì¬ ì²í¬ì í¬í¨ëë©° ì¶ê° ë¤í¸ìí¬ ìì²ì ë°ìíì§ ììµëë¤. ì´ë¯¸ í´ìë Promiseê° ë°íë©ëë¤. ì ì ê°ì ¸ì¤ê¸°ì ë¬ë¦¬ 모ëì import()ê° í¸ì¶ë ëê¹ì§ ì¤íëì§ ììµëë¤.'weak': 모ë í¨ìê° ì´ë¯¸ ë¤ë¥¸ ë°©ìì¼ë¡ ë¡ëë ê²½ì° ëª¨ë ë¡ë를 ìëí©ëë¤(ì: ë¤ë¥¸ ì²í¬ê° ì´ë¥¼ ê°ì ¸ìê±°ë 모ëì í¬í¨íë ì¤í¬ë¦½í¸ê° ë¡ëë ê²½ì°). Promiseê° ì¬ì í ë°íëì§ë§ ì²í¬ê° ì´ë¯¸ í´ë¼ì´ì¸í¸ì ìë ê²½ì°ìë§ ì±ê³µì ì¼ë¡ í´ìë©ëë¤. 모ëì ì¬ì©í ì ìì¼ë©´ Promiseê° ê±°ë¶ë©ëë¤. ë¤í¸ìí¬ ìì²ì ë°ìíì§ ììµëë¤. ì´ë íìí ì²í¬ê° ì´ê¸° ìì²ìì íì ìëì¼ë¡ ì ê³µëë (íì´ì§ì ë´ì¥ë ê²½ì°) ë²ì© ë ëë§ì ì ì©í©ëë¤. íì§ë§ ì± íìì´ ì´ê¸°ì ì ê³µëì§ ìì ê°ì ¸ì¤ê¸°ë¥¼ í¸ë¦¬ê±° íë ê²½ì°ìë ì ì©íì§ ììµëë¤.í¥í íìì 리ìì¤ê° íìí ì ììì ë¸ë¼ì°ì ì ì립ëë¤. webpackPrefetch ìë ë°©ìì ëí ìì¸í ë´ì©ì ê°ì´ë를 íì¸íì¸ì.
íì¬ íì ì¤ì 리ìì¤ê° íìí ì ììì ë¸ë¼ì°ì ì ì립ëë¤. webpackPreload ìë ë°©ìì ëí ìì¸í ë´ì©ì ê°ì´ë를 íì¸íì¸ì.
ê°ì ¸ì¤ê¸° í´ì ì¤ ì¼ì¹íëì§ íì¸í ì ê·ìì ëë¤. ì¼ì¹íë 모ëë§ ë²ë¤ë¡ ì ê³µë©ëë¤.
ê°ì ¸ì¤ê¸° í´ì ì¤ ì¼ì¹íëì§ íì¸í ì ê·ìì ëë¤. ì¼ì¹íë 모ëì ë²ë¤ë¡ ì ê³µëì§ ììµëë¤.
webpackExports: ëì ì¼ë¡ import()ë 모ëì ì§ì ë ë´ë³´ë´ê¸°ë§ ë²ë¤ë¡ 묶ëë¡ webpackì ì§ìí©ëë¤. ì²í¬ì ì¶ë ¥ í¬ê¸°ë¥¼ ì¤ì¼ ì ììµëë¤. webpack 5.0.0-beta.18ë¶í° ì¬ì© ê°ë¥í©ëë¤.
CommonJSì 목íë ë¸ë¼ì°ì ì¸ë¶ìì JavaScriptì© ìíê³ë¥¼ ì§ì íë ê²ì ëë¤. Webpackìì ì§ìíë CommonJS ë©ìëë ë¤ìê³¼ ê°ìµëë¤.
require(dependency: String);ë¤ë¥¸ 모ëì ë´ë³´ë´ê¸°ë¥¼ ë기ì ì¼ë¡ ê²ìí©ëë¤. ì»´íì¼ë¬ë ì¶ë ¥ ë²ë¤ìì ìì¡´ì±ì ì¬ì©í ì ìëì§ íì¸í©ëë¤.
var $ = require('jquery');
var myModule = require('my-module');requireì ëí í¹ë³í 주ìë íì±íí ì ììµëë¤. ìì¸í ë´ì©ì module.parser.javascript.commonjsMagicComments를 ì°¸ê³ íì¸ì.
require.resolve(dependency: String);모ëì ID를 ë기ì ì¼ë¡ ê²ìí©ëë¤. ì»´íì¼ë¬ë ì¶ë ¥ ë²ë¤ìì ìì¡´ì±ì ì¬ì©í ì ìëì§ íì¸í©ëë¤. require.cache[id] ëë __webpack_require__(id)ì í¨ê» ì¬ì©í ì ìë ë¶í¬ëª
ê°ì¼ë¡ ì²ë¦¬íë ê²ì´ ì¢ìµëë¤ (ì´ë¬í ì¬ì©ì í¼íë ê²ì´ ê°ì¥ ì¢ìµëë¤).
ìì¸í ë´ì©ì module.id를 ì°¸ê³ íì¸ì.
ëì¼í 모ëì ì¬ë¬ ë² require íë©´ 모ëì´ í ë²ë§ ì¤íëê³ íëì ë´ë³´ë´ê¸°ë§ ë°ìí©ëë¤. ë°ë¼ì ë°íìì ìºìê° ì¡´ì¬í©ëë¤. ì´ ìºììì ê°ì ì ê±°íë©´ ì 모ëì´ ì¤íëê³ ì ë´ë³´ë´ê¸°ê° ë°ìí©ëë¤.
var d1 = require('dependency');
require('dependency') === d1;
delete require.cache[require.resolve('dependency')];
require('dependency') !== d1;// file.jsìì
require.cache[module.id] === module;
require('./file.js') === module.exports;
delete require.cache[module.id];
require.cache[module.id] === undefined;
require('./file.js') !== module.exports; // ì´ë¡ ì ì¤ì ë¡ ì´ê²ì ì¤í ì¤ë²íë¡ë¥¼ ì¼ì¼íµëë¤.
require.cache[module.id] !== module;require.ensure(
dependencies: String[],
callback: function(require),
errorCallback: function(error),
chunkName: String
)ë¹ë기ìì¼ë¡ ë¡ëë ì§ì ë dependencies를 ë³ëì ë²ë¤ë¡ ë¶í í©ëë¤. CommonJS 모ë 구문ì ì¬ì©í ë ì´ê²ì ìì¡´ì±ì ëì ì¼ë¡ ë¡ëíë ì ì¼í ë°©ë²ì
ëë¤. ì¦, ì´ ì½ëë ìì
ì¤ì ì¤íë ì ìì¼ë©° í¹ì ì¡°ê±´ì´ ì¶©ì¡±ëë ê²½ì°ìë§ dependencies를 ë¡ëí©ëë¤.
var a = require('normal-dep');
if (module.hot) {
require.ensure(['b'], function (require) {
var c = require('c');
// í¹ë³í ìì
ì ìí...
});
}ë¤ì íë¼ë¯¸í°ë ììì ì§ì í ììëë¡ ì§ìë©ëë¤.
dependencies: callbackì ì½ë ì¤íì íìí 모ë 모ëì ì ì¸íë 문ìì´ ë°°ì´ì
ëë¤.callback: ìì¡´ì±ì´ ë¡ëëë©´ webpackì´ ì¤íí í¨ìì
ëë¤. require í¨ì 구íì ì´ í¨ìì ëí íë¼ë¯¸í°ë¡ ì ì¡ë©ëë¤. í¨ì 본문ì ì´ê²ì ì¬ì©íì¬ ì¤íì íìí ì¶ê° require() 모ëì ì¬ì©í ì ììµëë¤.errorCallback: Webpackì´ ìì¡´ì±ì ë¶ë¬ì¤ì§ 못íì ë ì¤íëë í¨ìì
ëë¤.chunkName: í¹ë³í ì´ require.ensure()ì ìí´ ìì±ë ì²í¬ì ë¶ì¬ë ì´ë¦ì
ëë¤. ë¤ìí require.ensure() í¸ì¶ì ëì¼í chunkNameì ì ë¬íë©´ í´ë¹ ì½ë를 ë¨ì¼ ì²í¬ë¡ ê²°í©í ì ìì¼ë¯ë¡ ë¸ë¼ì°ì ìì ë¡ëíë ë²ë¤ì´ íëë§ ìì±ë©ëë¤.AMD(Asynchronous Module Definition)ë 모ëì ìì±íê³ ë¡ëí기 ìí ì¸í°íì´ì¤ë¥¼ ì ìíë JavaScript ì¬ìì ëë¤. Webpackìì ì§ìíë AMD ë°©ìì ë¤ìê³¼ ê°ìµëë¤.
define([name: String], [dependencies: String[]], factoryMethod: function(...))dependenciesê° ì ê³µëë©´ factoryMethodê° ê° ìì¡´ì±ì ë´ë³´ë´ê¸°ì í¨ê» ê°ì ììë¡ í¸ì¶ë©ëë¤. dependenciesê° ì ê³µëì§ ìì¼ë©´ factoryMethodê° require, exports ë° moduleê³¼ í¨ê» í¸ì¶ë©ëë¤(í¸íì±ì ìí¨ì
ëë¤!). ì´ í¨ìê° ê°ì ë°ííë©´ 모ëìì ì´ ê°ì ë´ë³´ë
ëë¤. ì»´íì¼ë¬ë ê° ìì¡´ì±ì ì¬ì©í ì ìëì§ íì¸í©ëë¤.
define(['jquery', 'my-module'], function ($, myModule) {
// $ì myModuleë¡ ìì
ì ìííì¸ì...
// í¨ì ë´ë³´ë´ê¸°
return function doSomething() {
// ...
};
});define(value: !Function)ì ê³µë value를 ë´ë³´ë
ëë¤. ì¬ê¸°ì valueë í¨ì를 ì ì¸í 모ë ê²ì´ ë ì ììµëë¤.
define({
answer: 42,
});require(dependencies: String[], [callback: function(...)])require.ensureì ì ì¬íê², 주ì´ì§ dependencies를 ë¹ë기ìì¼ë¡ ë¡ëëë ë³ëì ë²ë¤ë¡ ë¶í í©ëë¤. callbackì dependencies ë°°ì´ì ê° ì¢
ìì±ì ë´ë³´ë¼ ë í¸ì¶ë©ëë¤.
require(['b'], function (b) {
var c = require('c');
});ë´ë¶ LabeledModulesPluginì íµí´ 모ë ë´ìì ë¤ìê³¼ ê°ì ë´ë³´ë´ê¸° ë° ìì²ì ìí ë©ìë ì¬ì©ì´ ê°ë¥í©ëë¤.
ì ê³µë value를 ë´ë³´ë
ëë¤. labelì í¨ì ì ì¸ì´ë ë³ì ì ì¸ ìì ì¬ ì ììµëë¤. í¨ì ì´ë¦ ëë ë³ì ì´ë¦ì ê°ì ë´ë³´ë´ë ë° ì¬ì©ëë ìë³ìì
ëë¤.
export: var answer = 42;
export: function method(value) {
// ìì
ì ìííì¸ì...
};íì¬ ë²ììì ì¬ì© ê°ë¥í ìì¡´ì±ì 모ë ë´ë³´ë´ê¸°ë¥¼ ë§ëëë¤. require labelì 문ìì´ ìì ì¬ ì ììµëë¤. ìì¡´ì±ì export labelì´ ìë ê°ì ë´ë³´ë´ì¼ í©ëë¤. CommonJS ëë AMD 모ëì ì¬ì©í ì ììµëë¤.
some-dependency.js
export: var answer = 42;
export: function method(value) {
// ìì
ì ìííì¸ì...
};require: 'some-dependency';
console.log(answer);
method(...);ììì ì¤ëª í 모ë 구문 ì¸ìë webpackì íì ë ëªê°ì§ ì¬ì©ì ì ì ë©ìë를 íì©í©ëë¤.
require.context(
(directory: String),
(includeSubdirs: Boolean) /* ì í, ê¸°ë³¸ê° true */,
(filter: RegExp) /* ì í, ê¸°ë³¸ê° /^\.\/.*$/, 모ë íì¼ */,
(mode: String) /* ì í, 'sync' | 'eager' | 'weak' | 'lazy' | 'lazy-once', ê¸°ë³¸ê° 'sync' */
);directoryì ëí ê²½ë¡, includeSubdirs ìµì
, í¬í¨ë 모ëì ì¢ ë ì¸ë°íê² ì ì´í기 ìí filter, ë¡ë ìë ë°©ìì ì ìíë mode를 ì¬ì©íì¬ ì ì²´ ìì¡´ì± ê·¸ë£¹ì ì§ì í©ëë¤. ê·¸ë¬ë©´ 기본 모ëì ëì¤ì í´ìí ì ììµëë¤.
var context = require.context('components', true, /\.html$/);
var componentA = context.resolve('componentA');modeê° 'lazy'ë¡ ì¤ì ëë©´ 기본 모ëì´ ë¹ë기ìì¼ë¡ ë¡ëë©ëë¤.
var context = require.context('locales', true, /\.json$/, 'lazy');
context('localeA').then((locale) => {
// localeë¡ ìì
ì ìí
});ì¬ì© ê°ë¥í 모ëì ì ì²´ 목ë¡ê³¼ ê·¸ ëìì import() 문ìì ì¤ëª
ëì´ ììµëë¤.
require.include((dependency: String));ì¤ííì§ ìê³ dependency를 í¬í¨í©ëë¤. ì¶ë ¥ ì²í¬ìì 모ëì ìì¹ë¥¼ ìµì ííë ë° ì¬ì©í ì ììµëë¤.
require.include('a');
require.ensure(['a', 'b'], function (require) {
/* ... */
});
require.ensure(['a', 'c'], function (require) {
/* ... */
});ê²°ê³¼ë ë¤ìê³¼ ê°ìµëë¤.
file.js ì abcrequire.include('a')ê° ìì¼ë©´ ë ìµëª
ì²í¬ì ë³µì ë©ëë¤.
require.resolveì ì ì¬íì§ë§, moduleì ë²ë¤ë¡ ê°ì ¸ì¤ì§ ììµëë¤. ì´ê²ì "ì½í" ìì¡´ì±ì¼ë¡ ê°ì£¼í©ëë¤.
if (__webpack_modules__[require.resolveWeak('module')]) {
// 모ëì ì¬ì©í ì ìì ë ìí...
}
if (require.cache[require.resolveWeak('module')]) {
// ì´ì ì 모ëì´ ë¡ëë ê²½ì° ìí...
}
// ëì í´ì("context")ì ìíí ì ììµëë¤.
// ë¤ë¥¸ require/import ë©ìëì ì ì¬í©ëë¤.
const page = 'Foo';
__webpack_modules__[require.resolveWeak(`./page/${page}`)];모ë ìì¤ì ì ì ì¼ë¡ ë¶ìí ì ìë ì구 ì¬íì´ í¬í¨ëì´ ìì¼ë©´, ì¤ìí ì¢ ìì± ê²½ê³ ê° íìë©ëë¤.
ìì ì½ë:
someFn(require);
require.bind(null);
require(variable);