我有一个使用 SystemJS 的项目 - 这不能改变。我们也在使用 StoryBooks,它使用 WebPack——这也不能改变。到目前为止,两人相处得很好。但是,我有一个模块可以将文件加载为纯文本并解析它们:
import stuff from './some-module!systemjs-plugin-text';
parseStuff(stuff);
如果我的项目使用 WebPack,上面的代码将如下所示:
import stuff from 'raw-loader!./some-module';
parseStuff(stuff);
由于 SystemJS 是“主要”模块加载器,我希望所有应用程序代码都保持以 SystemJS 为中心。我想为 webpack 编写一个自定义解析器来获取 SystemJS 样式的导入并“翻转”它们(可以这么说)。代码如下所示:
const moduleMap = {
'systemjs-plugin-text': 'raw-loader'
};
const formatModuleIdForWebPack (systemjsId) {
const webpackId = systemjsId.split('!').reverse();
webpackId[0] = moduleMap[ webpackId[0] ] || webpackId[0];
return webpackId.join('!');
}
formatModuleIdForWebPack('./some-module!systemjs-plugin-text');
//-> 'raw-loader!./some-module'
我遵循了几个创建自定义解析器的示例(此处和此处),但没有一个有效负载包含我重建请求对象所需的所有数据。有没有办法可以在模块解析的早期就连接到 WebPack以实现我的目标?