Repo setup and build step configuration

This commit is contained in:
mrjvs
2023-12-24 00:37:41 +01:00
parent 9c8750e793
commit 286f3e3115
28 changed files with 993 additions and 0 deletions

46
plugins/manifest.ts Normal file
View File

@@ -0,0 +1,46 @@
import { PluginOption, ResolvedConfig } from "vite";
import path from "path";
import fs from "fs";
import merge from "lodash.merge";
export type ManifestMergerOptions = {
output: string;
files: string[];
}
function mergeManifests(inputs: string[]): string {
const parsed = inputs.map(v => JSON.parse(v));
const output = {};
const merged = merge(output, ...parsed);
return JSON.stringify(merged, null, 2);
}
export const manifestMerge = (options: ManifestMergerOptions): PluginOption[] => {
const inputFiles = options.files.map(v=>fs.readFileSync(v, 'utf8'));
let config: ResolvedConfig | null = null;
let distPath: string | null = null;
return [
{
name: 'manifest-merger',
configResolved(resolvedConfig) {
config = resolvedConfig
distPath = path.resolve(config.build.outDir)
},
closeBundle() {
if (!config || !distPath) return
if (config.command === 'serve') {
return
}
fs.writeFileSync(
path.join(distPath ?? "", options.output),
mergeManifests(inputFiles),
{
encoding: 'utf8',
}
)
}
},
]
}