package.js 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295
  1. var fs = require('fs')
  2. let folderPath = 'web-mobile';
  3. let pathRequire = require('path');
  4. let pathArr = pathRequire.resolve(__dirname, '..').split("\\");
  5. let newfolderPath = pathArr[pathArr.length-1];//'FightingSports'
  6. let fullFilePath = folderPath+'/index.html'
  7. let Package =
  8. {
  9. init()
  10. {
  11. let self = this;
  12. this.quoteScriptToIndexHtml(self,function(self)
  13. {
  14. console.log("1,引入Script到html成功");
  15. self.deleteFullScreenFromMain(self,function(self){
  16. console.log("2,删除全屏代码成功");
  17. self.copyImg(self,function(self,picName)
  18. {
  19. console.log("3,拷贝图片成功");
  20. self.changeCssBGPercentageAndPngName(self,picName,function()
  21. {
  22. console.log("4,修改Css背景图片百分比成功");
  23. self.changeFolderName(self,function()
  24. {
  25. console.log("5,修改文件夹名成功");
  26. console.log("\n打包成功!");
  27. });
  28. });
  29. });
  30. });
  31. });
  32. },
  33. //引入Script到html
  34. quoteScriptToIndexHtml(self,callback)
  35. {
  36. this.readFile(this,fullFilePath,function(str)
  37. {
  38. let regExp = /<script src="main(.+?)<\/script>/g;// '<script src="main.870be.js" charset="utf-8"></script>';
  39. let targetStr = str.match(regExp);
  40. // console.log(targetStr);
  41. let addStr = '<script type="text/javascript" src="//js.cdn.aliyun.dcloud.net.cn/dev/uni-app/uni.webview.1.5.2.js"></script>';
  42. let replaceStr = addStr+'\n'+targetStr;
  43. let newNata = str.replace(targetStr,replaceStr);
  44. self.writeFile(self,newNata,fullFilePath,function(){
  45. callback(self);
  46. });
  47. });
  48. },
  49. deleteFullScreenFromMain(self,callback)
  50. {
  51. let reg = /main.+?js/;// main.d1774.js
  52. let jsName = self.matchFileInFolder(folderPath,reg);
  53. //let jsName = 'main.d1774.js';//self.matchFileInFolder(folderPath,reg);
  54. if(jsName)
  55. {
  56. let aPath = folderPath+'/'+jsName;
  57. self.readFile(self,aPath,function(str){
  58. //change percentate
  59. // let targetStr = 'cc.view.enableAutoFullScreen([\
  60. // cc.sys.BROWSER_TYPE_BAIDU,\
  61. // cc.sys.BROWSER_TYPE_WECHAT,\
  62. // cc.sys.BROWSER_TYPE_MOBILE_QQ,\
  63. // cc.sys.BROWSER_TYPE_MIUI,\
  64. // ].indexOf(cc.sys.browserType) < 0);';
  65. let newNata = '';
  66. {
  67. let targetStr = 'cc.view.enableAutoFullScreen([';
  68. let replaceStr = '/*cc.view.enableAutoFullScreen([';
  69. newNata = str.replace(targetStr,replaceStr);
  70. }
  71. {
  72. let targetStr = '].indexOf(cc.sys.browserType) < 0);';
  73. let replaceStr = '].indexOf(cc.sys.browserType) < 0);*/';
  74. newNata = newNata.replace(targetStr,replaceStr);
  75. }
  76. //change png link
  77. let fileName = self.getFileName(jsName);
  78. self.writeFile(self,newNata,aPath,function(){
  79. callback(self);
  80. });
  81. })
  82. }
  83. },
  84. //拷贝图片
  85. copyImg(self,callback)
  86. {
  87. let reg = /splash.+?png/;// splash.85cfd.png
  88. let pngName = self.matchFileInFolder(folderPath,reg);
  89. // console.log('png='+pngName);
  90. if(pngName)
  91. {
  92. fs.unlinkSync(folderPath+'/'+pngName);
  93. let picReg = /splash.+?/;// splash.85cfd.png
  94. let picName = self.matchFileInFolder('./',picReg);
  95. // console.log('picName='+picName);
  96. if(picName)
  97. {
  98. let aPath = folderPath+'/'+file;
  99. fs.copyFile(picName,aPath,function(err)
  100. {
  101. if(err) {
  102. console.log('something wrong was happened')
  103. }
  104. else
  105. {
  106. let aName = self.getFileName(pngName);
  107. // console.log('aName='+aName);
  108. let aTail = self.getFileTail(picName);
  109. // console.log('aTail='+aTail);
  110. let newFileName = aName+'.'+aTail;
  111. // console.log('newFileName='+newFileName);
  112. // console.log('copy file succeed');
  113. let oldPath = folderPath+'/'+picName;
  114. let newPath = folderPath+'/'+newFileName;
  115. self.rename(oldPath,newPath,function()
  116. {
  117. callback(self,newFileName);
  118. });
  119. }
  120. });
  121. }
  122. }
  123. },
  124. // 修改Css背景图片百分比
  125. changeCssBGPercentageAndPngName(self,picName,callback){
  126. let reg = /style-mobile.+?css/;// style-mobile.6e9cd.css
  127. let cssName = self.matchFileInFolder(folderPath,reg);
  128. if(cssName)
  129. {
  130. let aPath = folderPath+'/'+file;
  131. this.readFile(this,aPath,function(str)
  132. {
  133. //change percentate
  134. let targetStr = 'background-size: 45%;';
  135. let replaceStr = 'background-size: 100%;';
  136. let newNata = str.replace(targetStr,replaceStr);
  137. //change png link
  138. let fileName = self.getFileName(picName);
  139. // console.log('fileName='+fileName);
  140. // console.log('picName='+picName);
  141. let newNata2 = newNata.replace(fileName+'.png',picName);
  142. // console.log(newNata)
  143. self.writeFile(self,newNata2,aPath,callback);
  144. });
  145. }
  146. },
  147. //修改文件夹名
  148. changeFolderName(self,callback)
  149. {
  150. let deleteall = function(path)
  151. {
  152. var files = [];
  153. if(fs.existsSync(path))
  154. {
  155. files = fs.readdirSync(path);
  156. files.forEach(function(file, index)
  157. {
  158. var curPath = path + "/" + file;
  159. if(fs.statSync(curPath).isDirectory())
  160. { // recurse
  161. deleteall(curPath);
  162. }
  163. else
  164. { // delete file
  165. fs.unlinkSync(curPath);
  166. }
  167. });
  168. fs.rmdirSync(path);
  169. }
  170. if(!fs.existsSync(newfolderPath))
  171. {
  172. self.rename(folderPath,newfolderPath,callback)
  173. }
  174. };
  175. // delete FightingSports
  176. deleteall(newfolderPath);
  177. },
  178. readFile(self,path,callback)
  179. {
  180. fs.readFile(path, function (error, data)
  181. {
  182. if (error)
  183. {
  184. // 在这里就可以通过判断 error 来确认是否有错误发生
  185. console.log('读取文件失败了')
  186. }
  187. else
  188. {
  189. // <Buffer 68 65 6c 6c 6f 20 6e 6f 64 65 6a 73 0d 0a>
  190. // 文件中存储的其实都是二进制数据 0 1
  191. // 这里为什么看到的不是 0 和 1 呢?原因是二进制转为 16 进制了
  192. // 但是无论是二进制01还是16进制,人类都不认识
  193. // 所以我们可以通过 toString 方法把其转为我们能认识的字符
  194. // console.log(data.toString())
  195. var str = data.toString();
  196. callback(str);
  197. }
  198. });
  199. },
  200. writeFile(self,newNata,path,callback)
  201. {
  202. // fs.wirteFile有三个参数
  203. // 1,第一个参数是要写入的文件路径
  204. // 2,第二个参数是要写入得内容
  205. // 3,第三个参数是可选参数,表示要写入的文件编码格式,一般就不写,默认就行
  206. // 4,第四个参数是个回调函数 只有一个参数error,来判断是否写入成功
  207. fs.writeFile(path, newNata, error =>
  208. {
  209. if (error) return console.log("写入文件失败,原因是" + error.message);
  210. // console.log("写入成功");
  211. callback();
  212. });
  213. },
  214. rename(oldPath,newPath,callback)
  215. {
  216. //同以目录下的文件更名:
  217. fs.rename(oldPath,newPath, function(err)
  218. {
  219. if(err)
  220. {
  221. throw err;
  222. }
  223. // console.log('rename done!');
  224. callback();
  225. });
  226. },
  227. matchFileInFolder(path,reg)
  228. {
  229. const files = fs.readdirSync(path);
  230. for (file of files) {
  231. let result = reg.test(file);
  232. if(result)
  233. {
  234. return file;
  235. }
  236. }
  237. return null;
  238. },
  239. getFileName(name)
  240. {
  241. let namePartArr = name.split('.');
  242. return name.replace('.'+namePartArr[namePartArr.length-1],'');
  243. // if(name.indexOf('.png')!=-1)
  244. // {
  245. // return name.split('.png')[0];
  246. // }
  247. // else if(name.indexOf('.jpg')!=-1)
  248. // {
  249. // return name.split('.jpg')[0];
  250. // }
  251. },
  252. getFileTail(name)
  253. {
  254. let namePartArr = name.split('.');
  255. return namePartArr[namePartArr.length-1];
  256. // if(name.indexOf('.png')!=-1)
  257. // {
  258. // return 'png';
  259. // }
  260. // else if(name.indexOf('.jpg')!=-1)
  261. // {
  262. // return 'jpg';
  263. // }
  264. // return '';
  265. }
  266. }
  267. let package = Object.create(Package);
  268. package.init();