[카테고리:] 미분류

  • Snowpack 라이브러리 총정리

    개요와 현재 상태

    Snowpack은 빠른 웹 개발을 위한 최신 프론트엔드 빌드 도구였지만, 2022년 4월 20일부로 공식적으로 더 이상 적극적으로 유지보수되지 않으며 새로운 프로젝트에는 권장되지 않습니다[1]. 현재 개발팀은 Snowpack의 대안으로 Vite를 추천하고 있습니다[1].

    Snowpack은 “번들 없는 개발(Unbundled Development)”이라는 혁신적인 접근 방식으로 주목받았던 도구입니다[2]. Webpack이나 Parcel과 같은 기존의 무겁고 복잡한 번들러와는 달리, JavaScript의 네이티브 모듈 시스템(ESM)을 활용하여 불필요한 작업을 피하고 프로젝트 크기에 관계없이 빠른 속도를 유지하는 것이 특징이었습니다[1][2].

    핵심 특징과 동작 원리

    번들 없는 개발(Unbundled Development)

    Snowpack의 가장 큰 특징은 개발 중에 번들링을 하지 않는다는 점입니다[2][3]. 전통적인 빌드 도구들이 파일 하나가 변경될 때마다 전체 애플리케이션의 모든 조각들을 다시 번들링하는 반면, Snowpack은 각 파일을 개별적으로 빌드만 하고 번들되지 않은 상태로 개발 서버에서 제공합니다[4].

    동작 방식:

    1. 각 파일을 한 번만 빌드하고 영구적으로 캐시합니다[1]
    2. 파일이 변경되면 해당 파일만 다시 빌드합니다[1]
    3. ESM import/export 구문을 통해 브라우저에서 개별적으로 로드됩니다[3]
    4. 시간 복잡도 O(1)의 빌드 시스템을 구현합니다[5]

    의존성 모듈 처리

    NPM 패키지는 대부분 CommonJS를 사용하여 브라우저에서 직접 실행할 수 없습니다[6]. Snowpack은 이 문제를 다음과 같이 해결합니다:

    1. 애플리케이션을 스캔하여 node_modules의 의존성 모듈을 확인합니다[6][3]
    2. 모든 의존성 모듈을 개별 JavaScript 파일로 변환합니다[6][3]
    3. 변환된 파일들은 브라우저에서 직접 실행 가능한 ESM 형태로 제공됩니다[6]
    // 변환 예시
    node_modules/react => http://localhost:8080/web_modules/react.js
    node_modules/vue => http://localhost:8080/web_modules/vue.js

    주요 장점

    1. 빠른 개발 서버 시작

    • 50ms 이하에서 개발 서버가 시작됩니다[1][2]
    • 프로젝트 크기가 개발 속도에 영향을 주지 않습니다[6][7]

    2. 즉시 반영되는 변경사항

    • HMR(Hot Module Replacement)과 Fast Refresh 지원[1][2]
    • React, Preact, Svelte에서 컴포넌트 상태를 유지하면서 빠른 리프레시 가능[4]

    3. 기본 지원 기능

    • JSX, TypeScript, React, Preact, CSS Modules 등을 기본 지원[1]
    • Babel, Sass, MDX 등 다양한 플러그인 지원[1]

    설치 및 사용법

    설치

    # npm
    npm install --save-dev snowpack
    
    # yarn
    yarn add --dev snowpack
    
    # pnpm
    pnpm add --save-dev snowpack

    기본 명령어

    # 개발 서버 시작
    snowpack dev
    
    # 프로덕션 빌드
    snowpack build
    
    # 도움말
    snowpack --help

    설정 파일 (snowpack.config.js)

    module.exports = {
      mount: {
        public: '/',      // 정적 파일 경로
        src: '/_dist_'    // 소스 코드 경로
      },
      plugins: [
        '@snowpack/plugin-vue',
        '@snowpack/plugin-sass'
      ],
      devOptions: {
        port: 8080,
        open: 'default'
      },
      buildOptions: {
        out: './build'
      }
    };

    다른 도구들과의 비교

    Snowpack vs Webpack

    • Webpack: 복잡한 설정, 강력한 기능, 느린 개발 서버[8]
    • Snowpack: 간단한 설정, 빠른 개발 서버, 제한적인 기능[8]

    Snowpack vs Vite

    Vite가 Snowpack보다 선택받는 이유[9]:

    • 더 나은 유연성과 품질 제공
    • Rollup 기반으로 더 강력한 플러그인 생태계
    • CSS 코드 스플리팅과 소스맵 등의 기능에서 더 적은 코드 작성 필요
    • 더 안정적인 유지보수와 커뮤니티 지원

    프로덕션 빌드와 최적화

    Snowpack은 개발 시에는 번들 없는 접근 방식을 사용하지만, 프로덕션 빌드에서는 최적화된 번들링을 지원합니다[1][10]:

    • esbuild를 통한 내장 최적화 파이프라인[10]
    • Webpack이나 Rollup 플러그인을 통한 추가 최적화[10]
    • 코드 분할, 트리 쉐이킹, 데드 코드 제거 등 지원[10]

    현재 상황과 대안

    지원 종료

    Snowpack은 2022년 4월부로 공식 지원이 종료되었으며[1][11], 개발팀은 다음과 같은 대안들을 권장합니다:

    • Vite (주요 권장 사항)[1]
    • esbuild[1]
    • Parcel[1]

    대안 선택 가이드

    Vite를 선택해야 하는 이유[12][9]:

    • 더 빠른 채택률과 활발한 커뮤니티
    • Rollup 기반의 강력한 플러그인 생태계
    • 더 나은 개발자 경험과 설정 용이성
    • 지속적인 업데이트와 지원

    결론

    Snowpack은 번들 없는 개발이라는 혁신적인 개념을 도입하여 프론트엔드 빌드 도구의 패러다임을 바꾸는 데 중요한 역할을 했습니다[2][3]. 빠른 개발 서버 시작 시간과 즉시 반영되는 변경사항으로 개발 경험을 크게 향상시켰지만[1][2], 현재는 공식 지원이 종료된 상태입니다[1][11].

    새로운 프로젝트에서는 Snowpack 대신 Vite와 같은 활발히 유지보수되는 대안을 사용하는 것이 권장됩니다[1][9]. 하지만 Snowpack이 제시한 핵심 아이디어들은 현재의 최신 빌드 도구들에 계승되어 발전하고 있습니다.

    출처
    [1] Snowpack https://www.snowpack.dev
    [2] How Snowpack Works https://www.snowpack.dev/concepts/how-snowpack-works
    [3] Snowpack, 더 빠른 웹 개발을 위한 새로운 방식의 프론트엔드 빌드 도구 https://heropy.blog/2020/10/31/snowpack/
    [4] create-react-app에서 snowpack으로의 마이그레이션 https://blog.rhostem.com/posts/2020-12-16-migration-from-cra-to-snowpack
    [5] Webpack 보다 더 빠른 빌드툴, Snowpack – nana.log https://yrnana.dev/post/2021-02-11-webpack-snowpack/
    [6] [] Snowpack이란? – MOONCO – 티스토리 https://defineall.tistory.com/915
    [7] snowpack으로 React 시작하기 https://hjuu.tistory.com/6
    [8] webpack vs vite vs parcel vs snowpack | “웹 개발 번들러” npm … https://npm-compare.com/ko-KR/parcel,snowpack,vite,webpack
    [9] SvelteKit에는 왜 Vite가 선택되었을까? “Vite VS Snowpack” https://egg-programmer.tistory.com/310?category=862588
    [10] Optimize & Bundle for Production – Snowpack https://www.snowpack.dev/guides/optimize-and-bundle
    [11] 번들러의 발전과 역사 (HTTP/1.1, webpack, rollup, parcel, snowpack … https://deemmun.tistory.com/87
    [12] Vite vs. Snowpack: A comparison of frontend build tools https://blog.logrocket.com/vite-vs-snowpack-a-comparison-of-frontend-build-tools/
    [13] [Bundler] JavaScript 번들러 그리고 Webpack , Parcel , Rollup , Vite … https://velog.io/@wynter_j/Bundler-JavaScript-%EB%B2%88%EB%93%A4%EB%9F%AC-%EA%B7%B8%EB%A6%AC%EA%B3%A0-Webpack-Parcel-Rollup-Vite…-2
    [14] Webpack, Rollup, Parcel, and Snowpack with Examples https://dev.to/renukapatil/module-bundlers-explained-webpack-rollup-parcel-and-snowpack-with-examples-4j5
    [15] Snowpark: 관리형 컨테이너, ML API, Python 런타임, DevOps 등 https://www.snowflake.com/ko/blog/snowpark-ml-api-python-develops-more/
    [16] Snowpack 써보기 | imch.dev https://imch.dev/posts/a-experiment-of-snowpack/
    [17] snowpack – velog https://velog.io/@jude-ui/snowpack
    [18] 차세대 빌드 도구 비교 – TOAST UI https://ui.toast.com/weekly-pick/ko_20220127
    [19] Snowpack + Svelte 탬플릿 설치법이 변… – Inflearn | Community Q&A https://www.inflearn.com/en/community/questions/145391/snowpack-svelte-%ED%83%AC%ED%94%8C%EB%A6%BF-%EC%84%A4%EC%B9%98%EB%B2%95%EC%9D%B4-%EB%B3%80%EA%B2%BD%EB%90%98%EC%96%B4-%EC%83%88-%EB%B0%A9%EB%B2%95%EC%9D%84-%EC%9A%94%EC%95%BD-%ED%96%88%EC%8A%B5%EB%8B%88%EB%8B%A4
    [20] Vite 이야기 (feat. Svelte) – velog https://velog.io/@teo/vite?trk=public_post-text
    [21] Mirai 등장: 실제 악용에 무방비로 노출된 IoT 디바이스 – Akamai https://www.akamai.com/ko/blog/security-research/active-exploitation-mirai-geovision-iot-botnet
    [22] SNOWPACK https://snowpack.slf.ch
    [23] [PDF] Evaluation of high resolution snowpack simulations from global https://egusphere.copernicus.org/preprints/2024/egusphere-2024-791/egusphere-2024-791-manuscript-version2.pdf
    [24] Quick Start – Snowpack https://www.snowpack.dev/tutorials/quick-start
    [25] Snowflake CLI 설치하기 https://docs.snowflake.com/ko/developer-guide/snowflake-cli/installation/installation
    [26] Snowpack 에서 지원하는 Rollup 플러그인은 왜 쓸까요? – 인프런 https://www.inflearn.com/community/questions/151236/snowpack-%EC%97%90%EC%84%9C-%EC%A7%80%EC%9B%90%ED%95%98%EB%8A%94-rollup-%ED%94%8C%EB%9F%AC%EA%B7%B8%EC%9D%B8%EC%9D%80-%EC%99%9C-%EC%93%B8%EA%B9%8C%EC%9A%94
    [27] snowpack.config.js https://snowpack-git-config-api-finalize.pikapkg.vercel.app/reference/configuration
    [28] FredKSchott/snowpack: ESM-powered frontend build tool … – GitHub https://github.com/FredKSchott/snowpack
    [29] Snowpack: Snowpack 안정성과 눈사태 위험 뒤에 숨은 과학 https://fastercapital.com/ko/content/Snowpack–Snowpack-%EC%95%88%EC%A0%95%EC%84%B1%EA%B3%BC-%EB%88%88%EC%82%AC%ED%83%9C-%EC%9C%84%ED%97%98-%EB%92%A4%EC%97%90-%EC%88%A8%EC%9D%80-%EA%B3%BC%ED%95%99.html
    [30] webpack vs vite vs parcel vs snowpack – NPM Compare https://npm-compare.com/parcel,snowpack,vite,webpack
    [31] [PRESET] preact + snowpack + typescript – velog https://velog.io/@sunhwa508/building-react-with-snowpack
    [32] [2025-IMO-08] IMO GHG 감축 조치에 관한 FAQ – 한국선급 https://www.krs.co.kr/kor/Exclusive/Tech_ETC_View.aspx?MRID=279&TechCode=1&NO=3629
    [33] [2024-IMO-03] MARPOL Annex V 개정에 따른 총톤수 100톤 이상의 … https://www.krs.co.kr/kor/Exclusive/Tech_ETC_View.aspx?MRID=279&NO=3574
    [34] ASEC-ServiceNow 제품군 보안 업데이트 권고(CVE-2024-5217, CVE … https://www.ahnlab.com/ko/contents/asec/advice/3454
    [35] RISS 검색 – 국내학술지논문 상세보기 https://m.riss.kr/search/detail/DetailView.do?p_mat_type=1a0202e37d52c72d&control_no=1715a0435c708d447ecd42904f0c5d65