1. 라이브러리 만들기
프로젝트가 많아지며 공통으로 사용할 코드들을 분리해두고
각 프로젝트에 적용하여 사용해야 하는 상황이 생겼습니다.
NPM에 올려서 사용할 것도 아니고
내부적으로 사용할 목적이기에
min.js 파일로 만들어서 적용해보려고 합니다.
1-1. Rollup 설치
기본적인 npm 사용을 위해
명령어로 node_modules를 생성합니다.
npm i
rollup 번들러를 사용합니다.
npm install rollup rollup-plugin-terser
- [src]
- util.js (min.js로 만들 파일)
- package.json
- rollup.config.js
폴더 구조를 이렇게 만듭니다.
1-2. rollup.config.js
import { terser } from "rollup-plugin-terser";
export default [
{
input: "src/Util.js",
output: {
file: "dist/util.min.js",
format: "esm", // universal module: works with CommonJS, AMD, script tag
name: "Util", // global var name when included via <script>
// exports: "default",
},
plugins: [
terser(),
],
external: [],
},
];
간단하게 만드는 것이라 많은 설정이 필요하진 않았습니다.
이 설정대로 만들면 dist 폴더에 util.min.js 가 생깁니다.
format은 esm 으로 했습니다. 다른 설정으로도 가능합니다. (cjs 등)
※ 참고, 모듈 시스템
https://deemmun.tistory.com/86
번들러 파헤치기 1 - 모듈 시스템의 발전과 역사 (commonJS, AMD, UMD, ESM-esmodule)
개인적으로 클라이언트 환경에서 가장 진입장벽이 높게 느껴지는 부분은 빌드 환경인 것 같습니다.다른 부분은 사실 실무에서도 자주 다루고 접하다 보니 금방 익숙해지는 반면, 프론트엔드의
deemmun.tistory.com
exports를 default로 하면 여러 파일을 합쳐서 export를 하기 어렵더군요.
export { a, b }
export default a;
1-3. 생성
src 폴더 밑에 이렇게 파일들을 만들겠습니다.
Util.js, Sum.js
1-3-1. Sum.js
여긴 간단히 sum 함수를 만들겠습니다.
const Sum = {
toSum(arr) {
let res = 0;
for (let i = 0; i < arr.length; i++) {
res += arr[i];
}
return res;
},
// 추가 작성
};
export default Sum;
1-3-2. Util.js
import Sum from "./Sum";
export { Sum };
이렇게 작성합니다.
1-3-3. min.js
npx rollup -c
하고 min.js를 생성합니다.
이렇게 만들어진 파일을 다른 프로젝트 lib에 넣고 사용합니다.
공통적으로 사용할 코드만 담았기에
여러 프로젝트에서 사용할 수 있을겁니다.
※ 참고, 번들러의 발전과 역사에 관한 글
https://deemmun.tistory.com/87
번들러 파헤치기 2 - 번들러의 발전과 역사 (HTTP/1.1, webpack, rollup, parcel, snowpack, esbuild, vite, turbopack)
본 글은 번들러 파헤치기 시리즈의 2부로, 번들러의 발전 및 역사를 주제로 각 번들러에 대한 설명을 진행하려고 합니다.2부에서도 CommonJS(cjs), esmodule, ESM (mjs)에 대한 내용이 등장하기 때문에 이
deemmun.tistory.com