2016-12-25 5 views
3

Я искал какое-то время, но я не нашел решение моей проблемы. Я использую require.js и использовать плагин для загрузки данных динамически для некоторых из модулейКак исключить зависимости плагина во время оптимизации requirejs

define(['Plugin!data', 'dependency'], function(data, dep) { 
    ... 
} 

возникает проблема, когда я пытаюсь оптимизировать все модули в одном сборке используя r.js

requirejs.optimize({ 
    baseURL: '/js', 
    name: 'main', 
    ... 
}) 

Оптимизатор пытается загрузить данные через плагин. Есть ли способ избежать этого?

именно: как сказать, оптимизатор не пройти через что-либо в формате плагин ...

ответ

1

Вы можете использовать exclude в конфигурации сборки, чтобы исключить такие модули!. Например:

({ 
    baseUrl: "js", 
    dir: "build", 
    removeCombined: true, 
    optimize: "none", 
    modules: [ 
     { 
      name: "built", 
      create: true, 
      include: [ 
       "modA", 
      ], 
      exclude: [ 
       "text!./x.json", 
      ], 
     }, 
    ], 
}) 

Проблема с этим, хотя в том, что нет никакого сравнения с шаблоном в exclude и вы будете в конечном итоге, список каждого модуля в отдельности, который может быть немного проблематично на больших кодовых баз.

Другой способ заключается в использовании onBuildWrite, чтобы удалить все модули, начиная с text!:

({ 
    baseUrl: "js", 
    dir: "build", 
    removeCombined: true, 
    optimize: "none", 
    modules: [ 
     { 
      name: "built", 
      create: true, 
      include: [ 
       "modA", 
      ], 
     }, 
    ], 
    // Use onBuildWrite to exclude modules loaded through plugin. 
    onBuildWrite: function (moduleName, path, contents) { 
     if (moduleName.lastIndexOf("text!", 0) === 0) { 
      return ""; 
     } 
     return contents; 
    }, 
})