如何在RollupJs输出文件中动态捆绑moduleobject?

问题描述 投票:0回答:1

我如何动态地将moduleobject捆绑到我的RollupJs输出文件中?我已经尝试了很多不同的选项,但无法得到我想要的预期输出。

我把下面一个简短的示例项目,以帮助说明我正在寻找什么。预期的输出应该是打印 "Hello John Doe",该对象是作为依赖关系动态注入的overrideApp对象。

srcapp.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',
    }
  }
]
javascript node.js rollupjs
1个回答
1
投票

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

你正在寻找一个虚拟模块

安装

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

使用方法

注意事项 使用此插件 之前 任何其他的文件,如node-resolve或commonjs,所以它们不会改变输出。

假设一个包含以下代码段的条目文件存在于 src/entry.js并试图加载 batmansrc/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.comrolluppluginseditmasterpackagesvirtual。

© www.soinside.com 2019 - 2024. All rights reserved.