我的公司正在使用Webpack进行包含数千个模块的大型项目。我们广泛使用类,并且因为ES6中没有提升类,所以经常发生递归依赖问题。
这是一个简化的场景:
// a.js ////
import {B} from './b';
export class A {
isB(b) {
return b instanceof B;
}
}
// b.js ////
import {A} from './a';
export class B extends A {}
// index.js ////
import './a';
查看问题的running example。
在此方案中,所需的执行顺序为b > a > index
,因为b
对a
具有静态依赖关系,而a
可以推迟评估b
。然而,自然地,Webpack并不知道这一点(根据规范也不应该这样)。
我想写一个Webpack插件和/或加载器,让我可以执行以下操作:
import {B} from 'defer!./b';
defer
加载器会导致a
对b
的依赖关系被添加到依赖关系图中,但是为了命令模块执行而被忽略。< / p>
是否有可以访问的插件或加载器的API来完成此操作?我在文档中没有看到任何内容。任何帮助或建议将不胜感激。