@360works/fmpromise
Version:
A modern JS toolkit for FileMaker Web Viewers, including a dev server and type generation.
37 lines (36 loc) • 1.4 kB
JavaScript
import { build } from 'vite';
import { viteSingleFile } from 'vite-plugin-singlefile';
import path from 'path';
// Update the function signature to accept the minify flag
export const buildModule = async (moduleHtmlPath, minify, configJsonString) => {
const absoluteInputFile = path.resolve(process.cwd(), 'src', moduleHtmlPath);
const buildRoot = path.dirname(absoluteInputFile);
const result = await build({
root: buildRoot,
plugins: [viteSingleFile()],
logLevel: 'silent',
build: {
write: false,
assetsDir: '',
// Use the passed-in boolean to control minification
minify: minify,
rollupOptions: {
input: {
index: absoluteInputFile,
},
},
},
});
if (!('output' in result)) {
throw new Error('Vite build did not return a valid output.');
}
const htmlAsset = result.output.find((item) => item.type === 'asset' && item.fileName.endsWith('.html'));
if (!htmlAsset || typeof htmlAsset.source !== 'string') {
throw new Error(`Vite build did not produce a valid HTML file for: ${moduleHtmlPath}`);
}
let finalHtml = htmlAsset.source;
if (configJsonString) {
finalHtml += `<script>window.FMPROMISE_CONFIG = ${configJsonString};</script>`;
}
return finalHtml;
};