nx/packages/vite/plugins/rollup-replace-files.plugin.ts
2022-11-14 14:33:09 -05:00

43 lines
1.1 KiB
TypeScript

// source: https://github.com/Myrmod/vitejs-theming/blob/master/build-plugins/rollup/replace-files.js
/**
* @function replaceFiles
* @param {FileReplacement[]} replacements
* @return {({name: "rollup-plugin-replace-files", enforce: "pre", Promise<resolveId>})}
*/
export default function replaceFiles(replacements: FileReplacement[]) {
if (!replacements?.length) {
return null;
}
return {
name: 'rollup-plugin-replace-files',
enforce: 'pre',
async resolveId(source, importer) {
const resolved = await this.resolve(source, importer, { skipSelf: true });
const foundReplace = replacements.find(
(replacement) => replacement.replace === resolved?.id
);
if (foundReplace) {
console.info(
`replace "${foundReplace.replace}" with "${foundReplace.with}"`
);
try {
// return new file content
return {
id: foundReplace.with,
};
} catch (err) {
console.error(err);
return null;
}
}
return null;
},
};
}
export interface FileReplacement {
replace: string;
with: string;
}