@equinor/fusion-framework-cli
Version:
--- title: Fusion Framework CLI ---
76 lines • 2.66 kB
JavaScript
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