Create-react-app으로 프로젝트를 만들어 환경설정을 하는 중,
ie 지원을 위한 polyfill을 불러오는데, 모듈이 필요한 브라우저에서만 선택적으로
불러오면 좋지 않을까하여 고민했던 방법을 정리합니다.
React.lazy
를 사용합니다.var isMsEdge = window.navigator.userAgent.indexOf('Edge/') > -1
를 사용합니다.Array.prototype.find
메서드가 존재하는 지 여부를 기준으로 import 합니다.if (document.documentMode) {
import(
/* webpackChunkName: "polyfill-ie" */
'react-app-polyfill/ie11'
);
}
if (!Array.prototype.find) {
import(
/* webpackChunkName: "polyfill-stable" */
'react-app-polyfill/stable'
);
}
index.js
파일에서 아래와 같이 import 했을 때, ie에서 제대로 작동하지 않았습니다.import './setupPolyfill';
// 기존 방식, 코드 분할 없이 모든 브라우저에서 모듈을 불러온다.
// import 'react-app-polyfill/ie11';
// import 'react-app-polyfill/stable';
html-webpack-plugin
을 사용해야 하는데 자세한 사항은 html-webpack-plugin github 을 살펴볼 예정입니다.// webpack.config.js
module.exports = {
entry: {
main: './src/index.js',
polyfill: './src/setupPolyfill.js'
}
}