Правильный способ поделиться зависимостями в Карме с RequireJS
Я использую карму и жасмин для своих юнит-тестов. у меня есть main-test.js
файл для настройки кармы и main.js
настроить мое приложение.
main-test.js
:
//
...
//
require.config({
baseUrl: '/base',
paths: {
jquery: 'components/jquery/dist/jquery', // this is copypaste
//another dependencies
},
//
...configuration
//
});
main.js
require.config({
paths: {
jquery: 'components/jquery/dist/jquery', // this is copypaste
//another dependencies
},
//
...configuration
//
});
Как правильно распределить пути между этими двумя конфигурациями?
1 ответ
Решение
Мы встретили ту же проблему с моей командой и в итоге потребовали основной конфигурационный файл в test-main.js:
// requiring global requireJS config
require(['/base/config/require.conf.js'], function() {
'use strict';
// first require.config overload: Karma specific
require.config({
baseUrl: '/base/src',
paths: {
'angularMocks': '../bower_components/angular-mocks/angular-mocks'
},
shim: {
'angularMocks': {
deps: ['angular']
}
}
});
require(['angularMocks'], function() {
var specFiles = [];
for (var file in window.__karma__.files) {
if (window.__karma__.files.hasOwnProperty(file)) {
if (/\/base\/src\/.*_test\.js$/.test(file)) {
specFiles.push(file);
}
}
}
// second overload to include specFiles and start Karma
require.config({
deps: specFiles,
callback: window.__karma__.start
});
});
});
Структура нашего начального приложения для проектов, использующих AngularJS + RequireJS, доступна здесь: https://github.com/glepretre/angular-requirejs-ready.
Я не утверждаю, что это правильный путь, только наш путь;)