custom-rn-theme.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. const path = require('path');
  2. const fs = require('fs');
  3. const FileOption = {
  4. encoding: 'utf8'
  5. };
  6. // for 1.x
  7. // const defaultVars = require('antd-mobile/lib/style/themes/default');
  8. // for 2.x
  9. const themePath = path.resolve(require.resolve('@ant-design/react-native'), '../style/themes/default.js');
  10. // 提前变更文件的品牌变量,防止js引入时,到处的对象内属性值已经被解析为原始品牌变量值
  11. let themeFileStr = fs.readFileSync(themePath, FileOption);
  12. let reg = /('|")#\w*('|");/g;
  13. function handleReplace(str) {
  14. let flag = str;
  15. if (str && str === "'#108ee9';") {
  16. flag = "'#03C762';";
  17. }
  18. return flag;
  19. }
  20. const newFile = themeFileStr.replace(reg, handleReplace);
  21. fs.writeFileSync(
  22. themePath,
  23. newFile,
  24. FileOption
  25. );
  26. const defaultVars = require('@ant-design/react-native/lib/style/themes/default');
  27. const customVars = require('../theme');
  28. const themeVars = Object.assign({}, defaultVars, customVars);
  29. if (fs.statSync(themePath).isFile()) {
  30. fs.writeFileSync(
  31. themePath,
  32. `var brandPrimary = "#03C762"; var brandPrimaryTap = "#03C762";module.exports = ${JSON.stringify(themeVars)}`
  33. );
  34. }
  35. /*
  36. const path = require('path');
  37. const fs = require('fs');
  38. // for 1.x
  39. // const defaultVars = require('antd-mobile/lib/style/themes/default');
  40. // for 2.x
  41. const defaultVars = require('@ant-design/react-native/lib/style/themes/default');
  42. const customVars = require('../theme');
  43. // for 1.x
  44. // const themePath = path.resolve(require.resolve('antd-mobile'), '../style/themes/default.js');
  45. // for 2.x
  46. const themePath = path.resolve(require.resolve('@ant-design/react-native'), '../style/themes/default.js');
  47. const themeVars = Object.assign({}, defaultVars, customVars);
  48. if (fs.statSync(themePath).isFile()) {
  49. fs.writeFileSync(
  50. themePath,
  51. 'var brandPrimary = "#03C762"; var brandPrimaryTap = "#2fd07d";module.exports = ' + JSON.stringify(themeVars)
  52. );
  53. }
  54. */