norns

Options

Every nornsAutoImport() option with its default.

Option Default Notes
helpers the five default modules Pass false to disable. Each entry is { from, imports: [...], match? } where match is a regex tested against the file name. Passing your own list replaces the defaults.
componentDirs ['src/lib/components'] Directories scanned for capitalised component files. false or [] disables the scan.
componentExtensions ['.svelte', '.n']
components null Record<name, importPath> — a bare-specifier preset map, typically presetUI().components.
exportGlobs [] Off by default. Project-relative glob patterns (POSIX separators) for files to scan for named exports; opt in with e.g. ['src/lib/**/public.c']. Replaced the older exportDirs in 0.0.11.
exportExtensions ['.c', '.civet', '.js'] .ts is excluded: regex scanning cannot tell value exports from type-only ones under verbatimModuleSyntax.
libRoot 'src/lib' Project-relative root that libAlias maps to.
libAlias '$lib' Alias prefix emitted in import paths.
root process.cwd() Project root.

#Notes on exportGlobs

SvelteKit route and hook files (+*, hooks.*) are excluded from the export scan, because their named exports (load, actions, handle, ...) are consumed by the framework and must never be imported. Server-path files are never auto-imported into client files, and a name exported from two files in the same scope is logged and excluded rather than guessed.

The starter and demo leave exportGlobs off and import project code explicitly (import { notes } from '$lib/norns/notes/server/public'). Only framework helpers and components are auto-imported there. Both styles are supported; explicit imports keep the dependency graph visible, which is why the reference apps use them. If you opt in, keep the scope to barrels (public.c) so a feature's internals stay private.

#Notes on helpers

Because helpers replaces the default list, a UI library's helpers (for example toast() from norns-ui) cannot be merged in today without restating the defaults. A presets or additionalHelpers option that extends instead of replacing is a planned follow-up; until then, presets deliver components only and you import toast explicitly.