Как заставить 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

0 ответов

Другие вопросы по тегам