An open API service indexing awesome lists of open source software.

https://github.com/rspack-contrib/rsbuild-plugin-virtual-module

Support VirtualModules in Rsbuild. The simplest and most flexible way to build with a compiling magic 🪄
https://github.com/rspack-contrib/rsbuild-plugin-virtual-module

rsbuild rsbuild-plugin virtual-modules

Last synced: 6 months ago
JSON representation

Support VirtualModules in Rsbuild. The simplest and most flexible way to build with a compiling magic 🪄

Awesome Lists containing this project

README

          

# rsbuild-plugin-virtual-module🧙

The simplest and most flexible way to build with a compiling magic 🪄

An Rsbuild plugin that allows you to create virtual modules, the pro version of [rspack-plugin-virtual-module](https://github.com/rspack-contrib/rspack-plugin-virtual-module) with loader API.



npm version

license
downloads

## Usage

Install:

```bash
npm add rsbuild-plugin-virtual-module -D
```

Add plugin to your `rsbuild.config.ts`:

```ts
// rsbuild.config.ts
import { pluginVirtualModule } from 'rsbuild-plugin-virtual-module';

export default {
plugins: [
pluginVirtualModule({
virtualModules: {
'virtual-foo': async () => {
return 'export default {}';
},
},
}),
],
};
```

```ts
import foo from 'virtual-foo';

console.log(foo); // {}
```

## Options

### virtualModules

Generate virtual modules, where the key is the name of the virtual module and the value is `TransformHandler`. See [Rsbuild - api.transform](https://rsbuild.dev/plugins/dev/core#apitransform)

- Type:

```ts
import type { TransformHandler } from '@rsbuild/core';

type VirtualModules = Record;
```

- Default: `{}`
- Example:

```js
pluginVirtualModule({
virtualModules: {
'virtual-json-list': async ({ addDependency, addContextDependency }) => {
const jsonFolderPath = join(__dirname, 'json');
const ls = await readdir(jsonFolderPath);
addContextDependency(jsonFolderPath);

const res: Record = {};
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)}`;
},
},
});
```

```js
import jsonList from 'virtual-json-list';
console.log(jsonList);
```

### tempDir

The name of the virtual module folder under `node_modules`.

- Type: `string`
- Default: `.rsbuild-virtual-module`

## License

[MIT](./LICENSE).