ì´ ì¹ì
ììë webpackì¼ë¡ ì»´íì¼ë ì½ëìì ì¬ì©í ì ìë 모ë ë³ì를 ë¤ë£¹ëë¤. 모ëì module ë° ê¸°í ë³ì를 íµí´ ì»´íì¼ íë¡ì¸ì¤ì í¹ì ë°ì´í°ì ì ê·¼í ì ììµëë¤.
모ëì´ íì¬ ì¤í ì¤ì´ë©´ falseì´ê³ , ì¤íì´ ìë£ëë©´ trueì
ëë¤.
Hot Module Replacementê° íì±íëìëì§ ì¬ë¶ë¥¼ ëíë´ë©° íë¡ì¸ì¤ë¥¼ ìí ì¸í°íì´ì¤ë¥¼ ì ê³µí©ëë¤. ìì¸í ë´ì©ì HMR API íì´ì§ë¥¼ ì°¸ê³ íì¸ì.
íì¬ ëª¨ëì IDì ëë¤.
module.id === require.resolve('./file.js');ì¬ì©ìê° ëª¨ëì require í¸ì¶í ë ë°íí ê°ì ì ìí©ëë¤ (기본ê°ì ì ê°ì²´).
module.exports = function doSomething() {
// Do something...
};ì´ ë³ìë module.exports(ì¦. ê°ì²´)ì 기본ê°ê³¼ ê°ìµëë¤. module.exports를 ë®ì´ì°ë©´, exports를 ë ë´ë³´ë´ì§ ììµëë¤.
exports.someValue = 42;
exports.anObject = {
x: 123,
};
exports.aFunction = function doSomething() {
// Do something
};node.js globalì ì°¸ê³ íì¸ì.
í¸íì±ì ìí´ webpackì 기본ì ì¼ë¡ global ë³ì를 í´ë¦¬íí©ëë¤.
node.__dirnameì ì¤ì ìµì
ì ë¤ìê³¼ ê°ìµëë¤.
false: ì ìëì§ ììmock: '/'ì ê°ìtrue: node.js __dirnameíìì ìí´ íì±ëë ííì ë´ë¶ìì ì¬ì©ëë ê²½ì°, ì¤ì ìµì
ì trueë¡ ì²ë¦¬ë©ëë¤.
import.metaë 모ëì URLê³¼ ê°ì 컨í
ì¤í¸ë³ ë©íë°ì´í°ë¥¼ JavaScript 모ëì ë
¸ì¶í©ëë¤. ESMììë§ ì¬ì©í ì ììµëë¤.
Webpackì import.metaì ëí ì§ì ì¡ì¸ì¤ë¥¼ ì§ìíì§ ììµëë¤. ëì í´ë¹ ìì±ì ì¡ì¸ì¤íê±°ë ëì¤í¸ëì²ë§ í ë¹ì ì¬ì©í´ì¼ í©ëë¤. ì를 ë¤ë©´,
// webpackì ì´ì ëí´ ê²½ê³ í ê²ì
ëë¤.
Object.keys(import.meta);
// ì¬ì©í´ë ê´ì°®ìµëë¤.
console.log(import.meta.url);
const { url } = import.meta;모ëì ì ë file: URLì ë°íí©ëë¤.
src/index.js
console.log(import.meta.url); // `file:///path/to/your/project/src/index.js`ì ê°ì ì¶ë ¥webpack ë²ì ì ë°íí©ëë¤.
src/index.js
console.log(import.meta.webpack); // webpack 5ì ê²½ì° `5` ì¶ë ¥Webpack í¹ì ì ìì±ì
ëë¤. module.hotì ë³ì¹ì¼ë¡, import.meta.webpackHotì strict ESMìì ì¬ì©í ì ìì§ë§ module.hotì í ì ììµëë¤.
require.contextì ëì¼í ê°ì ë°ííì§ë§ javascript/auto ë° javascript/esmì ëí´ìë§ ë°íí©ëë¤.
Type:
(
request: string,
options?: {
recursive?: boolean;
regExp?: RegExp;
include?: RegExp;
exclude?: RegExp;
preload?: boolean | number;
prefetch?: boolean | number;
chunkName?: string;
exports?: string | string[][];
mode?: 'sync' | 'eager' | 'weak' | 'lazy' | 'lazy-once';
}
) => webpack.Context;Available: 5.70.0+
Example:
const contextRequire = import.meta.webpackContext('.', {
recursive: false,
regExp: /two/,
mode: 'weak',
exclude: /three/,
});node.__filenameì ì¤ì ìµì
ì ë¤ìê³¼ ê°ìµëë¤.
false: ì ìëì§ ììmock: '/index.js'ì ê°ìtrue: node.js __filenameíìì ìí´ íì±ëë ííì ë´ë¶ìì ì¬ì©ëë ê²½ì°, ì¤ì ìµì
ì trueë¡ ì²ë¦¬ë©ëë¤.
íì¬ ëª¨ëì 리ìì¤ ì¿¼ë¦¬ì
ëë¤. ë¤ì requireê° í¸ì¶ë ê²½ì°, 쿼리 문ìì´ì file.jsìì ì¬ì©í ì ììµëë¤.
require('file.js?test');file.js
__resourceQuery === '?test';ì¤ì ìµì
ì output.publicPathì ëì¼í©ëë¤.
ìì ìì² í¨ìì ëë¤. ì´ ííìì íìì ìí´ ìì¡´ì±ì´ íì±ëì§ ììµëë¤.
ë´ë¶ ì²í¬ ë¡ë© í¨ì. íëì ì¸ì를 ê°ì§ëë¤.
chunkIdë ë¡ëí ì²í¬ì IDì
ëë¤.íëê° ì¤í¨íì ë ëì²´ í¼ë¸ë¦ ê²½ë¡ìì ì²í¬ë¥¼ ë¡ëíë ìì ì ëë¤.
const originalLoad = __webpack_chunk_load__;
const publicPaths = ['a', 'b', 'c'];
__webpack_chunk_load__ = async (id) => {
let error;
for (const path of publicPaths) {
__webpack_public_path__ = path;
try {
return await originalLoad(id);
} catch (e) {
error = e;
}
}
throw error;
};
import('./module-a').then((moduleA) => {
// ì´ì webpackì ì¬ì©ì ì ì __webpack_chunk_load__ 를 ì¬ì©íì¬ ì²í¬ë¥¼ ë¡ëí©ëë¤.
});íì¬ì 모ëì ì ê·¼í ì ììµëë¤. ì격í ESMììë 모ëì ì¬ì©í ì ììµëë¤.
íì¬ ëª¨ë(module.id)ì IDì ì ê·¼í ì ììµëë¤. ì격í ESMììë 모ëì ì¬ì©í ì ììµëë¤.
모ë 모ëì ë´ë¶ ê°ì²´ì ëí ì ê·¼ì ì ê³µí©ëë¤.
ì»´íì¼ì í´ìì ëí ì ê·¼ì ì ê³µí©ëë¤.
function (chunkId)
idë¡ ì²í¬ì íì¼ ì´ë¦ì ì ê³µí©ëë¤.
í ë¹ ê°ë¥í기 ë문ì ë°íììì ì¬ì©íë íì¼ ì´ë¦ì ë³ê²½í ì ììµëë¤. ì를 ë¤ë©´ ì²í¬ë¥¼ ë¡ëí ë ìµì¢ ê²½ë¡ë¥¼ ê²°ì íë ë° ì¬ì©í ì ììµëë¤.
const oldFn = __webpack_get_script_filename__;
__webpack_get_script_filename__ = (chunkId) => {
const filename = oldFn(chunkId);
return filename + '.changed';
};webpackì ìí´ íì±ëì§ ìë require í¨ì를 ìì±í©ëë¤. ê°ë¥í ê²½ì° ì ì ìì² í¨ìë¡ ë©ì§ ìì
ì ìííëë° ì¬ì©í ì ììµëë¤.
모ëìì, __webpack_exports_info__ë export ë´ë¶ ê²ì¬ë¥¼ íì©íëë° ì¬ì©í ì ììµëë¤.
__webpack_exports_info__ë íì trueì
ëë¤.
__webpack_exports_info__.<exportName>.usedë exportê° ì¬ì©ëì§ ìë ê²½ì° falseì´ê³ , ê·¸ë ì§ ìì¼ë©´ trueì
ëë¤.
__webpack_exports_info__.<exportName>.useInfoë ë¤ìê³¼ ê°ìµëë¤.
exportê° ì¬ì©ëì§ ìë ê²½ì° false
exportê° ì¬ì©ëë ê²½ì° true
export ì¬ì©ì´ ë°íì ì¡°ê±´ì ë°ë¼ ë¬ë¼ì§ ì ìë ê²½ì° `null
`
ì ë³´ê° ìì ê²½ì° undefined
__webpack_exports_info__.<exportName>.provideInfoë ë¤ìê³¼ ê°ìµëë¤.
exportê° ì ê³µëì§ ìë ê²½ì° false
exportê° ì ê³µëë ê²½ì° true
export ê·ì ì´ ë°íì ì¡°ê±´ì ë°ë¼ ë¬ë¼ì§ ì ìë ê²½ì° `null
`
ì ë³´ê° ìì ê²½ì° undefined
nested exportìì ì ë³´ì ì ê·¼í ì ììµëë¤. ì. __webpack_exports_info__.<exportName>.<exportName>.<exportName>.used
exportê° __webpack_exports_info__.<name>.canMangleë¡ ë§¹ê¸ë§ë ì ìëì§ íì¸í©ëë¤.
주ì´ì§ 모ëì´ webpackì ìí´ ë²ë¤ ëì´ ìëì§ í ì¤í¸í©ëë¤.
if (__webpack_is_included__('./module-a.js')) {
// do something
}ë°íìì 기본 URI를 ë³ê²½í©ëë¤.
Type: string
Available: 5.21.0+
Example:
__webpack_base_uri__ = 'https://example.com';íì¬ ìí¸ë¦¬ì runtime idì ì ê·¼í©ëë¤.
ì´ê²ì webpackì ê³ ì 기ë¥ì´ë©° webpack 5.25.0ë¶í° ì¬ì©í ì ììµëë¤.
src/index.js
console.log(__webpack_runtime_id__ === 'main');ì¤ì ìµì
debugì ëì¼í©ëë¤.