bitrix-tools / cli

Консольный инструмент Битрикс-разработчика
58 stars 25 forks source link

Добавить обработку globals из bundle.config #58

Open svn72 opened 1 year ago

svn72 commented 1 year ago

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

Например такое поведение может пригодиться при работе с vue sfc с использованием @vue/compiler-sfc для vue3. В итоговой рендер-функции появляется переменная vue которую бандлер не может корректно обработать, т.к. все импорты резолвятся либо как BX либо из других экстеншенов. image В данном случае это можно решить "пробросом" алиаса 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;
  }, []);
}