gpt4 book ai didi

angularjs - SystemJS 插件可以修改已经转译的文件吗?

转载 作者:搜寻专家 更新时间:2023-10-31 22:34:27 28 4
gpt4 key购买 nike

在尝试让 Angular (1.x) 与 systemjs 一起工作时,我意识到目前没有能力(据我所知)自动将 $inject 插入到 Angular 组件中,这使得即使函数的参数被缩小器破坏,组件也能正常工作。手动创建 $inject 注释是乏味的、容易出错的并且违反了 DRY 原则。

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

不过,据我所知,SystemJS 仅使您能够将特定文件扩展名映射到单个加载程序,并且插件的所有示例都支持新文件类型。我想做的是对 SystemJS 的转换过程的输出进行后处理,而不是添加新的文件类型。似乎 SystemJS 应该能够做到这一点,因为它有一个处理管道,但我不太清楚如何以正确的方式连接到它。现在我正在使用 Browserify 来实现相同的效果,但我最终得到了一组相当复杂的构建任务,如果可能的话我想用 SystemJS 简化它。

其他能够在 SystemJS 的加载器管道中使用 ng-annotate 的策略也将受到赞赏。

最佳答案

最后我想出了一个办法,但这感觉真的很笨拙。 System.src 本身使用一个 hook() 函数来执行此操作,但它不会被导出以供使用。如果有任何方法可以改进这一点,我将不胜感激,我希望最终可以使用一种适当支持的机制来链接加载程序功能:

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;
});
}

我没有对此进行太多试验,因为我的 System.js 构建的特定用例目前是死胡同(Typescript 源映射仍然被破坏),但大概你也可以返回一个 promise 。

我暂时不选择这个答案,看看是否有人有更好的建议。

关于angularjs - SystemJS 插件可以修改已经转译的文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32492095/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com