Извлечение строк из исходных файлов во время комплектации веб-пакетов - PullRequest
0 голосов
/ 07 декабря 2018

У меня есть приложение Vue, которое использует Webpack 3 в качестве компоновщика.Приложение содержит пользовательские теги перевода ({% trans %}...{% endtrans %} в качестве шаблонов, использовавшихся в стиле Jinja2), которые преобразуются в $(...) как часть комплектации (с использованием replace-string-loader), что vuex-i18n требует.

Есть ли способ извлечь все строки $t() как часть пакета в файл, чтобы этот файл можно было перевести?Поскольку replace-string-loader должен сначала обработать файлы, я ожидаю, что этот экстрактор перевода будет интегрирован в файл webpack.conf (как часть массива module.rules)?Есть ли что-нибудь, что уже выполняет эту работу, или кто-то может помочь, как написать такой «загрузчик»?

1 Ответ

0 голосов
/ 08 декабря 2018

если $t() является вызовом функции, вы можете написать плагин веб-пакета, который будет перехватывать синтаксический анализатор и отслеживать все вызовы, а затем записывать их в файл, используя emit hook для записи собранных данных в файл.

compiler.hooks.normalModuleFactory.tap('MyPlugin', factory => {
  factory.hooks.parser.for('javascript/auto').tap('MyPlugin', (parser, options) => {
    parser.hooks.expression.for('$t').tap("MyPlugin", expr => {
       console.log(expr);
    });
  });
});

Хороший пост в блоге о запуске с плагинами веб-пакетов: https://medium.com/webpack/the-contributors-guide-to-webpack-part-2-9fd5e658e08c

Вы можете проверить исходный код providePlugin в качестве ссылки прочитайте здесь что он делает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...