package.js 7.6 KB

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