Angular JS app在Grunt Compile上没有正确构建,(缩小)在Grunt watch / build上运行正常

时间:2014-06-20 08:18:51

标签: angularjs gruntjs bundling-and-minification minify

我正在尝试编译使用Angular JS(ngbp样板文件)的应用程序。我是Angular和SPA概念的新手。这是一个相对简单的应用程序,设置由Grunt构建。 问题很奇怪 - 当我做一个咕噜咕噜的手表时,应用程序构建良好,一切运行完美。但是,如果我进行咕噜声编译,应用程序中的某些内容将无法正常工作。

例如,使用状态使用ui-router的子模块的某些URL不会加载。控制台上没有错误。我的控制器都有内联依赖注入

例如。controller( 'app.subModule', ['$scope','localStorageService','$http','$rootScope','$stateParams', function($scope,localStorageService,$http,$rootScope,$stateParams) {.......})]);

缩小是否还有其他已知问题?

编辑:我做了一些调试,看起来只有这个特定的模块不能用于缩小。其余模块正在加载正常。该模块的代码是:

http://pastebin.com/6L0pR4bQ

EDIT2:我按照建议尝试使用ngmin,但这似乎并没有解决问题。只有这个模块无法加载。所有其他人都装得很好。所以我觉得问题出在这个模块的代码中。我也尝试手动注释函数,从pastebin代码粘贴中可以看出。

有人可以告诉我我做错了吗?

1 个答案:

答案 0 :(得分:2)

缩小的主要问题是函数的DI注释 - 在缩小之前,所有具有依赖注入的函数都应该手动注释。它不仅涉及控制器 - 还有模块runconfig,指令,服务,过滤器......

在大多数情况下使用grunt时,可以使用grunt-ngmin自动完成。

如果您需要一个很好的例子来配置所有这些 - 请查看yeoman/generator-angular


您需要为状态注释您的结果 - 因为它们不会被ngmin自动注释。您有:validStatepmGetPlan没有注释。

因为解析没有注释ui-router无法加载状态,默认情况下它是静默的...

您可以在$rootScope上添加事件处理程序:

$rootScope.$on('$stateChangeError',
 function (event, toState, toParams, fromState, fromParams, error) {
   console.log('$stateChangeError', event, toState, toParams, fromState, fromParams, error);
});