如何在 RollupJs 输出中动态捆绑 module/object?
How to dynamically bundle module/object in RollupJs output?
如何将 module/object 动态捆绑到我的 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
configuration file并导入插件:
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
如何将 module/object 动态捆绑到我的 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
configuration file并导入插件:
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