Configuración de Rsbuild

Addfox se basa en Rsbuild para la construcción, puedes personalizar completamente la configuración de construcción.

Forma de configuración

Usa el campo rsbuild en addfox.config.ts:

// addfox.config.ts
import { defineConfig } from "addfox";

export default defineConfig({
  rsbuild: {
    // Tu configuración de Rsbuild
  },
});

Configuraciones comunes

Alias de rutas

Simplificar rutas de importación de módulos:

export default defineConfig({
  rsbuild: {
    source: {
      alias: {
        "@": "./app",
        "@/components": "./app/components",
        "@/utils": "./app/utils",
      },
    },
  },
});

Uso:

import { Button } from "@/components/Button";
import { formatDate } from "@/utils/date";

Definir variables globales

Inyectar constantes globales en tiempo de compilación:

export default defineConfig({
  rsbuild: {
    source: {
      define: {
        __VERSION__: JSON.stringify(process.env.npm_package_version),
        __DEV__: JSON.stringify(process.env.NODE_ENV === "development"),
      },
    },
  },
});

Uso en código:

console.log(__VERSION__);  // "1.0.0"
console.log(__DEV__);      // true / false

Configuración CSS

CSS Modules

export default defineConfig({
  rsbuild: {
    css: {
      modules: {
        localIdentName: "[local]--[hash:base64:5]",
      },
    },
  },
});

Sass

Instalar plugin:

pnpm add -D @rsbuild/plugin-sass sass

Configuración:

import { pluginSass } from "@rsbuild/plugin-sass";

export default defineConfig({
  plugins: [pluginSass()],
});

Ver Guía de integración de Sass para más detalles.

Less

Instalar plugin:

pnpm add -D @rsbuild/plugin-less less

Configuración:

import { pluginLess } from "@rsbuild/plugin-less";

export default defineConfig({
  plugins: [pluginLess()],
});

Ver Guía de integración de Less para más detalles.

Tailwind CSS

Ver Guía de integración de Tailwind CSS para más detalles.

Optimización de construcción

División de código

export default defineConfig({
  rsbuild: {
    performance: {
      chunkSplit: {
        strategy: "split-by-experience",
      },
    },
  },
});

Inlining de recursos

export default defineConfig({
  rsbuild: {
    output: {
      dataUriLimit: {
        svg: 4096,      // Inline SVG menor a 4KB
        font: 4096,     // Inline fuentes menor a 4KB
      },
    },
  },
});

Configuración en forma de función

Usar cuando se necesita control completo de la configuración:

export default defineConfig({
  rsbuild: (base, helpers) => {
    // base: Configuración predeterminada
    // helpers.merge: Herramienta de fusión profunda
    
    return helpers.merge(base, {
      source: {
        alias: {
          "@": "./app",
        },
      },
    });
  },
});

Agregar plugins

import { pluginReact } from "@rsbuild/plugin-react";
import { pluginSvgr } from "@rsbuild/plugin-svgr";

export default defineConfig({
  plugins: [
    pluginReact(),
    pluginSvgr(),
  ],
});

Ejemplo completo

import { defineConfig } from "addfox";
import { pluginReact } from "@rsbuild/plugin-react";

export default defineConfig({
  manifest: {
    name: "Mi Extensión",
    version: "1.0.0",
    manifest_version: 3,
  },
  
  plugins: [pluginReact()],
  
  rsbuild: {
    source: {
      alias: {
        "@": "./app",
        "@/components": "./app/components",
      },
      define: {
        __VERSION__: JSON.stringify("1.0.0"),
      },
    },
    
    output: {
      polyfill: "usage",
    },
    
    performance: {
      chunkSplit: {
        strategy: "split-by-experience",
      },
    },
    
    tools: {
      // Configuración de herramientas personalizada
    },
  },
});

Notas

  • La configuración se fusionará profundamente con la configuración predeterminada de Addfox
  • La forma de función puede controlar completamente la configuración, pero necesitas manejar la fusión tú mismo
  • Se recomienda usar helpers.merge para mantener la configuración predeterminada del framework

Enlaces relacionados

Configuraciones relacionadas

  • plugins - Configuración de plugins de Rsbuild