Grunt:更改 index.html 中 js 文件的顺序

Grunt: change order of js files in index.html

我正在用 grunt 构建 angular 项目,假设我有以下结构:

-- app.js
-- modal
----createTemplate
------createTemplate.js
----modal.js

和createTemplate.js为模块实现控制器,在modal.js中声明,例如:

modal.js

angular.module('modal', [])
    .controller('ModalInstanceCtrl', function($scope) {
        //some stuff
    });

createTemplate.js

angular.module('modal')
    .controller('CreateTemplateCtrl', function($scope) {
        //some stuff
    });

我有 Grunt 任务,构建 index.html:

index: {
  build: {
    dir: '<%= build_dir %>',
    src: [
      '<%= build_dir %>/src/**/*.js'          
    ]
  }
}

因此,当我构建 index.html 时,我得到以下文件顺序:

<script type="text/javascript" src="src/app/home/modal/createTemplate/createTemplate.js"></script>
<script type="text/javascript" src="src/app/home/modal/modal.js"></script>

什么导致错误模块'modal'不可用!您要么拼错了模块名称,要么忘记加载它。如果注册模块,请确保将依赖项指定为第二个参数。,因为模块的声明是在调用它之后发生的。

那么,我应该如何编辑 gruntfile 以不按字母顺序添加文件,而是按广度优先搜索的顺序添加文件?

最好使用单独的文件来定义模块,并像 'modal-module.js' 那样调用它。之后,您可以使用以下参数轻松地首先注入模块文件:

index: {
  build: {
    dir: '<%= build_dir %>',
    src: [
        '<%= build_dir %>/app/app.js',
        '<%= build_dir %>/app/**/*module.js',
        '<%= build_dir %>/app/**/*constants.js',
        '<%= build_dir %>/app/**/*provider.js',
        '<%= build_dir %>/app/**/*enum.js',
        '<%= build_dir %>/app/**/*model.js',
        '<%= build_dir %>/app/**/*config.js',
        '<%= build_dir %>/app/**/*filter.js',
        '<%= build_dir %>/app/**/*directive.js',
        '<%= build_dir %>/app/**/*decorator.js',
        '<%= build_dir %>/app/**/*interceptor.js',
        '<%= build_dir %>/app/**/*service.js',
        '<%= build_dir %>/app/**/*workflow.js',
        '<%= build_dir %>/app/**/*repository.js',
        '<%= build_dir %>/app/**/*resolver.js',
        '<%= build_dir %>/app/**/*controller.js'        
    ]
  }
}