Javascript 汇总动态模块解析

Javascript 汇总动态模块解析,javascript,es6-modules,rollupjs,Javascript,Es6 Modules,Rollupjs,我正在尝试使用将一些JS捆绑到单个文件中。但是,我想导入的文件之一的路径只有在编译时才知道,因此我需要告诉Rollup如何找到它 这是我的主要文件: import*作为“命令加载器”中的命令; console.log(命令); 您可以看到它正在从命令加载程序导入所有内容。文件的名称和内容并不重要,我只需要将其内容捆绑到主文件中。该文件看起来像: 导出函数exampleCommand(){ log('Running command…'); } 汇总错误很明显,它不知道如何找到命令加载器:“命令

我正在尝试使用将一些JS捆绑到单个文件中。但是,我想导入的文件之一的路径只有在编译时才知道,因此我需要告诉Rollup如何找到它

这是我的主要文件:

import*作为“命令加载器”中的命令;
console.log(命令);
您可以看到它正在从
命令加载程序导入所有内容。文件的名称和内容并不重要,我只需要将其内容捆绑到主文件中。该文件看起来像:

导出函数exampleCommand(){
log('Running command…');
}
汇总错误很明显,它不知道如何找到
命令加载器
“命令加载器”由../index.js导入,但无法解决–将其视为外部依赖项

我知道我可能只是读取commands文件的内容并将其前置到主文件中,但这感觉很尴尬,因为我必须从commands文件中删除
export
,并定义一个“commands”对象,这可能会破坏汇总的目的

我曾尝试使用告诉Rollup如何查找
命令加载器
,但它似乎不起作用(当然,我不太了解这个插件)

const rollup=require('rollup');
const resolve=require('rollup-plugin-node-resolve');
等待汇总({
输入:mainFilePath,
插件:[
决心({
“命令加载程序”:dynamicFilePath
})
]
});
我也试过使用,但没有用

const rollup=require('rollup');
const{bundleImports}=require('rollup-plugin-bundle-imports');
等待汇总({
输入:mainFilePath,
插件:[
bundleImports({
包括:[dynamicFilePath],
importAs:'命令加载程序',
})
]
});
也许我采取了错误的方法。如果有更好的方法在编译时动态导入文件,我很想了解它。

明白了:

捆绑包时用于定义别名的汇总插件

以下是我最终使用的代码:

const rollup=require('rollup');
const alias=require(“@rollup/plugin alias”);
等待汇总({
输入:mainFilePath,
插件:[
别名({
参赛作品:{
“命令加载程序”:dynamicFilePath
}
})
]
});
结合CJS输出格式,解析上述示例代码并生成:

“严格使用”;
函数exampleCommand(){
log('Running command…');
}
var命令=/*#uuuuu纯uuu*/Object.freeze({
__proto_uu;:null,
exampleCommand:exampleCommand
});
console.log(命令);
成功