cli
cli copied to clipboard
Добавить обработку globals из bundle.config
При работе с дополнительными плагинами невозможно уточнить как обрабатывать импорты для них, хотя непосредственно rollup это позволяет
Например такое поведение может пригодиться при работе с vue sfc с использованием @vue/compiler-sfc
для vue3. В итоговой рендер-функции появляется переменная vue
которую бандлер не может корректно обработать, т.к. все импорты резолвятся либо как BX
либо из других экстеншенов.
В данном случае это можно решить "пробросом" алиаса
vue:BX.Vue3
в итоговый конфиг для rollup.
Пример собранный на коленке:
// файл - bitrix.build.js
function getGlobals(imports, {
context,
globals
}) {
return imports.reduce((accumulator, extensionName) => {
//...
let moduleAlias = 'BX';
if (fs.existsSync(configPath)) {
//...
} else if (globals.hasOwnProperty(moduleName)) {
moduleAlias = globals[moduleName]
}
accumulator[extensionName] = moduleAlias;
return accumulator;
}, {});
}
function getConfigs(directory) {
//...
return glob.sync(pattern, options).reduce((acc, file) => {
//...
configs.forEach(currentConfig => {
//...
acc.push({
input: path.resolve(context, currentConfig.input),
output,
globals: currentConfig.globals || {},
//...
});
return acc;
}, []);
}