{"id":15642161,"url":"https://github.com/patak-dev/vite-plugin-virtual","last_synced_at":"2025-04-07T12:03:35.215Z","repository":{"id":41455300,"uuid":"355457634","full_name":"patak-dev/vite-plugin-virtual","owner":"patak-dev","description":"Virtual modules plugin for Vite","archived":false,"fork":false,"pushed_at":"2025-03-02T15:28:07.000Z","size":183,"stargazers_count":78,"open_issues_count":1,"forks_count":6,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-31T11:01:38.533Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/patak-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-04-07T07:49:24.000Z","updated_at":"2025-03-10T08:12:57.000Z","dependencies_parsed_at":"2024-06-18T18:37:53.444Z","dependency_job_id":"a513f5c4-14e4-4451-ad1b-f6f2742492bf","html_url":"https://github.com/patak-dev/vite-plugin-virtual","commit_stats":null,"previous_names":["patak-js/vite-plugin-virtual"],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patak-dev%2Fvite-plugin-virtual","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patak-dev%2Fvite-plugin-virtual/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patak-dev%2Fvite-plugin-virtual/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patak-dev%2Fvite-plugin-virtual/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/patak-dev","download_url":"https://codeload.github.com/patak-dev/vite-plugin-virtual/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247648976,"owners_count":20972945,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-03T11:55:02.144Z","updated_at":"2025-04-07T12:03:35.172Z","avatar_url":"https://github.com/patak-dev.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"# vite-plugin-virtual\n\n[![npm version](https://badgen.net/npm/v/vite-plugin-virtual)](https://www.npmjs.com/package/vite-plugin-virtual)\n[![monthly downloads](https://badgen.net/npm/dm/vite-plugin-virtual)](https://www.npmjs.com/package/vite-plugin-virtual)\n[![license](https://badgen.net/npm/license/vite-plugin-virtual)](https://github.com/patak-js/vite-plugin-virtual/blob/main/LICENSE)\n\n\u003e Virtual modules with HMR plugin for [Vite](https://github.com/vitejs/vite)\n\n## Getting Started\n\nInstall Vite Plugin Virtual:\n\n```bash\n$ npm install -D vite-plugin-virtual\n```\n\nAdd to your `vite.config.js`:\n\n```js\nimport virtual from 'vite-plugin-virtual'\n\nexport default {\n  plugins: [\n    virtual({\n      'virtual:module': `export default { hello: 'world' }`,\n      'virtual:config': { hello: 'world' }\n    })\n  ]\n}\n```\n\nIn your sources you can now import the virtual modules\n\n```js\nimport obj from 'virtual:config'\n\nconsole.log(obj)\n```\n\n## Updating virtual modules\n\nYou can update the virtual module during dev\n\n```js\nimport virtual, { updateVirtualModule } from 'vite-plugin-virtual'\n\nconst plugin = virtual({\n  'virtual:module': `export default { hello: 'world' }`,\n  'virtual:config': { hello: 'world' },\n  'virtual:lazy': () =\u003e `Hello ${'computed'} world`,\n})\n\nupdateVirtualModule(plugin, 'virtual:config', { hello: 'new message' })\n```\n\n## Manual invalidation\n\nYou can invalidate the virtual module during dev in case the config changes\n\n```js\nimport virtual, { invalidateVirtualModule } from 'vite-plugin-virtual'\n\nconst modules = {\n  'virtual:module': `export default { hello: 'world' }`,\n  'virtual:config': { hello: 'world' }\n}\n\nconst plugin = virtual(modules)\n\nconst server: ViteDevServer\n\nmodules['virtual:config'] = { hello: 'new message' }\ninvalidateVirtualModule(server, 'virtual:config')\n```\n\n## Types\n\nTo enable TypeScript IntelliSense for a virtual module, you can use ambient modules to declare the module in a `.d.ts` file included by your TS setup:\n\n```ts\ndeclare module 'virtual:config' {\n  export const hello: string;\n}\n```\n   \nFor more details refer to the [TypeScript docs for ambient modules](https://www.typescriptlang.org/docs/handbook/modules/reference.html#ambient-modules).\n\n## Credits\n\n- Adapted logic from [@rollup/plugin-virtual](https://github.com/rollup/plugins/tree/master/packages/virtual)\n- Project setup adopted from [@antfu's Vite plugins](https://github.com/antfu/vite-plugin-pwa)\n\n## License\n\nMIT License © 2021 [patak-js](https://github.com/patak-js)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpatak-dev%2Fvite-plugin-virtual","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpatak-dev%2Fvite-plugin-virtual","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpatak-dev%2Fvite-plugin-virtual/lists"}