Skip to content

@ugreen-nas/builder-open API

Public Vite API, parameters, types, and usage for @ugreen-nas/builder-open.


Quick index

ScenarioSection
Wire the plugin in vite.config.tsUgosViteBuilder, pluginEntry
Main window metadata, version.jsonBuildConfig

Imports

ts
import { UgosViteBuilder } from '@ugreen-nas/builder-open';
import type { BuildConfig } from '@ugreen-nas/builder-open';
ts
// Optional: subpath equivalent
import { UgosViteBuilder } from '@ugreen-nas/builder-open/vite';

API summary

SymbolKindDescription
UgosViteBuilderclassVite-facing builder
BuildConfigtypeBuild config (types from @ugreen-nas/builder-core)
pluginEntrymethodReturns Vite plugin array

UgosViteBuilder

Constructor

ts
constructor(config: BuildConfig);
ParamTypeRequiredDescription
configBuildConfigYesBuild and artifact metadata

Use pluginEntry() inside defineConfig({ plugins }) (see pluginEntry and Minimal example).


pluginEntry(options?)

ts
pluginEntry(options?: IPluginEntry): never[];

Declared as never[]; actually import('vite').Plugin[]. Spread into plugins:

ts
plugins: [...builder.pluginEntry()],

IPluginEntry

FieldTypeRequiredDefaultDescription
modestringNo'''analyze' enables bundle analysis via hooks.vitePlugins
removeConsoleExternalstring[]No[]Extra externals for vite-plugin-remove-console

BuildConfig

Fields

FieldTypeRequiredDefault / notes
windowConfigunknownStrongly recommendedShell window config; validation errors if missing
getIgnoreFolder(config: unknown, isElectron: boolean) => unknownYesIgnore globs; often merged with ['**/node_modules/**']
langPathstringNoDefault 'src/language'


Minimal example

ts
import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';
import { UgosViteBuilder } from '@ugreen-nas/builder-open';
import path from 'node:path';

const builder = new UgosViteBuilder({
  windowConfig: { width: 1200, height: 800 },
  getIgnoreFolder: (patterns: unknown) => patterns,
});

export default defineConfig({
  plugins: [react(), ...builder.pluginEntry()],
});