我已将Javascript库(incremental-dom)标识为全局和外部。我在脚本标记中加载库。
当汇总格式为“生日”时图书馆注入了生活,一切正常。
然而,当我使用' es'格式,从不引用全局,浏览器抛出类型错误:
Uncaught TypeError: Failed to resolve module specifier 'incremental-dom'
这是我的rollup.config.js文件:
const path = require('path');
const root = process.cwd();
const string = require('rollup-plugin-string');
const superviews = require('rollup-plugin-superviews');
export default [
{
input: path.resolve(root, 'src', 'idx-admin-tab', 'component.js'),
plugins: [
superviews({include: 'src/**/*.html'}),
string({include: ['src/**/*.css', 'src/**/*.svg']})
],
globals: {'incremental-dom': 'IncrementalDOM'},
external: ['incremental-dom'],
output: {
file: path.resolve(root, 'dist', 'idx-admin-tab.es.js'),
format: 'es'
}
}
];

答案 0 :(得分:1)
globals
仅适用于iife
或umd
输出的上下文 - 如果您要创建es
套装,则只会忽略它。
如果您只想使用浏览器的原生import
支持,则必须将模块说明符incremental-dom
转换为浏览器可以解析的一个 - 如下所示:
export default [
{
// ...
external: ['incremental-dom'],
paths: {
'incremental-dom': '/node_modules/incremental-dom/dist/incremental-dom.js'
},
// ...
}
];
遗憾的是,incremental-dom没有ESM版本,所以你不能import
它。因此,如果您不想捆绑它,即使在IncrementalDOM
模式下,您也必须欺骗Rollup使用全局es
。
您应该可以使用rollup-plugin-virtual执行此操作:
export default [
{
// ...
plugins: [
superviews({include: 'src/**/*.html'}),
string({include: ['src/**/*.css', 'src/**/*.svg']}),
virtual({
'incremental-dom': 'export default window.IncrementalDOM'
})
],
// ...
}
];