Как заставить angularjs-dragula работать с grunt-contrib-requirejs
Я использую grunt и requirejs (через grunt-contrib-requirejs) для компиляции одного файла kernel.js со всеми зависимостями js. В этой конфигурации большинство угловых модулей устанавливаются просто отлично, но у меня есть реальная проблема с angularjs-dragula.
Мне интересно, получил ли кто-нибудь angularjs-dragula, работающий на корпоративной среде, построенной с использованием grunt-contrib-requirejs. Технические подробности о том, что я попробовал ниже:
согласно примеру в модуле, если вы включаете файлы непосредственно в HTML, вы можете включить angular, затем angularjs-dragula, затем ваше приложение и в ваше приложение, включить dragula через
var app = angular.module('my-app', [angularDragula(angular)]);
однако, если я просто включу приведенную выше строку (как рекомендуется, когда не используется requirejs и просто включаю библиотеку через html), я получаю сообщение об ошибке angularDragula не определено, и если я добавлю строку (рекомендуется для использования requirejs???, то документы неясно)
var angularDragula = require('angularjs-dragula');
Я получаю имя модуля "angularjs-dragula", который еще не загружен для контекста, и если я пытаюсь обернуть остальную часть инициализации моего приложения в требовании
require(['vendor/angularjs-dragula/angularjs-dragula',function(angularjsDragula){
var app = angular.module('my-app', [angularDragula(angular)]);
... rest of app initialization here
}
он выдает ошибку с совершенно бессмысленной ошибкой "приложение не определено", указывающее на последнюю строку файла service.js в dragula
в моем gruntfile параметры requirejs выглядят так
requirejs: {
dev: {
options: {
mainConfigFile: 'require.main.js',
optimize: 'none',
out: 'dist/kernel.js',
preserveLicenseComments: false,
generateSourceMaps: false
}
},
},
минимальный require.main.js выглядит так:
(function()
{require({
include: [
"app/init",
"vendor/angular/angular",
"vendor/angularjs-dragula/angularjs-dragula",
"vendor/requirejs/require"
],
paths: {
"app/init":"path/to/app/init",
"vendor/angular/angular":"path/to/angular",
"vendor/angularjs-dragula/angularjs-dragula":"path/to/angularjs-dragula",
"vendor/requirejs/require":"path/to/requirejs/require"
},
shim: {
"vendor/angularjs-dragula/angularjs-dragula":["vendor/angular/angular"],
"app/init":["vendor/angularjs-dragula/angularjs-dragula","vendor/angular/angular"]
}
})
}).call(this);
Angularjs версия 1.5