wepack.dev.server.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. const fs = require('fs')
  2. const path = require('path')
  3. const bodyParser = require('body-parser');
  4. const langDir = path.join(__dirname, '../src/lang')
  5. const oss = require('ali-oss');
  6. const OSSCONFIG = {
  7. region: 'oss-cn-shenzhen',
  8. //云账号AccessKey有所有API访问权限,建议遵循阿里云安全最佳实践,部署在服务端使用RAM子账号或STS,部署在客户端使用STS。
  9. accessKeyId: 'LTAI4G6f1efh9idnE8DfA71X',
  10. accessKeySecret: 'UQBHqXh4saRBXZeOYAIhJhnuzIcyhR',
  11. bucket: '4dscene'
  12. }
  13. const store = oss(OSSCONFIG)
  14. var FtpDeploy = require("ftp-deploy");
  15. var ftpDeploy = new FtpDeploy();
  16. var config = {
  17. user: "xuzhihao",
  18. // Password optional, prompted if none given
  19. password: "xuzhihao123",
  20. host: "192.168.0.115",
  21. port: 2222,
  22. localRoot: './../common/data/',
  23. remoteRoot: "/测试服务器-120.25.146.52/root/user/java/apache-tomcat-8.0.47/webapps/4dkankan_v2/WEB-INF/classes/web/www/newsList",
  24. include: ["news.json", 'news-en.json'],
  25. exclude: ["dist/**/*.map", "node_modules/**", "node_modules/**/.*", ".git/**"],
  26. deleteRemote: false,
  27. forcePasv: true,
  28. sftp: true
  29. };
  30. module.exports = function(app, server) {
  31. app.use('/dev', bodyParser.json());
  32. app.use('/dev', bodyParser.urlencoded({ extended: false }));
  33. app.get('/dev/lang/:id', function(req, res) {
  34. let filePath = path.join(langDir, req.params.id + '/modules')
  35. const files = fs.readdirSync(filePath)
  36. let data = {}
  37. files.forEach(item => {
  38. delete require.cache[require.resolve(path.join(__dirname, `../src/lang/${req.params.id}/modules/${item}`))]
  39. data[item.replace(/\.\w+$/, '')] = require(path.join(__dirname, `../src/lang/${req.params.id}/modules/${item}`))
  40. })
  41. res.json({ ok: true, data });
  42. });
  43. app.post('/dev/lang/:id', async function(req, res) {
  44. await Object.keys(req.body).forEach(async item => {
  45. await fs.writeFile('./src/lang/' + req.params.id + `/modules/${item}.js`, 'module.exports = ' + JSON.stringify(req.body[item], null, 4), err => {
  46. res.json({ ok: true });
  47. })
  48. })
  49. });
  50. const localUrl = {
  51. zh: './../../common/data/news.json',
  52. en: './../../common/data/news-en.json'
  53. }
  54. app.get('/dev/news/:lang', async function (req, res) {
  55. res.json({data: require(localUrl[req.params.lang])})
  56. })
  57. app.post('/dev/news/update', async function(req, res) {
  58. const data = req.body.data
  59. const localUr1l = {
  60. zh: './../common/data/news.json',
  61. en: './../common/data/news-en.json'
  62. }
  63. await fs.writeFile(localUr1l[req.body.lang], `${JSON.stringify(data, null, 4)}`, async err => {
  64. console.log(err)
  65. ftpDeploy
  66. .deploy(config)
  67. .then(() => {
  68. res.json({ ok: true });
  69. })
  70. .catch(err => console.log(err));
  71. // try {
  72. // await store.put(oss_path, OUTPUT)
  73. // console.log('success')
  74. // } catch (err) {
  75. // console.log(err)
  76. // }
  77. })
  78. })
  79. }