我如何动态地将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',
}
}
]
这是完全正确的,你在这里混合了很多东西,不一起工作。
你正在寻找一个虚拟模块
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'`
})
]
};