Vite bundler for Nuxt applications providing seamless integration between Nuxt's framework and Vite's build system
—
Quality
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
PostCSS integration and CSS handling for both development and production builds, including plugin configuration and style optimization.
Resolves and configures CSS processing options including PostCSS plugins based on Nuxt configuration.
/**
* Resolve CSS processing options including PostCSS plugins
* Loads and configures PostCSS plugins from Nuxt configuration
* @param nuxt - Nuxt instance with PostCSS configuration
* @returns Promise resolving to Vite CSS configuration object
*/
function resolveCSSOptions(nuxt: Nuxt): Promise<ViteConfig['css']>;Usage Example:
import { resolveCSSOptions } from "@nuxt/vite-builder/css";
import type { Nuxt } from "@nuxt/schema";
// Resolve CSS options from Nuxt configuration
const cssConfig = await resolveCSSOptions(nuxt);
// The returned config includes:
// - PostCSS plugins configuration
// - CSS preprocessing options
// - Development sourcemap settingsAutomatically loads and configures PostCSS plugins based on Nuxt's postcss configuration.
/**
* PostCSS configuration structure for Vite
*/
interface PostCSSConfig {
/** Array of configured PostCSS plugins */
plugins: Plugin[];
}
/**
* PostCSS plugin sorting function
* @param config - PostCSS configuration with plugins and order
* @returns Sorted array of plugin names
*/
function sortPlugins(config: {
plugins: Record<string, any>;
order?: string[] | ((names: string[]) => string[]);
}): string[];Plugin Loading Process:
// PostCSS plugins are loaded from Nuxt configuration
// Example nuxt.config.ts
export default defineNuxtConfig({
postcss: {
plugins: {
'autoprefixer': {},
'cssnano': {
preset: 'default'
},
'tailwindcss': {}
},
order: ['tailwindcss', 'autoprefixer', 'cssnano']
}
});Dynamically loads PostCSS plugins from the module system with proper error handling.
Plugin Loading Features:
// Plugin loading example (internal process)
for (const pluginName of sortPlugins(postcssOptions)) {
const pluginOptions = postcssOptions.plugins[pluginName];
if (!pluginOptions) continue;
// Attempt to load plugin from various module directories
for (const parentURL of nuxt.options.modulesDir) {
const pluginFn = await jiti.import(pluginName, {
parentURL: parentURL.replace(/\/node_modules\/?$/, ''),
try: true,
default: true
});
if (typeof pluginFn === 'function') {
css.postcss.plugins.push(pluginFn(pluginOptions));
break;
}
}
}The CSS processing system includes support for various CSS preprocessors and features.
Supported CSS Features:
CSS sourcemap configuration for development debugging.
// CSS sourcemap configuration
const cssConfig = {
devSourcemap: !!nuxt.options.sourcemap.client, // Client sourcemaps
// Server-side CSS processing also respects server sourcemap settings
};Sourcemap Features:
Advanced CSS handling for production builds with extraction and inlining capabilities.
/**
* SSR styles plugin options for CSS extraction
*/
interface SSRStylesPluginOptions {
/** Source directory for relative path resolution */
srcDir: string;
/** Set of chunk IDs that should have inlined CSS */
chunksWithInlinedCSS: Set<string>;
/** Function or boolean determining CSS inlining strategy */
shouldInline?: ((id?: string) => boolean) | boolean;
/** Component definitions for CSS extraction */
components: Component[];
/** Mapping of CSS files to client chunks */
clientCSSMap: Record<string, Set<string>>;
/** Application entry point */
entry: string;
/** Global CSS file paths */
globalCSS: string[];
/** Build mode: server or client */
mode: 'server' | 'client';
}Production CSS optimization including minification and purging.
Optimization Features:
Support for CSS-in-JS solutions commonly used with Vue.js.
Supported CSS-in-JS:
Management of global CSS files and their injection into the build.
// Global CSS configuration
const globalCSS = [
'~/assets/css/main.css',
'~/assets/scss/variables.scss',
'@/styles/global.css'
];
// These files are:
// 1. Processed through PostCSS
// 2. Injected into the application
// 3. Available across all componentsHandling of CSS-related assets like fonts, images, and other resources.
Asset Processing:
Comprehensive error handling for CSS processing issues.
Error Types Handled:
// Error handling example
if (typeof pluginFn !== 'function') {
console.warn(`[nuxt] could not import postcss plugin \`${pluginName}\`. Please report this as a bug.`);
}Install with Tessl CLI
npx tessl i tessl/npm-nuxt--vite-builder