lang.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import express from 'express'
  2. import path from 'path'
  3. import bodyParser from 'body-parser'
  4. import * as fs from 'fs'
  5. import { fileURLToPath } from 'url'
  6. const __filename = fileURLToPath(import.meta.url)
  7. const __dirname = path.dirname(__filename)
  8. const startup = false
  9. const writeFile = (path, content) =>
  10. new Promise((resolve, reject) => {
  11. fs.writeFile(path, content, err => {
  12. if (err) {
  13. reject(err)
  14. } else {
  15. resolve()
  16. }
  17. })
  18. })
  19. const getFilePath = (lang) => path.join(__dirname, '../src/lang', `${lang}.ts`)
  20. const writeLang = (name, lang) => {
  21. const path = getFilePath(name)
  22. const content = `export default ${JSON.stringify(lang)}`
  23. return writeFile(
  24. path,
  25. content
  26. )
  27. }
  28. export async function createServer(port) {
  29. if (startup) {
  30. return
  31. }
  32. const app = express()
  33. app.use('/dev', bodyParser.json())
  34. app.use('/dev', bodyParser.urlencoded({ extended: false }))
  35. app.post('/dev/langs', async function (req, res) {
  36. const langs = req.body
  37. const handlers = Object.entries(langs).map(([name, lang]) =>
  38. writeLang(name, lang)
  39. )
  40. Promise.all(handlers)
  41. .then(() => res.json({ ok: true }))
  42. .catch(() => res.json({ ok: false }))
  43. })
  44. app.listen(port)
  45. console.log('语言编辑已开启')
  46. }