UNPKG

@equinor/fusion-framework-cli

Version:

--- title: Fusion Framework CLI ---

76 lines 2.66 kB
import nodePath from 'node:path'; import { defineConfig, mergeConfig } from 'vite'; import { createViteLogger } from './vite-logger.js'; import { AssertionError, assertObject } from './utils/assert.js'; import { loadConfig, resolveConfig, initiateConfig, } from './utils/config.js'; // Plugins import viteEnv from 'vite-plugin-environment'; import tsconfigPaths from 'vite-tsconfig-paths'; import { fileExistsSync } from './utils/file-exists.js'; const configFilename = 'app.vite.config'; export function assertViteConfig(config) { assertObject(config); } export const loadViteConfig = (filename) => loadConfig(filename ?? configFilename); export const resolveViteConfig = async (options) => { if (options?.file) { const config = await loadViteConfig(options.file); return { config, path: options.file, }; } return resolveConfig(configFilename, { find: options }); }; export const createAppViteConfig = async (env, options) => { const resolved = await resolveViteConfig(options); if (resolved) { const config = (await initiateConfig(resolved.config, env)) ?? {}; return { config, path: resolved.path }; } else if (options?.file) { throw new AssertionError({ message: `Expected to load config from ${options.file}`, expected: '<file>', }); } }; export const resolveEntryPoint = (cwd, dir, opt) => { cwd ??= process.cwd(); dir ??= 'src'; const files = opt?.files ?? ['index.ts', 'index.tsx', 'main.ts', 'main.tsx']; return files .map((file) => [dir, file].join('/')) .find((file) => fileExistsSync(nodePath.resolve(cwd, file))); }; export const createViteConfig = async (env, overrides) => { const { root = process.cwd() } = env; const entry = String(resolveEntryPoint(root)); const defaultConfig = defineConfig({ plugins: [ tsconfigPaths(), viteEnv({ NODE_ENV: env.mode, FUSION_LOG_LEVEL: (process.env.FUSION_LOG_LEVEL ?? env.mode === 'development') ? '3' : '1', }), ], mode: env.mode, root, appType: 'custom', build: { lib: { entry, fileName: 'app-bundle', formats: ['es'], }, rollupOptions: { output: { manualChunks: undefined, }, }, }, customLogger: createViteLogger(), }); return overrides ? mergeConfig(defaultConfig, overrides) : defaultConfig; }; //# sourceMappingURL=vite-config.js.map