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

Javascript 如何在RollupJs输出中动态绑定模块/对象?,javascript,node.js,rollupjs,Javascript,Node.js,Rollupjs,如何将模块/对象动态绑定到RollupJs输出文件中?我已经尝试了很多不同的选择,但不能得到我期待的预期产出 我在下面列出了一个简短的示例项目,以帮助说明我在寻找什么。预期的输出应该从作为依赖项动态注入的overrideApp对象打印“Hello John Doe” src/app.js export default { sayHello: function() { console.log('Hello Mr.Roboto') }, sayGoodBye: function(

如何将模块/对象动态绑定到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',
    }
  }
]

这是完全正确的,你在这里混合了很多不能一起工作的东西

您正在寻找一个虚拟模块

安装 用法 注意。在任何其他插件(如node resolve或commonjs)之前使用此插件,这样它们就不会改变输出

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

//src/entry.js
从“蝙蝠侠”进口蝙蝠侠;
从“/robin.js”导入robin;
控制台日志(蝙蝠侠,罗宾);
创建一个
rollup.config.js
并导入插件:

import virtual from'@rollup/plugin virtual';
导出默认值{
条目:“src/entry.js”,
// ...
插件:[
虚拟的({
蝙蝠侠:`导出默认值'不,不,不,`,
'src/robin.js':'export default'batmannnn'`
})
]
};

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