2014-11-02 3 views
0

Как оптимизировать несколько проектов requirejs? Например у меня есть эта структура ниже, где у меня есть два main.js в разных местах/папках,Requirejs Оптимизирует несколько проектов или страниц

build/ 
    build.js 

dev/  
    index.php 
    core/ 
     js/ 
     main.js 
     libs/ 
      jquery.js 


    local/ 
     js/ 
     main.js 

Мой билд/build.js

({ 
    // Where my HTML and JS is stored. 
    appDir: "../dev/", 

    // Top-level directory containing my JS: 
    baseUrl: "local/view/javascript/base/", 

    // Where to build the optimized project. 
    dir: "../dist", 

    // Define the modules to compile. 
    modules: [ 
     { 
      name: 'main', 

      mainConfigFile: '../dev/local/js/main.js' 
     }, 
     { 

      name: 'main', 

      mainConfigFile: '../dev/core/js/main.js' 
     } 
    ] 
}) 

Он продолжает неисправного сжатие или нахождение зависимостей, таких а,

ERROR: ENOENT, no such file or directory 'c:\wamp\websitename\dist\local\js\jquery.js

Мой query.js находится в core/js/libs/ - сывороткой он ищет его в local\js?

Что я пропустил?

ответ

1

main появляется дважды в настройках modules. Итак, вы говорите r.js «пожалуйста, создайте модуль main в ../dist с такими-то параметрами, а также создайте модуль main в ../dist разных вариантах». Как r.js предполагается создать два разных модулей, которые должны быть таких же файла в ../dist? Это невозможно.

Вы также не можете поставить mainConfigFile внутри конфигурации модуля так же, как и вы. Это вариант верхнего уровня, поэтому, если вы хотите иметь настройку для каждого модуля, вам нужно использовать override. И установка mainConfigFile не сообщает r.js, какой модуль вы на самом деле пытаетесь оптимизировать.

Нечто подобное, кажется, что необходимо на основе того, что вы описали в вопросе:

({ 
    // Where my HTML and JS is stored. 
    appDir: "../dev/", 

    // Top-level directory containing my JS: 
    baseUrl: "local/view/javascript/base/", 

    // Where to build the optimized project. 
    dir: "../dist", 

    // Define the modules to compile. 
    modules: [ 
     { 
      // Give a unique name. 
      name: 'main_local', 

      // This module does not exist in the source so tell r.js to 
      // *create* it. 
      create: true, 

      // What we want in it. 
      include: ['../dev/local/js/main.js'], 

      // "Override" the top level mainConfigFile, just for this module. 
      override: { 
       mainConfigFile: '../dev/local/js/main.js' 
      } 
     }, 
     { 
      name: 'main_core', 
      create: true, 
      include: ['../dev/core/js/main.js'], 

      override: { 
       mainConfigFile: '../dev/core/js/main.js' 
      } 
     }, 
    ] 
}) 
+0

спасибо за ответ Луи! : D – laukok

+0

Я все равно получаю ту же ошибку, хотя ... 'ERROR: ENOENT, нет такого файла или каталога 'c: \ wamp \ websitename \ dist \ local \ js \ jquery.js'. Я замечаю, что это происходит, когда 'mainConfigFile: '../ dev/local/js/main.js'' перемещается внутри' modules: [] '... – laukok

+0

Я не уверен, почему вы подразумеваете под« перемещенным внутри » Модули: [] '. В вашем вопросе это было * непосредственно * внутри' modules'. В моем ответе он находится внутри 'override', что делает' mainConfigFile' * косвенно * внутри 'modules'. Вы говорите о пробной версии где вы положили 'mainConfigFile' на верхний уровень? – Louis