2013-03-27 2 views
4

Отказ от ответственности: Я всего драм n00b.AMD Optimizer (r.js) не производит никакого вывода

У меня есть проект, который я пытаюсь преобразовать в AMD. Первоначально весь код находился в одном файле. Я смог разделить функциональные модули на свои собственные модули, но все они были в одном файле. Я решил разделить их на модули AMD, а затем объединить все с помощью оптимизатора. Полезный вкладчик уже преобразовал мой модуль в UMD, и поэтому было довольно просто переместить все.

Мой главный файл (то есть, моя библиотека, что я пишу) выглядит следующим образом:

(function (root, factory) { 
    if (typeof define === 'function' && define.amd) { 
     // AMD. Register as an anonymous module. 
     define(factory); 
    } else { 
     // Browser globals 
     root.regula = factory(); 
    } 
}(this, function() { 
    define(
     [ 
      "utils/MapUtils", 
      "utils/DOMUtils", 
      "service/BindingService", 
      "service/ExceptionService", 
      "service/ConstraintService", 
      "service/ValidationService", 
      "service/GroupService" 
     ], 
     function (MapUtils, DOMUtils, BindingService, ExceptionService, ConstraintService, ValidationService, GroupService) { 

      ... 
      ... 

      return { 
       configure: configure, 
       bind: bind, 
       unbind: unbind, 
       validate: validate, 
       custom: custom, 
       compound: compound, 
       override: override, 
       Constraint: ConstraintService.Constraint, 
       Group: GroupService.Group, 
       DateFormat: DateFormat, 
       Exception: ExceptionService.Exception 
      }; 
     } 
    ); 
})); 

И моя структура каталогов выглядит следующим образом:

regula 
├── amdtest.html 
├── dist 
│   └── src 
└── src 
    ├── build.js 
    ├── domain 
    │   └── CompositionGraph.js 
    ├── jquery.regula.js 
    ├── lib 
    │   ├── closure 
    │   │   └── compiler.jar 
    │   ├── require 
    │   │   ├── require.js 
    │   │   └── r.js 
    │   └── rhino 
    │    └── js.jar 
    ├── parser 
    │   └── Parser.js 
    ├── regula.js 
    ├── service 
    │   ├── BindingService.js 
    │   ├── ConstraintService.js 
    │   ├── ExceptionService.js 
    │   ├── GroupService.js 
    │   └── ValidationService.js 
    └── utils 
     ├── ArrayUtils.js 
     ├── DOMUtils.js 
     └── MapUtils.js 

build.js Мои является:

({ 
    appDir: "../", 
    baseUrl: "src", 
    dir: "../dist", 
    modules: [{ 
     name: "regula" 
    }] 
}) 

Я использую Rhino и Closure для запуска оптимизатора следующим образом:

java -cp lib/rhino/js.jar:lib/closure/compiler.jar org.mozilla.javascript.tools.shell.Main lib/require/r.js build.js 

К сожалению, это не приводит к каким-либо выводам или ошибкам. Все модули Javascript, на которые ссылаются в regula.js, также являются модулями AMD. Любая идея, что я делаю неправильно? Я могу разместить дополнительную информацию, если это поможет. Я не хотел делать огромную дамп случайной информации, потому что, как я упоминал ранее, я полный новичок, когда дело доходит до AMD, и поэтому я не совсем уверен, что актуально.

+1

Похож на ту же самую проблему, которая разрешена здесь: [Require.js optimizer - Неполадки в работе] (http://stackoverflow.com/questions/15070974/require-js-optimizer-trouble-getting-going) [короче: вы не указали флаг «-o» на r.js] – kryger

+0

@kryger Awesome! Спасибо; вот и все! Если вы добавите свой комментарий в качестве ответа, я могу его принять. –

+0

Ну, это точно оптимизировано. :-п – ceejayoz

ответ

2

Вы забыли передать флаг -o для запуска r.js в режиме оптимизатора! Подробнее в official docs

Смежные вопросы