Next 整合 svg 处理库

2024 年 11 月 21 日 星期四
/ ,
18
1
摘要
Next 整合 svg 处理库 svgr/webpack

Next 整合 svg 处理库

ps:svgr 直接允许将 svg 文件用作组件 直接调用

依赖:

  • Next: 14.2.13
  • @svgr/webpack: 8.1.0

使用步骤:

  1. 保存 svg 文件到项目目录中

  2. 安装依赖 pnpm install @svgr/webpack

  3. 配置 next.config.js:

    /** @type {import('next').NextConfig} */
    const nextConfig = {
      reactStrictMode: false,
      experimental: {
        turbo: {
          rules: {
            '*.svg': {
              loaders: ['@svgr/webpack'],
              as: '*.js',
            }
          }
        }
      },
    
      webpack(config) {
        // SVG 处理规则
        const fileLoaderRule = config.module.rules.find((rule) =>
          rule.test?.test?.('.svg'),
        )
    
        config.module.rules.push(
          {
            ...fileLoaderRule,
            test: /\.svg$/i,
            resourceQuery: /url/,
          },
          {
            test: /\.svg$/i,
            issuer: fileLoaderRule.issuer,
            resourceQuery: { not: [...fileLoaderRule.resourceQuery.not, /url/] },
            use: ['@svgr/webpack'],
          }
        )
        fileLoaderRule.exclude = /\.svg$/i
    
        return config
      }
    }
    
    module.exports = nextConfig
  4. 导入 svg 文件:

    import Icon from './Icon.svg';
    
    const MyComponent = () => {
      return (
        <div>
          <Icon width={50} height={50} />
        </div>
      );
    };
  5. 即可使用

  • Loading...
  • Loading...
  • Loading...
  • Loading...
  • Loading...