18 lines
745 B
JavaScript
18 lines
745 B
JavaScript
const loaderUtils = require('loader-utils');
|
|
const { resolveBuiltinFormatter } = require('@formatjs/cli/src/formatters');
|
|
|
|
/**
|
|
* This is an async loader we use to compile localization resources and write back.
|
|
* Compare to FormatJS native compile function, it only support `format` option.
|
|
* @param content resource file content
|
|
*/
|
|
module.exports = async function i18nLoader(content) {
|
|
this.cacheable();
|
|
const callback = this.async();
|
|
const { format } = loaderUtils.getOptions(this) || {};
|
|
const formatter = await resolveBuiltinFormatter(format);
|
|
const resourceFileContent = JSON.parse(content);
|
|
const compiledContent = await formatter.compile(resourceFileContent);
|
|
return callback(null, JSON.stringify(compiledContent));
|
|
};
|