Contextë require('./locale/' + name + '.json')ì ê°ì ííìì íµí ìì²ì ëíë
ëë¤. ì´ë¬í ííìì ë§ëë©´, webpackì ëë í°ë¦¬ ('./locale/')ì ì ê· ííì (/^.*\.json$/)ì ì¶ë¡ í©ëë¤. ì»´íì¼ ì nameì ì ì ì기 ë문ì webpackì 모ë íì¼ì ë²ë¤ì 모ëë¡ í¬í¨í©ëë¤.
ContextReplacementPluginì ì¬ì©íë©´ ì¶ë¡ ë ì 보를 ì¤ë²ë¼ì´ë í ì ììµëë¤. íë¬ê·¸ì¸ì 구ì±íë ë°©ë²ìë ì¬ë¬ ê°ì§ê° ììµëë¤.
new webpack.ContextReplacementPlugin(
resourceRegExp: RegExp,
newContentResource?: string,
newContentRecursive?: boolean,
newContentRegExp?: RegExp
)리ìì¤(ëë í°ë¦¬)ê° resourceRegExpì ì¼ì¹íë©´, íë¬ê·¸ì¸ì 기본 리ìì¤, ì¬ê· íëê·¸ ëë ìì±ë ì ê·ìì ê°ê° newContentResource, newContentRecursive ëë newContextRegExpë¡ ë°ê¿ëë¤. newContentResourceê° ìëì ì¸ ê²½ì° ì´ì 리ìì¤ë¥¼ 기ì¤ì¼ë¡ í´ê²°ë©ëë¤.
ë¤ìì 모ë ì¬ì©ì ì ííë ìì ìì ì ëë¤.
new webpack.ContextReplacementPlugin(/moment[/\\]locale$/, /de|fr|hu/);moment/locale 컨í
ì¤í¸ë /de|fr|hu/ì ì¼ì¹íë íì¼ë¡ ì íë©ëë¤. ë°ë¼ì í´ë¹ localeë§ í¬í¨ë©ëë¤(ìì¸í ë´ì©ì ì´ ì´ì를 ì°¸ê³ íì¸ì).
new webpack.ContextReplacementPlugin(
resourceRegExp: RegExp,
newContentCallback: (data) => void
);newContentCallback í¨ììë ContextModuleFactoryì data ê°ì²´ê° ì ê³µëë©° ì ê³µë ê°ì²´ì request ìì±ì ë®ì´ì¸ ê²ì¼ë¡ ììë©ëë¤.
ì´ ì½ë°±ì ì¬ì©íì¬ ìì²ì ì ìì¹ë¡ ëì 리ë¤ì´ë ì í ì ììµëë¤.
new webpack.ContextReplacementPlugin(/^\.\/locale$/, (context) => {
if (!/\/moment\//.test(context.context)) return;
Object.assign(context, {
regExp: /^\.\/\w+/,
request: '../../locale', // ìëì ì¼ë¡ í´ê²°
});
});newContentResource ë° newContentCreateContextMap íë¼ë¯¸í°ë ì¬ì©í ì ììµëë¤.
new webpack.ContextReplacementPlugin(
resourceRegExp: RegExp,
newContentResource: string,
newContentCreateContextMap: object // ë°íì-ìì²(userRequest)ì ì»´íì¼-ìê°-ìì²(request)ì¼ë¡ 매í
);ì´ ë íë¼ë¯¸í°ë¥¼ í¨ê» ì¬ì©íì¬ ë³´ë¤ ëìíë ë°©ìì¼ë¡ ìì²ì 리ë¤ì´ë ì
í ì ììµëë¤. newContentCreateContextMapì ì¬ì©íë©´ ë°íì ìì²ì 매ííì¬ ê°ì²´ ííë¡ ìì²ì ì»´íì¼ í ì ììµëë¤.
new ContextReplacementPlugin(/selector/, './folder', {
'./request': './request',
'./other-request': './new-request',
});