如何在RollupJs输出中动态捆绑模块/对象?

约翰·杜

如何动态地将模块/对象捆绑到RollupJs输出文件中?我已经尝试了多种选择,但无法获得所需的预期输出。

我在下面整理了一个简短的示例项目,以帮助说明我在寻找什么。预期的输出应从作为依赖项动态注入的overrideApp对象中打印“ Hello John Doe”。

src / app.js

export default {
  sayHello: function() {
    console.log('Hello Mr.Roboto')
  },
  sayGoodBye: function() {
    console.log('Goodbye Mr.Roboto')
  }
}

index.js

import app from './src/app.js'
import overrideApp from 'overrideApp'
export default { ...app, ...overrideApp }.sayHello()

.rollup.config.js

let overrideApp = {
  sayHello: function() {
    console.log('Hello John Doe')
  }
}
export default [
  {
    input: 'index.js',
    external: ['overrideApp'], // This is not working, expecting to pass overrideApp to index.js
    output: {
      file: './dist/app.js',
      format: 'umd',
      name: 'bundle',
    }
  }
]
坦率的

这完全是正确的,您在这里混合了很多无法协同工作的东西。

您正在寻找一个虚拟模块

安装

npm install @rollup/plugin-virtual --save-dev

用法

注意。其他任何节点(例如node-resolve或commonjs)之前使用此插件,因此它们不会更改输出。

假设包含以下代码段的入口文件存在于src/entry.js,并尝试从内存中加载batman加载src/robin.js

// src/entry.js
import batman from 'batman';
import robin from './robin.js';

console.log(batman, robin);

创建一个rollup.config.js 配置文件并导入插件:

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

export default {
  entry: 'src/entry.js',
  // ...
  plugins: [
    virtual({
      batman: `export default 'na na na na na'`,
      'src/robin.js': `export default 'batmannnnn'`
    })
  ]
};

https://github.com/rollup/plugins/edit/master/packages/virtual

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章