Add custom transform for extracting i18next keys from TypeScript files (#7138)

GitOrigin-RevId: 3b435b999c72e666eff25f86eb65e0368e953910
This commit is contained in:
Alf Eaton 2022-03-21 10:26:25 +00:00 committed by Copybot
parent 8b253b32f7
commit 55c5973d37

View file

@ -1,7 +1,11 @@
const fs = require('node:fs')
const path = require('node:path')
const typescript = require('typescript')
module.exports = {
input: [
'frontend/js/**/*.{js,jsx}',
'modules/**/*.{js,jsx}',
'frontend/js/**/*.{js,jsx,ts,tsx}',
'modules/**/*.{js,jsx,ts,tsx}',
'!frontend/js/vendor/**',
],
output: './',
@ -24,4 +28,22 @@ module.exports = {
lineEnding: '\n',
},
},
// adapted from https://github.com/nucleartux/i18next-scanner-typescript/blob/master/src/index.js
transform: function (file, enc, done) {
const { base, ext } = path.parse(file.path)
if (['.ts', '.tsx'].includes(ext) && !base.endsWith('.d.ts')) {
const content = fs.readFileSync(file.path, enc)
const { outputText } = typescript.transpileModule(content, {
compilerOptions: { target: 'es2018', jsx: 'preserve' },
fileName: base,
})
this.parser.parseTransFromString(outputText)
this.parser.parseFuncFromString(outputText)
}
done()
},
}