@open-xchange/vite-plugin-ox-manifests

A vite plugin to concat and serve ox manifests

Usage no npm install needed!

<script type="module">
  import openXchangeVitePluginOxManifests from 'https://cdn.skypack.dev/@open-xchange/vite-plugin-ox-manifests';
</script>

README

Vite Plugin OX Manifests

A vite plugin that generates a manifest.json for code loading inside an App Suite UI plugin environment.

Install

npm install "@open-xchange/vite-plugin-ox-manifests"
yarn add "@open-xchange/vite-plugin-ox-manifests"

How to use

// in the vite.config.js
import vitePluginOxManifests from '@open-xchange/vite-plugin-ox-manifests'

return {
  plugins: [vitePluginOxManifests()]
}

Options

You can provide the following options to the plugin:

  • watch <boolean> If set to true, it will watch any changes to manifest.json files and will automatically reload the vite-dev-server. Default: true
  • entryPoints <string> | <glob pattern> Convenience method to specify additional entry points for the production build. The glob pattern will be resolved and injected into the build.input options of vite. Can be specified as a glob-pattern. Default: undefined
  • manifestsAsEntryPoints <boolean> If set to true, this will inject every entrypoint that is defined by a manifest.json file into the build.input options of vite. Default: true
  • transformAbsolutePaths <boolean> If set to true, every absolute path will be transformed into a relative path. This is especially useful, if the production path is not clear at build time. E.g. if you do not know, whether appsuite will be served under /appsuite. Default: true
  • autoloadSettings <boolean> If set to true, this plugin tries to auto-detect files that export settings. Prerequisites are, that the file imports Settings from the io.ox/core/settings module and have a named export called settings. Default true
  • supportedEntryExtensions <string[]> This array defines the extensions, that are to expect as entry points. For example, if a manifest.json have "path": "index", it will look for index.js, index.mjs or index.ts next to the manifest.json. Default: ['js', 'mjs', 'ts']
  • meta <object> An object that will be translated into a meta.json file in the root directory.

Examples

Autoload settings

If autoload settings is enabled, the settings modules have to look like the following:

// import from the core settings module
import { Settings } from '$/io.ox/core/settings'

// named export 'settings'
export const settings = new Settings('test', () => {})

How to test

yarn test