Example plugin for Rsbuild.
Install:
npm add rsbuild-plugin-virtual-module -D
Add plugin to your rsbuild.config.ts
:
// rsbuild.config.ts
import { pluginVirtualModule } from 'rsbuild-plugin-virtual-module';
export default {
plugins: [
pluginVirtualModule({
virtualModules: {
'virtual-foo': async () => {
return 'export default {}';
},
},
}),
],
};
import foo from 'virtual-foo';
console.log(foo); // {}
Generate virtual modules, where the key is the name of the virtual module and the value is TransformHandler
. See Rsbuild - api.transform
- Type:
import type { RsbuildPlugin, TransformHandler } from '@rsbuild/core';
type VirtualModules = Record<string, TransformHandler>;
- Default:
{}
- Example:
pluginVirtualModule({
virtualModules: {
'virtual-json-list': async ({ addDependency, addContextDependency }) => {
const jsonFolderPath = join(__dirname, 'json');
const ls = await readdir(jsonFolderPath);
addContextDependency(jsonFolderPath);
const res: Record<string, unknown> = {};
for (const file of ls) {
if (file.endsWith('.json')) {
const jsonFilePath = join(jsonFolderPath, file);
const jsonContent = await readFile(jsonFilePath, 'utf-8');
addDependency(jsonFilePath);
res[file] = JSON.parse(jsonContent);
}
}
return `export default ${JSON.stringify(res)}`;
},
},
});
import jsonList from 'virtual-json-list';
console.log(jsonList);
MIT.