interface AppOptions {
    appName?: string;
    assetFileNames?: ((chunkInfo) => string);
    assetsPrefix?: string;
    config?: UserConfigExport;
    coreJS?: CoreJSPluginOptions;
    createEmptyCSSEntryPoints?: boolean;
    emptyOutputDirectory?: boolean;
    inlineCSS?: boolean | PluginConfiguration;
    minify?: boolean;
    nodePolyfills?: boolean | PolyfillOptions;
    replace?: Record<string, string>;
    thirdPartyLicense?: string | false;
}

Hierarchy

Properties

appName?: string

Override the appName, by default the name from the appinfo/info.xml and if not found the name from package.json is used. But if that name differs from the app id used for the Nextcloud app you need to override it.

assetFileNames?: ((chunkInfo) => string)

Customize the asset file names. Similar to output.assetFileNames in rollup config, but if returns undefined, then this config defaults is be used.

Type declaration

    • (chunkInfo): string
    • Parameters

      • chunkInfo: PreRenderedAsset

      Returns string

Example

Move CSS styles to `styles/style.css` instead of the default `css/[entrypoint-name].css`:
(chunkInfo) => chunkInfo.name.endsWith('.css') ? 'styles/style.css' : undefined
assetsPrefix?: string

Prefix to use for assets and chunks

Default

'{appName}-'
config?: UserConfigExport

Vite config to override or extend the base config

coreJS?: CoreJSPluginOptions

Enable and adjust settings for core-js polyfills

By default disabled as Nextcloud core already includes the core-js/stable polyfills globally

createEmptyCSSEntryPoints?: boolean

When not using inline css and using cssCodeSplit this option allows to create one CSS entry file for each JS entry point instead of only one for each JS entry point with styles.

Default

false
emptyOutputDirectory?: boolean

Whether to empty the output directory (js/)

Default

true
inlineCSS?: boolean | PluginConfiguration

Inject all styles inside the javascript bundle instead of emitting a .css file

Default

false
minify?: boolean

Whether to minify the output

Default

isProduction Minify on production, do not on development
nodePolyfills?: boolean | PolyfillOptions

Inject polyfills for node packages By default all node core modules are polyfilled, including prefixed with node: protocol

Default

'{ protocolImports: true }'
replace?: Record<string, string>

Strings to replace within your code

thirdPartyLicense?: string | false

Location of license summary file of third party dependencies Pass false to disable generating a license file.

Default

'js/vendor.LICENSE.txt'