Skip to content

Auto-Import Blocks and Fields

WARNING

This feature might be removed in future versions of kirbyup. Consider using manual imports instead (see Recommended Alternative below).

When you have multiple blocks or fields to import, use the kirbyup.import function to simplify the process.

Instead of manually importing each block or field, you can use the kirbyup.import function to import all files that match a glob pattern.

Given the following Panel plugin:

js
import Bar from './components/blocks/Bar.vue'
import Foo from './components/blocks/Foo.vue'
import Maps from './components/blocks/Maps.vue'

window.panel.plugin('kirbyup/example', {
  blocks: {
    foo: Foo,
    bar: Bar,
    maps: Maps
  }
})

You can use the kirbyup.import function to import all blocks at once:

js
import { kirbyup } from 'kirbyup/plugin'

window.panel.plugin('kirbyup/example', {
  blocks: kirbyup.import('./components/blocks/*.vue')
})

For better tree-shaking, explicit dependencies that are easier to trace, and IDE support, use manual imports instead:

js
import Bar from './components/blocks/Bar.vue'
import Foo from './components/blocks/Foo.vue'
import Maps from './components/blocks/Maps.vue'

window.panel.plugin('my-plugin/blocks', {
  blocks: {
    foo: Foo,
    bar: Bar,
    maps: Maps
  }
})

TIP

For plugins with many components, you can organize imports in a separate file:

js
// src/components/blocks/index.js
export { default as Bar } from './Bar.vue'
export { default as Foo } from './Foo.vue'
export { default as Maps } from './Maps.vue'
js
// src/index.js
import * as blocks from './components/blocks'

window.panel.plugin('my-plugin/blocks', {
  blocks
})