SystemJS插件可以修改已经传输的文件吗?

当试图让Angular(1.x)与systemjs一起工作时,我意识到目前还没有能力(我知道)将$inject自动插入到angular度组件中,即使当函数的参数是被缩小器弄坏了。 手动创build$inject注释注解是单调乏味的,容易出错,违反了DRY本体

有一个称为ng-annotate的成熟的npm模块可以解决这个问题,并且在许多类似的情况下用于捆绑。 正如我一直在探索SystemJS,我看到有一个插件系统,包括翻译源代码的能力,这正是ng-annotate所做的。

但是,从我所看到的,SystemJS只允许您将特定文件扩展名映射到单个加载程序,并且插件的所有示例都将支持新的文件types。 我想要做的是后处理SystemJS的transpilation过程的输出,而不是添加一个新的文件types。 看起来像SystemJS应该能够做到这一点,因为它有一个处理pipe道,但我不能完全弄清楚如何正确的方法。 现在我正在使用Browserify来达到同样的效果,但是我最终得到了一组相当复杂的构build任务,如果可能的话,我想用SystemJS来简化它。

其他能够在SystemJS的加载器pipe道中使用ng-annotate的策略也是值得赞赏的。

       

网上收集的解决方案 "SystemJS插件可以修改已经传输的文件吗?"

最终我find了一个办法,但这感觉真的很笨重。 System.src本身使用一个hook()函数来做到这一点,但是它不会被导出使用。 我会很感激任何方式来改善这一点,我希望最终一个恰当的支持加载器function的机制变得可用:

 var System = require('systemjs'); var systemTranslate = System.translate; System.translate = function(load) { return systemTranslate.call(this, load).then(function (result) { if (result) { var processedResult = result; // Do your processing here. load.source = processedResult; } return load.source; }); }