如何巧妙地包含所有必要的文件?

时间:2014-03-10 15:23:10

标签: angularjs karma-runner

现在我的Karma配置包含以下文件:

    files: [
        'vendor/vendor.js',
        'vendor/angular-mocks/angular-mocks.js',
        'src/components/security/index.js',
        'src/components/security/authentication.js',
        'src/components/security/login-controller.js',
        'src/components/filters/index.js',
        'src/components/filters/toDate.js',
        'src/components/services/index.js',
        'src/components/services/alert.js',
        'src/menu/index.js',
        'src/menu/menu-controller.js',
        'src/user/index.js',
        'src/manage/index.js',
        'src/manage/user/manage-user-controller.js',
        'src/manage/channel/manage-channel-controller.js',
        'src/stream/index.js',
        'src/stream/stream-controller.js',
        'src/messages/index.js',
        'src/messages/messages-controller.js',
        'src/app.js',
        'src/**/*.spec.js'
    ],

文件vendor/vendor.js由Gulp任务自动创建,该任务使用我的bower配置连接所有供应商文件。这是我自己的Javascript代码很难包含,因为订单很重要。文件夹中的index.js文件定义模块(及其路由),因此必须在单个文件之前加载。 app.js总是必须是最后一次。

所以我的问题是我如何更聪明地做这件事,例如使用首先包含所有index.js文件然后包含所有其他文件的glob?

2 个答案:

答案 0 :(得分:2)

这正是RequireJS的用途。您可以在已部署的代码中使用它,但您也可以将它用于测试。

如果你这样做,你的“karma.conf.js”会变得更短,更不稳定。您的RequireJS配置文件指定了一些依赖关系映射。每个测试规范最终都会指定它需要哪些依赖项,或者在“define”调用中以“声明”方式,或者有时通过“require”函数手动执行(有时需要后者来处理循环引用问题)。

答案 1 :(得分:2)

我想问这个问题给了我需要的想法:)这有效:

    files: [
        'vendor/vendor.js',
        'vendor/angular-mocks/angular-mocks.js',
        'src/*/**/index.js',
        'src/*/**/*.js',
        'src/app.js',
        'src/**/*.spec.js'
    ],

在index.js之后添加* .js会产生如下调试消息:

src/manage/index.js ignored. Already in the list.

出色!