빌드
자 이제 드디어 완성이 된것 같습니다!
배포를 하기 전에 빌드를 해주어야 겠죠?
지금까지 개발모드에서는 실시간으로 빌드를 해줬기 때문에 속도가 매우 느렸습니다..
배포를 하게되면 달라진 속도를 볼 수 있습니다.
그전에 Webpack설정을 해주어야 합니다.
next도 웹팩이 내장되어 있기때문에 next.confog.js파일을 root에 만들어주면 된답니다.
webpack을 다루는 내용은 아니기 때문에 공식문서나 다른 게시물을 통해 학습해주세요.
const withBundleAnalyzer = require("@next/bundle-analyzer")({
enabled: process.env.ANALYZE === "true",
});
module.exports = withBundleAnalyzer({
compress: true, //파일 압축 플러그인
webpack(config, { webpack }) {
const prod = process.env.NODE_ENV === "production";
const plugins = [...config.plugins];
// if (prod) {
// plugins.push(new CompressPlugin());
// }
return {
...config,
mode: prod ? "production" : "development",
devtool: prod ? "hidden-source-map" : "eval",
plugins,
};
},
});
compress는 파일을 gzip형태로 압축해주는 역할을 하며 파일의 용량이 매우 줄어드게 될 것입니다.
@next/bundle-analyzer
위에서 웹팩설정을 할때 번들애널라이저를 추가해 주었는데 이또한 npm을 통해 설치해주어야 합니다.
빌드를 하게되면 페이지를 띄워주게 됩니다.
그 페이지는 잠시뒤에 확인해보겠습니다.
cross-env
process.env.ANALYZE === "true"
process.env.NODE_ENV === "production"
process.env에 접근하는 방법이 dotenv를 통해 진행했었는데,
사실 front에서도 dotenv를 설치해 다음방식으로 접근해줘도 괜찮습니다.
const dotenv = require('dotenv')
dotenv.config();
하지만 더 쉬운 방법이 있습니다.
pakage.json에서 직접 설정해주는 방법인데요.
"scripts": {
"dev": "next",
"build": "ANALYZE=true NODE_ENV=production next build"
},
npm run build를 통해 접근이 가능해요.
하지만, 이 방법은 window OS에서는 사용이 불가능하답니다....
그래서 cross-env라는 라이브러리를 설치해주어야 합니다.
npm i cross-env
그뒤 build명령어의 앞에 cross-env를 추가해주면 끝납니다!
"scripts": {
"dev": "next",
"build": "cross-env ANALYZE=true NODE_ENV=production next build"
},
npm run build를 통해 빌드를 진행해주면
@next/bundle-analyzer에 의해 다음과 같은 페이지가 뜨게 됩니다.


아래있는 client페이지는 상당히 중요한데, 이 크기가 줄어들수록 좋기 때문입니다.
보통 react-dom과 같은 큰 덩어리와 (concatenated)라고 되어있는 것들은 통합된것이기 때문에 건들일 것이 없을것입니다.
하지만, moment를 쓰게 됬다면 매우큰 박스가 생성되었을 것입니다.
그런것들을 정리해주는 작업을 해줘서 용량을 줄여나가면 됩니다.
보통 페이지당 1m가 초과되면 좋지 않습니다.
그 이상부터는 모바일에서 끊김이 발생하기 때문입니다..
자 이제 build된 결과물을 AWS를 통해 배포하는 과정을 진행해 보아요!
Last updated
Was this helpful?