Как пропустить определение, включаемое в конец пакета, при объединении файлов сценариев, отличных от amd, с помощью оптимизатора requirejs r.js?
Я пытаюсь оптимизировать свой проект javascript с помощью оптимизатора r.js от requirejs. Я использую модули amd и non-amd в своем проекте. Будет две среды: одна со средой requirejs, а другая без среды requirejs. Файлы в среде non-requirejs не должны иметь по требованию или определять вызовы. При объединении amd-модулей в комплекты с использованием r.js вполне нормально иметь определенный вызов с именем комплекта в конце файла. Но для среды non-requirejs после оптимизации файлов они также получают определенную вставку в конце файла с именем модуля.
Давайте возьмем у меня четыре файла 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)
}
})
Это выглядит как сборка amd-файла.
define('A', function(){
//some stuff of A
});
define('B', function(){
//some stuff of B
});
define('bundle1',function(){});
Связанный не-amd файл выглядит так
//some stuff of C
});
//some stuff of D
define('bundle2',function(){});
Как решить эту ситуацию. Я прошел через документы по оптимизации и example.build.js. все еще не мог понять путь. Я что-то пропустил? Есть ли способ исключить это определение вызова в конце не-amd-модулей. Если да, то как?
1 ответ
Я вижу, что вы использовали опцию skipModuleInsertion, которая, основываясь на документации, должна была вам помочь. Я не уверен, почему это не так.
Другой вариант, который вы можете использовать - после завершения сборки перед записью в файл, вы можете удалить этот конкретный вызов define, используя onBuildWrite.