Skip to content
Compare
Choose a tag to compare
@ssi02014 ssi02014 released this 15 Jan 20:37
· 9 commits to main since this release
388700e

Release

@modern-kit/utils v2.0.0부터 SubPath를 지원합니다.


SubPath

  • 전체 모듈을 불러오는 것이 아닌 필요한 모듈만 직접 가져오기 때문에 불 필요한 코드를 불러오는 것을 방지할 수 있으며, 번들러가 모듈을 읽고, 식별하는 과정을 최적화 할 수 있습니다.
  • 번들러가 개별 모듈을 더 잘 식별할 수 있기 때문에, Tree-shaking이 더욱 효과적으로 동작하도록 개선 할 수 있습니다. 이는 결과적으로 최종 번들 크기를 줄이는데 도움이 됩니다.
// 일반 케이스
import { flatten } from '@modern-kit/utils';

const arr = [1, [2, [3, 4], 5]];
const result = flatten(arr); // [1, 2, 3, 4, 5]
// SubPath 사용 예시
// tsconfig moduleResolution 옵션이 `bundler`일 경우
import { flatten } from '@modern-kit/utils/array/flatten';
// tsconfig moduleResolution 옵션이 `node`일 경우
import { flatten } from '@modern-kit/utils/dist/array/flatten';

const arr = [1, [2, [3, 4], 5]];
const result = flatten(arr); // [1, 2, 3, 4, 5]

Next.js 개발 환경에서 SubPath 사용 차이

SubPath 사용하지 않은 경우

import { flatten } from "@modern-kit/utils";

export default function Home() {
  console.log(flatten([1, [2], [3], [4], [5]]));

  return (
    <div>{}</div>
  );
}
스크린샷 2025-01-16 오전 5 13 20

첫 번째 이미지는 SubPath를 사용하지 않은 경우입니다. 전체 모듈에서 flatten을 가져온 경우입니다.
위 이미지와 같이 @modern-kit/utils의 모든 모듈을 불러오는 것을 확인 할 수 있습니다.


SubPath 사용한 경우

// tsconfig moduleResolution 옵션이 `node`
import { flatten } from "@modern-kit/utils/dist/array/flatten";

export default function Home() {
  console.log(flatten([1, [2], [3], [4], [5]]));

  return (
    <div>{}</div>
  );
}
스크린샷 2025-01-16 오전 5 12 10

두 번째 이미지는 SubPath를 사용한 경우입니다. 개별 경로를 통해 flatten을 가져온 경우입니다.
첫 번째 케이스와 다르게 사용하는 @modern-kit/utilsflatten만 불러오는 것을 확인 할 수 있습니다.

이러한 차이는 개발 서버 성능에 영향을 미칠 수 있습니다.