最有效的方式来Grunt concat目录文件?

时间:2014-06-11 20:24:42

标签: javascript angularjs gruntjs grunt-contrib-concat

我为这个非常尴尬的问题标题道歉,如果有人能想出更好的方式来表达这个问题,我会马上改变它。

我正在使用Angular和RequireJS构建应用程序,并尝试优化性能,依赖性和延迟加载我正在寻找构建这样的文件结构:

/app
----/regisitration
--------_registration.module.js
--------registration.ctrl.js
--------registration.svc.js
--------registration.directive.js
----/courses
--------_courses.module.js
--------courses.directive.js
--------courses.controller.js
--------courses.service.js
--------/course
------------course.controller.js
----/admin
--------_admin.module.js
--------admin.controller.js

在我设置路由的位置,我希望能够让访问任何/registration/视图的用户加载整个_registration.module.js,这将是所有其他{{1}的串联.js目录(以及任何子目录)中的文件,这样我的团队就不会陷入困境,因为需要包含多个可能重复的依赖项,并将整个站点“部分”提供给用户一枪。希望上面的示例说明为什么我不想只加载所有文件,因为大多数用户永远不会访问网站的/registraion部分。我试图找出用grunt实现这一目标的最有效方法,但到目前为止,我正在非常手动地使用这样的代码:

admin

我认为必须有一种更有效,更少手动的方式去做我想要实现的目标。有没有人有任何建议?

1 个答案:

答案 0 :(得分:0)

请记住,您仍然可以在Gruntfile中执行JavaScript。

grunt.initConfig({
  concat: {
    app: {
      files: grunt.file.expand({ cwd: 'app', filter: 'isDirectory' }, '*')
      .map(function(ngModule) {
        return { 
          src: ['app/' + ngModule + '/*.js', '!app/' + ngModule + '/*.module.js'],
          dest: 'app/' + ngModule + '/_' + ngModule + '.module.js'
        };
      })
    }
  },
});

有了这个,您应该能够创建新模块而无需记住更新它们的配置条目。