Skip to content

NextJS中文文档 - Package Bundling

打包外部包可以显著提高应用程序的性能。

分析 JavaScript 包

@next/bundle-analyzer 是 Next.js 的一个插件,可帮助你管理应用程序包的大小。它生成每个包及其依赖项大小的可视化报告。你可以使用这些信息删除大型依赖项,拆分或懒加载你的代码。

安装

通过运行以下命令安装插件:

bash
npm i @next/bundle-analyzer
# 或
yarn add @next/bundle-analyzer
# 或
pnpm add @next/bundle-analyzer

然后,将捆绑分析器的设置添加到你的 next.config.js 中。

js
/** @type {import('next').NextConfig} */
const nextConfig = {}

const withBundleAnalyzer = require('@next/bundle-analyzer')({
  enabled: process.env.ANALYZE === 'true',
})

module.exports = withBundleAnalyzer(nextConfig)

生成报告

运行以下命令来分析你的包:

bash
ANALYZE=true npm run build
# 或
ANALYZE=true yarn build
# 或
ANALYZE=true pnpm build

报告将在你的浏览器中打开三个新标签,你可以进行检查。定期评估应用程序的包可以帮助你随着时间的推移维持应用程序性能。

优化包导入

一些包,如图标库,可能会导出数百个模块,这可能会在开发和生产环境中造成性能问题。

你可以通过在 next.config.js 中添加 optimizePackageImports 选项来优化这些包的导入方式。此选项将只加载你实际使用的模块,同时仍然提供编写具有多个命名导出的导入语句的便利。

js
/** @type {import('next').NextConfig} */
const nextConfig = {
  experimental: {
    optimizePackageImports: ['icon-library'],
  },
}

module.exports = nextConfig

Next.js 还会自动优化一些库,因此它们不需要包含在 optimizePackageImports 列表中。查看完整列表

🎉有任何问题,欢迎联系我

WeChat QR Code
WeChat
QQ QR Code
QQ

赣ICP备2023003243号