rollup / plugins

🍣 The one-stop shop for official Rollup plugins
MIT License
3.57k stars 568 forks source link

Allow @rollup/plugin-virtual to be a function that takes a module ID #1721

Open qzsiniong opened 1 month ago

qzsiniong commented 1 month ago

Feature Use Case

Just like https://github.com/rollup/plugins/blob/master/packages/replace/CHANGELOG.md#120

// src/views/users/index.vue
import { routeName } from 'virtual:routeName';

// the routeName is base on current file, like src/views/users/index.vue ==> users/index

Feature Proposal

import virtual from '@rollup/plugin-virtual';

export default {
  input: 'src/entry.js',
  // ...
  plugins: [
    virtual({
      'virtual:routeName': (importer) => {
        const routeRoot = process.cwd() + '/src/views/';
        const routeName = importer.replace(routeRoot, '').replace(/\.\w+$/, '');

        return `export const routeName = '${routeName}'`;
      },
    }),
  ],
};