Мы хотели бы иметь возможность добавлять пользовательские функции к polymer build
и polymer serve
путем настройки пользовательских плагинов Babel.
Например, поскольку полимер-кли использует Babel внутри, мы должны добавить файл babel.config.js
в нашу рабочую область/корневой каталог проекта, например:
module.exports = function (api) {
api.cache(true);
const presets = [ ];
const plugins = [
"@babel/plugin-proposal-optional-chaining"
];
return {
presets,
plugins
};
}
... и затем мы могли бы обслуживать или создавать наш проект с поддержкой опциональной цепочки и т. д. Это позволило бы нам делать все, что угодно, написав дополнительные плагины babel для обработки таких вещей, как минимизация внутри строк HTML шаблона...
К сожалению, в настоящее время это не работает. polymer-build
, кажется, загружает конфигурацию (из-за использования babel/core?), но polymer-analyze
нет. Ошибка генерируется на этапе оптимизации сборки, выполняемом полимерным анализом, как только он встречает синтаксис необязательной цепочки в нашем исходном коде:
error: Error: Unable to get document file:///.../somefile.js: This experimental syntax requires enabling the parser plugin:
'optionalChaining' (423:6)
at BuildAnalyzer.<anonymous> (/usr/local/share/.config/yarn/global/node_modules/polymer-build/lib/analyzer.js:342:23)
at Generator.next (<anonymous>)
at fulfilled (/usr/local/share/.config/yarn/global/node_modules/polymer-build/lib/analyzer.js:17:58)
at process._tickCallback (internal/process/next_tick.js:68:7)
polymer serve
тоже выдает ошибку:
Error { SyntaxError: This experimental syntax requires enabling the parser plugin: 'optionalChaining' (423:6)
at Parser.raise (/usr/local/share/.config/yarn/global/node_modules/babylon/lib/index.js:776:15)
at Parser.expectPlugin (/usr/local/share/.config/yarn/global/node_modules/babylon/lib/index.js:2084:18)
...
pos: 13056, loc: Position { line: 423, column: 6 },
missingPlugin: [ 'optionalChaining' ] }
В обоих случаях я подтвердил, что файл babel.config.js
загружается. Но babel включен в несколько разных пакетов, используемых в полимер-кли, поэтому я подозреваю, что в некоторых из них babel используется без информации о конфигурации (загрузили babel/core).
Может ли кто-нибудь, связанный с полимерным проектом, подтвердить, правильно ли я определил основную проблему? Я изучаю возможность внести исправление/улучшение, если объем не слишком велик.
Спасибо.