【问题标题】:Most efficient way to Grunt concat directories files?Grunt concat 目录文件的最有效方法?
【发布时间】:2014-06-11 20:24:41
【问题描述】:

对于这个非常尴尬的问题标题,我深表歉意,如果有人能想到更好的方式来表达这个问题,我会立即更改它。

我正在使用 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,这将是@ 中所有其他.js 文件的串联987654325@ 目录(和任何子目录),这样我的团队就不会因为需要包含多个可能重复的依赖项以及一次性将整个站点“部分”提供给用户而陷入困境。希望上面的示例说明了为什么我不想只预先加载所有文件,因为大多数用户永远不会点击站点的admin 部分。我试图找出使用 grunt 实现这一目标的最有效方法,但到目前为止,我正在非常手动地使用如下代码:

grunt.initConfig({
  concat: {
    app: {
      files: [
        {
            src: ['..app/registration/*.js', '!..app/registraion/*.module.js'], 
            dest: '..app/registration/_registration.module.js'
        },
        {
            src: ['..app/courses/*.js', '!..app/courses/*.module.js'], 
            dest: '..app/courses/_courses.module.js'
        },
        {
            src: ['..app/admin/*.js', '!..app/admin/*.module.js'], 
            dest: '..app/admin/_admin.module.js'
        }
      ],
    }
  },
});

我认为必须有一种更高效、更少手动的方式来完成我想要实现的目标。有人有什么建议吗?

【问题讨论】:

    标签: javascript angularjs gruntjs grunt-contrib-concat


    【解决方案1】:

    请记住,您仍然可以在 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'
            };
          })
        }
      },
    });
    

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

    【讨论】:

    • 谢谢!需要进一步了解 Grunt 的工作原理,但我明白了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-07
    • 2014-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多