Module Variables
ì´ ì¹ì
ììë webpackì¼ë¡ ì»´íì¼ë ì½ëìì ì¬ì©í ì ìë 모ë ë³ì를 ë¤ë£¹ëë¤. 모ëì module ë° ê¸°í ë³ì를 íµí´ ì»´íì¼ íë¡ì¸ì¤ì í¹ì ë°ì´í°ì ì ê·¼í ì ììµëë¤.
module.loaded (NodeJS)
모ëì´ íì¬ ì¤í ì¤ì´ë©´ falseì´ê³ , ì¤íì´ ìë£ëë©´ trueì
ëë¤.
module.hot (webpack-specific)
Hot Module Replacementê° íì±íëìëì§ ì¬ë¶ë¥¼ ëíë´ë©° íë¡ì¸ì¤ë¥¼ ìí ì¸í°íì´ì¤ë¥¼ ì ê³µí©ëë¤. ìì¸í ë´ì©ì HMR API íì´ì§ë¥¼ ì°¸ê³ íì¸ì.
module.id (CommonJS)
íì¬ ëª¨ëì IDì ëë¤.
console.log(import.meta.url);export default
ìë¹ìê° ëª¨ëì import í¸ì¶ì í ë ë°íë ê°ì ì ìí©ëë¤(기본ê°ì ì ê°ì²´).
export default function doSomething() {
// Do something...
}exports (CommonJS)
ëª ëª ë ë´ë³´ë´ê¸°ë¥¼ ì¬ì©íë©´ ë¨ì¼ 모ëìì ì¬ë¬ ë³ì, í¨ì ëë ê°ì²´ë¥¼ ë´ë³´ë¼ ì ììµëë¤. 기본 ë´ë³´ë´ê¸°ì ë¬ë¦¬ ì´ë¬í ê°ì ê°ì ¸ì¬ ëë ì íí ì´ë¦ì ì¬ì©í´ì¼ í©ëë¤.
export const someValue = 42;
export const anObject = {
x: 123,
};
export function doSomething() {
// Do something
}global (NodeJS)
node.js globalì ì°¸ê³ íì¸ì.
í¸íì±ì ìí´ webpackì 기본ì ì¼ë¡ global ë³ì를 í´ë¦¬íí©ëë¤.
__dirname (NodeJS)
node.__dirnameì ì¤ì ìµì
ì ë¤ìê³¼ ê°ìµëë¤.
false: ì ìëì§ ììmock:'/'ì ê°ìtrue: node.js __dirname
íìì ìí´ íì±ëë ííì ë´ë¶ìì ì¬ì©ëë ê²½ì°, ì¤ì ìµì
ì trueë¡ ì²ë¦¬ë©ëë¤.
import.meta
import.metaë 모ëì URLê³¼ ê°ì 컨í
ì¤í¸ë³ ë©íë°ì´í°ë¥¼ JavaScript 모ëì ë
¸ì¶í©ëë¤. ESMììë§ ì¬ì©í ì ììµëë¤.
Webpackì import.metaì ëí ì§ì ì¡ì¸ì¤ë¥¼ ì§ìíì§ ììµëë¤. ëì í´ë¹ ìì±ì ì¡ì¸ì¤íê±°ë ëì¤í¸ëì²ë§ í ë¹ì ì¬ì©í´ì¼ í©ëë¤. ì를 ë¤ë©´,
// webpackì ì´ì ëí´ ê²½ê³ í ê²ì
ëë¤.
Object.keys(import.meta);
// ì¬ì©í´ë ê´ì°®ìµëë¤.
console.log(import.meta.url);
const { url } = import.meta;import.meta.url
모ëì ì ë file: URLì ë°íí©ëë¤.
src/index.js
console.log(import.meta.url); // `file:///path/to/your/project/src/index.js`ì ê°ì ì¶ë ¥import.meta.webpack
webpack ë²ì ì ë°íí©ëë¤.
src/index.js
console.log(import.meta.webpack); // webpack 5ì ê²½ì° `5` ì¶ë ¥import.meta.webpackHot
Webpack í¹ì ì ìì±ì
ëë¤. module.hotì ë³ì¹ì¼ë¡, import.meta.webpackHotì strict ESMìì ì¬ì©í ì ìì§ë§ module.hotì í ì ììµëë¤.
import.meta.webpackContext
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/, });
import.meta.main
5.103.0+íì¬ ëª¨ëì´ ìí¸ë¦¬ í¬ì¸í¸ì¸ì§ ì¬ë¶ë¥¼ ëíë´ë ë¶ì¸ ê°ì ë°íí©ëë¤.
src/index.js (ìí¸ë¦¬ í¬ì¸í¸)
console.log(import.meta.main); // truesrc/utils.js (ìí¸ë¦¬ í¬ì¸í¸ê° ìëëë¤)
console.log(import.meta.main); // falseì´ë Node.jsì require.main === module ê²ì¬ì ì ì¬íê², ì§ì
모ëììë§ ì¤íëì´ì¼ íë ì¡°ê±´ë¶ ë¡ì§ì ì ì©í©ëë¤.
import.meta.env
5.103.0+ë¤ìí ìì¤ìì íê²½ ë³ìì ì ê·¼í ì ììµëë¤. import.meta.envë process.envì ì ì¬íê² ëìíë ê°ì²´ë¡, ë¤ìí webpack íë¬ê·¸ì¸ ë° êµ¬ì± ìµì
ì íµí´ ì ìë íê²½ ë³ìì ì ê·¼í ì ìëë¡ í´ì¤ëë¤.
webpack.config.js
import webpack from "webpack";
export default {
mode: "production", // NODE_ENVë ìëì¼ë¡ "production"ì¼ë¡ ì¤ì ë©ëë¤.
dotenv: {
prefix: "WEBPACK_", // WEBPACK_ ì ëì¬ê° ë¶ì ë³ìë§ ë
¸ì¶í©ëë¤.
},
plugins: [
// EnvironmentPluginì process.envì ë³ì를 ë
¸ì¶í©ëë¤.
new webpack.EnvironmentPlugin({
API_URL: "https://api.example.com",
}),
// DefinePluginì ì¬ì©ì ì ì ì ì를 íì©í©ëë¤.
new webpack.DefinePlugin({
"import.meta.env.CUSTOM_VAR": JSON.stringify("custom_value"),
}),
],
};src/index.js
// íê²½ ë³ìì ì ê·¼
console.log(import.meta.env.NODE_ENV); // "production" (모ëìì ê°ì ¸ì´)
console.log(import.meta.env.API_URL); // EnvironmentPlugin ëë process.envì ê°
console.log(import.meta.env.CUSTOM_VAR); // "custom_value"(DefinePluginìì ê°ì ¸ì´)
// íì
ê²ì¬
console.log(typeof import.meta.env); // "object"
// ì°¸ ê°ì ê° ê²ì¬
if (import.meta.env) {
// import.meta.envë ì°¸ ê°ì ê°ì
ëë¤.
}
// ì¡´ì¬íì§ ìë ìì±ì ì ê·¼íë©´ undefinedê° ë°íë©ëë¤.
if (!import.meta.env.NOT_EXIST) {
// NOT_EXISTë ì ìëì§ ììê±°ë ê±°ì§ì
ëë¤.
}
// 구조 ë¶í´ í ë¹
const { NODE_ENV, API_URL } = import.meta.env;íê²½ ë³ìì ì¶ì²:
-
modeìµì : webpack 모ë(development,productionëënone)ì ë°ë¼import.meta.env.NODE_ENV를 ìëì¼ë¡ ì¤ì í©ëë¤. -
EnvironmentPlugin:process.envì ë³ì를 ë ¸ì¶íê±°ë 기본ê°ì ì ê³µí©ëë¤. -
DotenvPlugin:.envíì¼ìì ë³ì를 ë¡ëí©ëë¤. ì§ì ë ì ëì¬(기본ê°:WEBPACK_)ê° ìë ë³ìë§ ë ¸ì¶ë©ëë¤. -
DefinePlugin:"import.meta.env.*"í¨í´ì ì¬ì©íì¬ ì¬ì©ì ì ì를 íì©í©ëë¤.
import.meta.envë process.envì ì ì¬íê² ëìí©ëë¤. ê°ì²´ì´ë©° typeof ê²ì¬ë¥¼ ì§ìíê³ , ì¡´ì¬íì§ ìë ìì±ì ì ê·¼íë©´ undefined를 ë°íí©ëë¤.
__filename (NodeJS)
node.__filenameì ì¤ì ìµì
ì ë¤ìê³¼ ê°ìµëë¤.
false: ì ìëì§ ììmock:'/index.js'ì ê°ìtrue: node.js __filename
íìì ìí´ íì±ëë ííì ë´ë¶ìì ì¬ì©ëë ê²½ì°, ì¤ì ìµì
ì trueë¡ ì²ë¦¬ë©ëë¤.
__resourceQuery (webpack-specific)
íì¬ ëª¨ëì 리ìì¤ ì¿¼ë¦¬ì
ëë¤. ë§ì½ ë¤ìê³¼ ê°ì import í¸ì¶ì´ ì´ë£¨ì´ì¡ë¤ë©´, 쿼리 문ìì´ì file.js íì¼ìì íì¸í ì ììµëë¤.
import "file.js?test";file.js
__resourceQuery === "?test";__webpack_public_path__ (webpack-specific)
ì¤ì ìµì
ì output.publicPathì ëì¼í©ëë¤.
__webpack_require__ (webpack-specific)
ìì ìì² í¨ìì ëë¤. ì´ ííìì íìì ìí´ ìì¡´ì±ì´ íì±ëì§ ììµëë¤.
__webpack_chunk_load__ (webpack-specific)
ë´ë¶ ì²í¬ ë¡ë© í¨ì. íëì ì¸ì를 ê°ì§ëë¤.
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 (err) {
error = err;
}
}
throw error;
};
import("./module-a").then((moduleA) => {
// ì´ì webpackì ì¬ì©ì ì ì __webpack_chunk_load__ 를 ì¬ì©íì¬ ì²í¬ë¥¼ ë¡ëí©ëë¤.
});__webpack_module__ (webpack-specific)
5.68.0+íì¬ì 모ëì ì ê·¼í ì ììµëë¤. ì격í ESMììë 모ëì ì¬ì©í ì ììµëë¤.
__webpack_module__.id (webpack-specific)
5.68.0+íì¬ ëª¨ë(module.id)ì IDì ì ê·¼í ì ììµëë¤. ì격í ESMììë 모ëì ì¬ì©í ì ììµëë¤.
__webpack_modules__ (webpack-specific)
모ë 모ëì ë´ë¶ ê°ì²´ì ëí ì ê·¼ì ì ê³µí©ëë¤.
__webpack_hash__ (webpack-specific)
ì»´íì¼ì í´ìì ëí ì ê·¼ì ì ê³µí©ëë¤.
__webpack_get_script_filename__ (webpack-specific)
function (chunkId)
idë¡ ì²í¬ì íì¼ ì´ë¦ì ì ê³µí©ëë¤.
í ë¹ ê°ë¥í기 ë문ì ë°íììì ì¬ì©íë íì¼ ì´ë¦ì ë³ê²½í ì ììµëë¤. ì를 ë¤ë©´ ì²í¬ë¥¼ ë¡ëí ë ìµì¢ ê²½ë¡ë¥¼ ê²°ì íë ë° ì¬ì©í ì ììµëë¤.
const oldFn = __webpack_get_script_filename__;
__webpack_get_script_filename__ = (chunkId) => {
const filename = oldFn(chunkId);
return `${filename}.changed`;
};__non_webpack_require__ (webpack-specific)
webpackì ìí´ íì±ëì§ ìë require í¨ì를 ìì±í©ëë¤. ê°ë¥í ê²½ì° ì ì ìì² í¨ìë¡ ë©ì§ ìì
ì ìííëë° ì¬ì©í ì ììµëë¤.
__webpack_global__ (webpack-specific)
5.104.0+__webpack_require__ì ë³ì¹ì
ëë¤. webpack ë²ë¤ì´ ë¤ì ë²ë¤ë§ë ë(ì: ì´ì ì ë²ë¤ë§ë ì¶ë ¥ì´ ì
ë ¥ì¼ë¡ ì¬ì©ë ë), CompatibilityPluginì ì¶©ëì ë°©ì§í기 ìí´ ì´ì ë²ë¤ì __webpack_require__ í¨ì ì´ë¦ì ë³ê²½í©ëë¤. __webpack_global__ì ì¬ì©íë©´ íì¬ ì»´íì¼ì __webpack_require__ í¨ìì íì ì ê·¼í ì ììµëë¤.
src/module.js
__webpack_global__.myProperty = "value";__webpack_exports_info__ (webpack-specific)
모ëìì, __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 ì¬ì©ì´ ë°íì ì¡°ê±´ì ë°ë¼ ë¬ë¼ì§ ì ìë ê²½ì° `nul l
- ì ë³´ê° ìì ê²½ì°
undefined
- exportê° ì¬ì©ëì§ ìë ê²½ì°
-
__webpack_exports_info__.<exportName>.provideInfoë ë¤ìê³¼ ê°ìµëë¤.- exportê° ì ê³µëì§ ìë ê²½ì°
false - exportê° ì ê³µëë ê²½ì°
true - export ê·ì ì´ ë°íì ì¡°ê±´ì ë°ë¼ ë¬ë¼ì§ ì ìë ê²½ì° `nul l
- ì ë³´ê° ìì ê²½ì°
undefined
- exportê° ì ê³µëì§ ìë ê²½ì°
-
nested exportìì ì ë³´ì ì ê·¼í ì ììµëë¤. ì.
__webpack_exports_info__.<exportName>.<exportName>.<exportName>.used -
exportê°
__webpack_exports_info__.<name>.canMangleë¡ ë§¹ê¸ë§ë ì ìëì§ íì¸í©ëë¤.
__webpack_is_included__ (webpack-specific)
5.16.0+주ì´ì§ 모ëì´ webpackì ìí´ ë²ë¤ ëì´ ìëì§ í ì¤í¸í©ëë¤.
if (__webpack_is_included__("./module-a.js")) {
// do something
}__webpack_base_uri__ (webpack-specific)
ë°íìì 기본 URI를 ë³ê²½í©ëë¤.
-
Type:
string -
Available: 5.21.0+
-
Example:
__webpack_base_uri__ = "https://example.com";
__webpack_runtime_id__
íì¬ ìí¸ë¦¬ì runtime idì ì ê·¼í©ëë¤.
ì´ê²ì webpackì ê³ ì 기ë¥ì´ë©° webpack 5.25.0ë¶í° ì¬ì©í ì ììµëë¤.
src/index.js
console.log(__webpack_runtime_id__ === "main");DEBUG (webpack-specific)
ì¤ì ìµì
debugì ëì¼í©ëë¤.



