Редактировать
С WebPack 2 вы можете использовать System.import('./relative/path_to/messages.' + locale + '.xlf')
и Webpack загрузит файл и позволит избежать сканирования файлов, которые явно не возможный матч.
Оригинал
Есть (предположительно) несколько способов решения, но это один работал лучше для меня:
В моих i18n-providers.js:
function getTranslationFilesWithWebpack(locale: string) {
const translationFile = `./assets/locale/messages.${locale}.xlf`;
return require('' + translationFile)()
}
Это позволит webpack знать, что мы требуем файлы во время выполнения. Затем мы должны позволить webpack знать, как обрабатывать файлы.
В webpack.config.js:
module: {
rules: [
/*
* html, typescript and style rules
*/
{
test: /\.xlf/,
loader: 'promise-loader?es6-promise!raw'
},
{
test: /\.json/,
loader: 'ignore-loader'
}
]
}
Используя необработанный погрузчик конвейер к обещанию погрузчиком расскажет Webpack поставить мои XLF файлы в новом блоке, и загружать их по требованию, возвращая обещание, которое разрешит содержимое файла при вызове require('filename')()
.
Примечания:
- Вы должны сказать обещание-загрузчик, который обещают библиотеку использовать.
- Потому что я не говорю webpack, какой загрузчик использовать в
require('file')
, он попытается отсканировать все файлы и будет жаловаться, что он не может загрузить файлы .json. Вот почему мне пришлось настроить правило для json с загрузчиком игнорирования.
Надеюсь, это поможет.
использовать угловой кли ли? – Maxime
Нет, не в этом проекте, но я его не запустил. Возможно, это было начато с помощью angular-cli, потому что я вижу его в package.json. – Luftzig