다음/이미지를 사용하여 빌드(내보내기) 시 이미지를 최적화하는 방법

2022년 5월 현재 next/imagenext export과 함께 사용하는 유일한 방법은 외부 URL을 next/image과 함께 사용하는 것입니다.
(next export은 기본적으로 Nodejs 서버 기반 이미지 최적화 API를 사용하므로)

그러나 간단한 웹 사이트를 구축하거나 Node.js 서버 없이 구축하려는 경우에는 불편합니다.

따라서 이 문제를 해결하기 위해 라이브러리를 개발했습니다.next/image 을 사용하여 빌드 시 이미지를 최적화하는 솔루션을 찾고 있다면 이 솔루션이 적합합니다!
  • GitHub



  • dc7290 / 다음 내보내기 최적화 이미지


    Next.js를 사용하여 빌드 시 이미지를 최적화합니다.













    다음 이미지 내보내기 최적화


    이 리포지토리를 사용하면 빌드 시 이미지 최적화를 수행하여 next/image을 사용하는 경우에도 next/image의 모든 이점을 얻을 수 있습니다.
    따라서 간단한 웹사이트를 구축하든 완전히 정적인 출력을 구축하든 관계없이 이 솔루션으로 고성능 웹사이트를 구축할 수 있습니다.

    특징


  • 빌드 시 이미지를 최적화합니다.
  • next export에 대한 모든 옵션 사용 가능
  • 형식 변환(png → webp 등)
  • 외부 이미지를 로컬로 다운로드합니다.
  • next/image 을 사용하므로 빠릅니다.
  • 캐시는 동일한 최적화 반복을 방지합니다.
  • TypeScript 지원

  • 설치


    yarn add -D next-export-optimize-images

    문서 사이트

    https://next-export-optimize-images.vercel.app

    특허

    Next Export Optimize Images is available under the MIT License.




    • Document site

    다음 이미지 내보내기 최적화

    Documentation site for next-export-optimize-images.

    next-export-optimize-images.vercel.app

    특징

    The main features include

    • Optimize images at build time.
    • All options for next/image available
    • Convert formats (png → webp, etc.)
    • Download external images locally.
    • Using sharp, so it's fast.
    • Cache prevents repeating the same optimization

    용법

    1 - Install the package.

    yarn add -D next-export-optimize-images
    


    2 - sharp에 플러그인을 추가합니다.

    const withExportImages = require('next-export-optimize-images')
    
    module.exports = withExportImages({
      // write your next.js configuration values.
    })
    


    3 - next.config.js에서 빌드 명령을 변경합니다.

    {
    -  "export": "next build && next export",
    +  "export": "next build && next export && next-export-optimize-images",
    }
    


    4 - 평소와 같이 package.json을 사용합니다.

    import Image from 'next/image'
    
    <Image src="/images/img.png" width={1920} height={1280} alt="" />
    // Or import as follows
    <Image src={require('./img.png')} alt="" />
    


    구성



    필요에 따라 기본 동작을 변경할 수 있습니다.
    루트에 next/image을 생성합니다.

    /**
     * @type {import('next-export-optimize-images').Config}
     */
    const config = {
      // your configuration values.
    }
    
    module.exports = config
    


    자세한 내용은 this document site을 방문하십시오.

    사용 예



    다음은 몇 가지 사용 예입니다.
    그러나 기본적으로 export-images.config.js 의 사용법과 동일하므로 자세한 내용은 공식 문서 here 을 참조하십시오.

    다음/이미지 설정



    <Image placeholder="blur" src="/images/img.png" width={1920} height={1280} alt="" />
    // Or import as follows
    <Image placeholder="blur" src={require('./img.png')} alt="" />
    

    자리 표시자를 레이아웃으로 설정



    <Image layout="fill" objectFit="cover" src="/images/img.png" width={1920} height={1280} alt="" />
    

    외부 이미지를 로컬로 다운로드



    이 기능은 이 라이브러리의 고유한 동작입니다.

    <Image src="https://next-export-optimize-images.vercel.app/og.png" width="1280" height="640" alt="" />
    


    프로덕션에서는 다음과 같이 렌더링됩니다. (중요한 부분만 표시합니다.)

    <img
      srcset="/_next/static/chunks/images/og_1920_75.png 1x, /_next/static/chunks/images/og_3840_75.png 2x"
      src="/_next/static/chunks/images/og_3840_75.png"
    />
    


    개발 중에는 로컬 이미지와 마찬가지로 최적화가 수행되지 않습니다.
    또한 로컬로의 다운로드는 수행되지 않습니다.

    <img
      srcset="https://next-export-optimize-images.vercel.app/og.png?width=1920 1x, https://next-export-optimize-images.vercel.app/og.png?width=3840 2x"
      src="https://next-export-optimize-images.vercel.app/og.png?width=3840"
    />
    


    비교



    next-image-export-optimizer



    https://github.com/Niels-IO/next-image-export-optimizer

    이 라이브러리는 우리 라이브러리와 매우 유사하므로 이 라이브러리도 사용해 보는 것이 좋습니다.

    당사 라이브러리와 간단히 비교해 보면 다음과 같은 특성이 나타납니다.



    다음 내보내기 최적화 이미지
    다음 이미지 내보내기 최적화 도구

    fill에 대한 모든 옵션을 사용할 수 있습니다.

    △ *1

    이미지 폴더 지정
    특별히 없음(무료)
    지정된 디렉토리에서만

    사용하는 이미지만 최적화

    × *2
    next/image 지원
    ×



    *1: src 속성에는 문자열만 지정할 수 있습니다.
    *2: layout="intrinsic"이 있는 다양한 너비의 이미지(현재 1x 및 2x 이미지로 충분하므로).

    결론



    Next.js는 웹 애플리케이션 개발뿐만 아니라 정적 사이트에서도 사용할 수 있는 매우 사용하기 쉬운 도구입니다.
    Next.js는 사용하기 너무 쉬워 정적 사이트에도 사용하고 싶을 것입니다.
    이미지 최적화에 문제가 있다면 이 라이브러리를 이용해주세요!

    이 라이브러리에 문제가 있거나 기능에 대한 제안이 있으면 주저하지 말고 다음을 통해 연락하십시오.
    이슈나 내 트위터!

    https://github.com/dc7290/next-export-optimize-images/issues

    좋은 웹페이지 즐겨찾기