NormalModuleReplacementPluginì ì¬ì©íë©´ resourceRegExpì ì¼ì¹íë 리ìì¤ë¥¼ newResourceë¡ êµì²´í ì ììµëë¤. newResourceê° ìëì ì¸ ê²½ì° ì´ì 리ìì¤ë¥¼ 기ì¤ì¼ë¡ í´ê²°ë©ëë¤. newResourceê° í¨ìì¸ ê²½ì° ì ê³µë 리ìì¤ì ìì² ìì±ì ë®ì´ì¸ ê²ì¼ë¡ ììë©ëë¤.
ì´ë ë¹ë ê°ì ë¤ë¥¸ ëìì íì©íë ë° ì ì©í ì ììµëë¤.
new webpack.NormalModuleReplacementPlugin(resourceRegExp, newResource);resourceRegExpë íì¸ë 리ìì¤ê° ìëë¼ ì½ëì ìì±í ìì²ì ëí´ í
ì¤í¸ ë©ëë¤. ì를 ë¤ì´, import sum from './sum' ì½ëê° ìì ë './sum.js' ëì './sum'ì´ í
ì¤í¸ì ì¬ì©ë©ëë¤.
ëí Windows를 ì¬ì©í ëë ë¤ë¥¸ í´ë êµ¬ë¶ ê¸°í¸ë¥¼ ì¬ì©í´ì¼ í©ëë¤. ì를 ë¤ì´ /src\/environments\/environment\.ts/ë Windowsìì ìëíì§ ì기 ë문ì, /src[\\/]environments[\\/]environment\.ts/,를 ëì ì¬ì©í´ì¼ í©ëë¤.
ê°ë° íê²½ì©ì¼ë¡ ë¹ëí ë í¹ì 모ëì êµì²´í©ëë¤.
some/path/config.development.module.js ì¤ì íì¼ê³¼ some/path/config.production.module.jsì íë¡ëì
ì© í¹ì ë²ì ì´ ìë¤ë©´
íë¡ëì ì©ì¼ë¡ ë¹ëí ë ë¤ì íë¬ê·¸ì¸ì ì¶ê°í©ëë¤.
new webpack.NormalModuleReplacementPlugin(
/some\/path\/config\.development\.js/,
'./config.production.js'
);ì§ì ë íê²½ì ë°ë¥¸ ì¡°ê±´ë¶ ë¹ëì ê´í ë´ì©ì ëë¤.
ë¤ë¥¸ ë¹ë ëìì ëí í¹ì ê°ì´ í¬í¨ë ì¤ì ì ìíë¤ê³ ê°ì í´ ë³´ê² ìµëë¤.
module.exports = function (env) {
var appTarget = env.APP_TARGET || 'VERSION_A';
return {
plugins: [
new webpack.NormalModuleReplacementPlugin(/-APP_TARGET$/, function (
resource
) {
resource.request = resource.request.replace(
/-APP_TARGET/,
`-${appTarget}`
);
if (resource.createData) {
resource.createData.request = resource.request;
}
}),
],
};
};2ê°ì ì¤ì íì¼ì ìì±í©ëë¤.
app/config-VERSION_A.js
export default {
title: 'I am version A',
};app/config-VERSION_B.js
export default {
title: 'I am version B',
};ê·¸ë¤ì ì ê· ííììì ì°¾ê³ ìë í¤ìë를 ì¬ì©íì¬ í´ë¹ ì¤ì ì ê°ì ¸ìµëë¤.
import config from 'app/config-APP_TARGET';
console.log(config.title);ì´ì ë¹ëíë ¤ë ëìì ë°ë¼ ì¬ë°ë¥¸ ì¤ì ì ê°ì ¸ì¬ ì ììµëë¤.
npx webpack --env APP_TARGET=VERSION_A
=> 'I am version A'
npx webpack --env APP_TARGET=VERSION_B
=> 'I am version B'