utils.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. const os = require('os');
  2. const fs = require('fire-fs');
  3. const path = require('fire-path');
  4. module.exports = {
  5. isVersion (str) {
  6. return (/^\d+\.\d+\.\d+$/).test(str);
  7. },
  8. readFileSync (filePath, mode) {
  9. let data;
  10. try {
  11. data = fs.readFileSync(filePath, mode);
  12. } catch (error) {
  13. Editor.error('readFileSync error:', error);
  14. }
  15. return data;
  16. },
  17. writeFileSync (filePath, data, mode) {
  18. fs.writeFile(filePath, data, mode, (error)=>{
  19. if (error) {
  20. Editor.error('readFileSync error:', error);
  21. return false;
  22. }
  23. Editor.log(filePath + '写入成功');
  24. });
  25. },
  26. isURL (str) {
  27. let strRegex = '(https?|ftp|file)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]';
  28. let re = new RegExp(strRegex);
  29. return str.match(re);
  30. },
  31. getRelative (from, to) {
  32. return path.relative(from, to);
  33. },
  34. accessPath (filePath, callback) {
  35. fs.access(filePath, callback);
  36. },
  37. createProjectManifestAssets (assetdb, host, callback) {
  38. let manifestFmt =
  39. '{\n' +
  40. ' packageUrl: %s,\n' +
  41. ' remoteManifestUrl: \'%s/project.manifest\',\n' +
  42. ' remoteVersionUrl: \'%s/version.manifest\',\n' +
  43. ' version: \'100001\',\n' +
  44. ' assets: {},\n' +
  45. ' searchPaths: []\n' +
  46. '}\n';
  47. host = host.replace(/\\/g, '/');
  48. host = encodeURI(host);
  49. let manifest = manifestFmt.replace(new RegExp('%s', 'g'), host);
  50. Editor.Scene.callSceneScript('build-helper', 'createAssets', assetdb, manifest, callback);
  51. },
  52. createVersionManifestAssets (assetdb, host, callback) {
  53. let manifestFmt =
  54. '{\n' +
  55. ' packageUrl: %s,\n' +
  56. ' remoteManifestUrl: \'%s/project.manifest\',\n' +
  57. ' remoteVersionUrl: \'%s/version.manifest\',\n' +
  58. ' version: \'100001\',\n' +
  59. '}\n';
  60. host = host.replace(/\\/g, '/');
  61. host = encodeURI(host);
  62. let manifest = manifestFmt.replace(new RegExp('%s', 'g'), host);
  63. Editor.Scene.callSceneScript('build-helper', 'createAssets', assetdb, manifest, callback);
  64. },
  65. copyFolder (src, dst) {
  66. if (!fs.existsSync(dst)) {
  67. fs.mkdirSync(dst);
  68. }
  69. let paths = fs.readdirSync(src); // 同步读取当前目录
  70. paths.forEach((aPath) => {
  71. let _src = path.join(src, aPath);
  72. let _dst = path.join(dst, aPath);
  73. let stats = fs.statSync(_src);
  74. if (stats.isFile()){
  75. // 如果是个文件则拷贝
  76. fs.copyFileSync(_src, _dst);
  77. } else {
  78. if (!fs.existsSync(_dst)) {
  79. fs.mkdirSync(_dst);
  80. }
  81. // 是目录则 递归
  82. this.copyFolder(_src, _dst);
  83. }
  84. });
  85. },
  86. /**
  87. * 获取本机IP
  88. */
  89. getIPAdress () {
  90. var interfaces = os.networkInterfaces();
  91. for (var devName in interfaces) {
  92. var iface = interfaces[devName];
  93. for (var i = 0; i < iface.length; i++) {
  94. var alias = iface[i];
  95. if (alias.family === 'IPv4' && alias.address !== '127.0.0.1' && !alias.internal) {
  96. return alias.address;
  97. }
  98. }
  99. }
  100. },
  101. findFileSync (aPath, cb) {
  102. let dirs = fs.readdirSync(aPath);
  103. dirs.forEach((ele, index) => {
  104. let fullpath = path.join(aPath, ele);
  105. let info = fs.statSync(fullpath);
  106. if (info.isDirectory()) {
  107. this.findFileSync(fullpath, cb);
  108. } else {
  109. cb(fullpath);
  110. }
  111. });
  112. },
  113. rmdirSync (aPath) {
  114. let files = [];
  115. if (fs.existsSync(aPath)) {
  116. files = fs.readdirSync(aPath);
  117. files.forEach((file, index) => {
  118. let curPath = aPath + '/' + file;
  119. if (fs.statSync(curPath).isDirectory()) {
  120. this.rmdirSync(curPath);
  121. } else {
  122. fs.unlinkSync(curPath);
  123. }
  124. });
  125. fs.rmdirSync(aPath);
  126. }
  127. }
  128. };