Rollup.js resolveId到导出另一个模块的模块

时间:2019-03-19 09:05:32

标签: rollupjs

我有这个文件结构

main.js
sdk.js
[sdk] // folder
  - sdk/a.js

js文件内容

// sdk/a.js
export class A{}

// sdk.js
import {A} from "./sdk/a";
export {A};

// main.js
import {A} from "./sdk/a";
const a= new A();

我想使用汇总创建带有main.js作为输入文件的捆绑软件,但是我想从import {A} from "./sdk/a";解析模块import {A} from "./sdk";。换句话说,我想将模块路径./sdk/a替换为./sdk

我已经创建了一个插件并尝试使用resolveId钩子,但出现错误。 这是我的插件代码

function myPlugin() {
    return {
        name: 'my-plugin',
        resolveId(importee, importer) {
           if (importee === './sdk/a') {
                return "sdk.js"; // if I return sdk/a.js it will work
           }
           return null; 
        }
    };
}

这是我收到的错误

RangeError: Maximum call stack size exceeded
    at Module.traceVariable (D:\work\htdocs\rollup_test\node_modules\rollup\dist\rollup.js:14727:47)
    at Module.getVariableForExportName (D:\work\htdocs\rollup_test\node_modules\rollup\dist\rollup.js:14566:25)
    at Module.traceVariable (D:\work\htdocs\rollup_test\node_modules\rollup\dist\rollup.js:14737:43)
    at Module.getVariableForExportName (D:\work\htdocs\rollup_test\node_modules\rollup\dist\rollup.js:14566:25)
    at Module.traceVariable (D:\work\htdocs\rollup_test\node_modules\rollup\dist\rollup.js:14737:43)
    at Module.getVariableForExportName (D:\work\htdocs\rollup_test\node_modules\rollup\dist\rollup.js:14566:25)
    at Module.traceVariable (D:\work\htdocs\rollup_test\node_modules\rollup\dist\rollup.js:14737:43)
    at Module.getVariableForExportName (D:\work\htdocs\rollup_test\node_modules\rollup\dist\rollup.js:14566:25)
    at Module.traceVariable (D:\work\htdocs\rollup_test\node_modules\rollup\dist\rollup.js:14737:43)
    at Module.getVariableForExportName (D:\work\htdocs\rollup_test\node_modules\rollup\dist\rollup.js:14566:25)

如果我手动编辑代码并将main.js中的导入更改为import {AAA} from "./sdk";,一切正常。

注意:我正在使用汇总v1.6.0

注意:输出格式为esm

0 个答案:

没有答案