2017-01-08 8 views
0

Я пытаюсь оптимизировать свой проект javascript с оптимизатором r.js из requirejs. Я использую модули amd и non-amd в своем проекте. Будет две среды: одна с средой requirejs, а другая без среды requirejs. Файлы в среде non-requirejs не должны запрашивать или определять вызовы. Комбинируя amd-модули в пакеты с использованием r.js, хорошо иметь вызов define с именем пакета в конце файла. Но для среды non-requirejs после оптимизации файлов они также получают определение вставки в конце файла с именем модуля.Как пропустить определение, включаемое в конце пакета, при объединении файлов сценариев не-amd с использованием оптимизатора requirejs r.js?

Предположим, у меня есть четыре файла A и B, которые являются модулями AMD, а C и D - не-AMD.

моего build.js подобно этому

({ 
    appDir: "../", 
    baseUrl: "./", 
    dir : "../../../output", 
    paths: { 
     A : '../somepath/to/A', 
     B : '../somepath/to/B' 
    }, 
    modules : [ 
     { 
      name : 'bundle1', 
      create : true, 
      include : ['A', 'B'] 
     }, 
     { 
      name : 'bundle2', 
      create : true, 
      include : ['C', 'D'] 
     } 
    ], 
    // removeCombined : true, 
    cjsTranslate: false, 
    optimizeCss : "none", 
    skipModuleInsertion: true, 
    optimize: "uglify", 
    fileExclusionRegExp: /^(((r|app.build)\.js)|(v0))$/, 
    keepBuildDir: false, 
    bundlesConfigOutFile: "bundles.js", 
    onModuleBundleComplete : function(data) { 
     console.log(data) 
    } 

}) 

Это пучки драм-файл выглядит следующим образом.

define('A', function(){ 
//some stuff of A 
}); 
define('B', function(){ 
//some stuff of B 
}); 
define('bundle1',function(){}); 

В комплекте поставки не-драм-файл выглядит

//some stuff of C 
}); 
//some stuff of D 
define('bundle2',function(){}); 

Как разрешить эту ситуацию. Я просмотрел документы оптимизации и example.build.js. все еще не мог понять путь. Я что-то упускаю ? Есть ли способ исключить этот вызов define в конце не-amd-модулей. Если да, то как?

ответ

0

Я вижу, вы использовали skipModuleInsertion вариант, который на основе документации должен был вам помочь. Я не уверен, почему это не так.

Другой вариант вы можете использовать это после того, как сборка завершена, прежде чем писать в файл, вы можете удалить этот конкретный вызов определить с помощью onBuildWrite