使用 gulp-ng-annotate 和 gulp-systemjs-builder

Posted

技术标签:

【中文标题】使用 gulp-ng-annotate 和 gulp-systemjs-builder【英文标题】:using gulp-ng-annotate with gulp-systemjs-builder 【发布时间】:2017-09-22 03:15:22 【问题描述】:

我以 CJS 格式编写了我的 angularjs 应用程序,并使用 gulp-systemjs-builder 将它们捆绑到一个文件中。

我正在尝试将输出通过管道传输到 gulp-ng-annotate 以用于 DI,但它失败了,因为 systemjs-builder 在 \* @ngInject *\ 和函数声明之间插入了几行。

例子:

捆绑前:

/* @ngInject */ 
function ReportCtrl($scope) 
    var _ctrl = this;

捆绑后:

/* @ngInject */ 
var global = this || self,
    GLOBAL = global;
function ReportCtrl($scope) 
    var _ctrl = this;

谁能建议我如何解决这个问题?

【问题讨论】:

【参考方案1】:

在https://github.com/olov/ng-annotate找到解决方案

我不得不使用字符串"ngInject"; 作为函数声明后的第一行,而不是使用注释/* @ngInject */。这样gulp-systemjs-builder 就不会弄乱顺序,ng-annotate 可以成功地注释函数。

所以不要写这个 -

/* @ngInject */ 
function ReportCtrl($scope) 
    var _ctrl = this;

我必须写这个 -

function ReportCtrl($scope) 
    "ngInject";
    var _ctrl = this;

【讨论】:

以上是关于使用 gulp-ng-annotate 和 gulp-systemjs-builder的主要内容,如果未能解决你的问题,请参考以下文章

python --Tkinter详解

AS3 使用列表组件和 MouseEvent 监听器

gulp的使用

webpack入门

对webpack和gulp的理解和区别

angular controller js 压缩后报错解决方案