deno_convert.ts 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. // import allTrans from './src/locales/lang/zh-CN/**/*.ts';
  2. import { recursiveReaddir } from 'https://deno.land/x/recursive_readdir/mod.ts';
  3. import { join, dirname, extname, basename } from 'https://deno.land/std/path/mod.ts';
  4. import { flatten } from 'https://deno.land/x/flatten@1.1.0/mod.ts';
  5. const currentPath = 'src/locales/lang/zh-CN';
  6. const currentLang = 'zh-CN';
  7. const transFiles = (await recursiveReaddir(join('.', currentPath))).filter(
  8. (file: string) => extname(file) === '.ts',
  9. );
  10. const allTrans = transFiles.map(async (src) => {
  11. const mod = (await import(`./${src}`)).default;
  12. const surfix = extname(src);
  13. const fileName = basename(src, surfix);
  14. const suFolder = basename(dirname(src));
  15. const data = {};
  16. if (suFolder == currentLang) {
  17. {
  18. data[fileName] = mod;
  19. }
  20. } else {
  21. const sub = {};
  22. sub[fileName] = mod;
  23. data[suFolder] = sub;
  24. }
  25. return data;
  26. });
  27. const obj = await Promise.all(allTrans);
  28. const lastObj = obj.map((item) => flatten(item));
  29. const last = Object.assign({}, ...lastObj);
  30. await Deno.writeTextFile(`${currentLang}.json`, JSON.stringify(last));