replaceEnv.mjs 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import * as fs from 'fs'
  2. import path from 'path'
  3. import getAppInfo from "./config/id.config.mjs";
  4. // 同步读取文件内容
  5. function readFileSync(filePath) {
  6. return fs.readFileSync(filePath, 'utf8');
  7. }
  8. // 同步写入文件内容
  9. function writeFileSync(filePath, data) {
  10. fs.writeFileSync(filePath, data, 'utf8');
  11. }
  12. // 替换文件中的文本
  13. function replaceTextInFileSync(filePath, matchKey, str, templateFilePath) {
  14. return replaceCustomTextInFileSync({
  15. filePath,
  16. templateFilePath,
  17. replaceFn: function (fileContent) {
  18. return fileContent.replaceAll(matchKey, str)
  19. }
  20. })
  21. }
  22. // 自定义替换文件中的文本
  23. function replaceCustomTextInFileSync({ filePath, templateFilePath, replaceFn }) {
  24. try {
  25. // 读取文件内容
  26. let fileContent = readFileSync(templateFilePath || filePath);
  27. // 替换文本
  28. const newContent = replaceFn(fileContent);
  29. // 写入新内容到文件
  30. writeFileSync(filePath, newContent);
  31. console.log('环境文本替换:', filePath);
  32. } catch (error) {
  33. console.error('文本替换失败:', error);
  34. }
  35. }
  36. function replaceStyle (color) {
  37. replaceTextInFileSync(path.resolve('./src/assets/env_style/scss.scss'), '#2ABED1', color, path.resolve('./script/template/env_style/scss.scss'))
  38. replaceTextInFileSync(path.resolve('./src/assets/env_style/less.less'), '#2ABED1', color, path.resolve('./script/template/env_style/less.less'))
  39. }
  40. function replaceAppConfig (data) {
  41. replaceTextInFileSync(path.resolve('./project-config/index.js'), 'const appConfig = {}', `const appConfig = ${JSON.stringify(data)}`, path.resolve('./script/template/project-config.js'))
  42. replaceTextInFileSync(path.resolve('./project-config/index.common.js'), 'const appConfig = {}', `const appConfig = ${JSON.stringify(data)}`, path.resolve('./script/template/project-config.common.js'))
  43. }
  44. function replaceAppID (data) {
  45. replaceCustomTextInFileSync({
  46. filePath: path.resolve('./project.config.json'),
  47. templateFilePath: path.resolve('./script/template/project.config.json'),
  48. replaceFn: (content) => {
  49. let result = content.replaceAll('APP_ID', data.projectInfo.appId)
  50. result = result.replaceAll('APP_CODE', data.projectInfo.appCode)
  51. return result
  52. }
  53. })
  54. }
  55. export function replaceEnvCode (appCode) {
  56. const appInfo = getAppInfo(appCode)
  57. // 替换AppId、Tabbar、图标、全部商机列表配置
  58. replaceAppID(appInfo)
  59. replaceAppConfig(appInfo)
  60. // 替换主题色
  61. replaceStyle(appInfo.projectInfo.themeColor)
  62. // 替换请求域名、资源域名
  63. }