如何使用grunt uglify角度项目?

时间:2016-11-16 16:12:28

标签: angularjs gruntjs concat meanjs grunt-contrib-concat

我正在尝试部署meanjs项目,但似乎无法弄清楚如何使用grunt缩小,连接和扩展项目。

到目前为止我发现了什么:

  1. 需要运行concat -> ngAnnotate -> uglify(否则代码将无法运行)
  2. 需要以依赖顺序连接(否则它不会运行)
  3. 通过这种逻辑,我设法创建了相关第三方库(节点模块)的单个“uglified”版本,但我无法对我编写的模块执行相同的操作。

    我尝试过使用concat工具,这些工具应该根据依赖项重新排序文件(grunt-concat-in-order,grunt-concat-dependencies,grunt-concat-deps),但没有任何帮助。只是缺少模块/声明的错误。

    我已经尝试重新排序应该连接的js文件,并且每次缺少其他内容并且网站部分加载(充其量)。 根据文件在编译头中出现的顺序重新排序文件没有帮助。

    是否存在根据其依赖关系或根据我应该重新排序它们的一般逻辑来连接Angular文件的内容?

    感谢。

2 个答案:

答案 0 :(得分:1)

发现它! 显然JS和Angular是灵活的,缺少&#39 ;;'在模块/指令声明的最后。 我已经完成了整个代码并添加了缺失的&#39 ;;'在适当的地方。

例如:

angular.module('core').filter('xyz', [function() {
    .....
}])

最后可以去睡觉了。

*原帖: Angular module().factory() is not a function after concat (gulp)(为Max Yari欢呼)

答案 1 :(得分:0)

要检查的第一件事是你实际在代码中的任何地方都使用了DI模式,因为在uglification过程中函数参数将被替换,因此不再被解析了。

ControllerName.$inject = ['component'] 

或者

angular.module('module') 
   .controller(['module', function (module) { /*... */}) ;

当您完成此操作后,请检查您是否可以明确指定此类文件顺序(伪代码):

['module1_decl_file.js','module2_decl_file.js', '*.js','**/*.js']