diff --git a/README.md b/README.md index 97958d4..31540cd 100644 --- a/README.md +++ b/README.md @@ -74,7 +74,13 @@ export default defineConfig({ output: './lib/js', suffix: '.mjs', }, + + // Control the terminal output of the ReScript compiler. silent: false, + + // Optionally add additional build args to the ReScript compiler. + // See https://rescript-lang.org/docs/manual/build-overview#compile-with-stricter-errors-in-ci + buildArgs: '-warn-error +32+27+26+110', }), ], }); diff --git a/src/index.ts b/src/index.ts index 53958f1..a35937a 100644 --- a/src/index.ts +++ b/src/index.ts @@ -17,8 +17,13 @@ type ReScriptProcess = { async function launchReScript( watch: boolean, silent: boolean, + buildArgs: string, ): Promise { - const cmd = watch ? 'rescript watch' : 'rescript build'; + let cmd = watch ? 'rescript watch' : 'rescript build'; + + if (buildArgs) { + cmd += ` ${buildArgs}`; + } // https://github.com/rescript-lang/rescript/blob/9676953f5b5ce96ade6909af3f23a77cd69645e9/rewatch/src/watcher.rs#L246-L258 const finishSignal = 'Finished initial compilation'; @@ -71,6 +76,7 @@ interface Config { suffix?: string; }; silent?: boolean; + buildArgs?: string; } export default function createReScriptPlugin(config?: Config): Plugin { @@ -83,6 +89,7 @@ export default function createReScriptPlugin(config?: Config): Plugin { const suffix = config?.loader?.suffix ?? '.bs.js'; const suffixRegex = new RegExp(`${suffix.replace('.', '\\.')}$`); const silent = config?.silent ?? false; + const buildArgs = config?.buildArgs ?? ''; return { name: '@jihchi/vite-plugin-rescript', @@ -106,7 +113,7 @@ export default function createReScriptPlugin(config?: Config): Plugin { const watch = !isLocked && (command === 'serve' || Boolean(build.watch)); if (needReScript) { - childProcessReScript = await launchReScript(watch, silent); + childProcessReScript = await launchReScript(watch, silent, buildArgs); } }, config: (userConfig) => ({