| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250 |
- var fs = require('fs')
- let folderPath = 'web-mobile';
- let pathRequire = require('path');
- let pathArr = pathRequire.resolve(__dirname, '..').split("\\");
- let newfolderPath = pathArr[pathArr.length-1];//'FightingSports'
- let fullFilePath = folderPath+'/index.html'
- let Package =
- {
- init()
- {
- let self = this;
- this.quoteScriptToIndexHtml(function()
- {
- console.log("1,引入Script到html成功");
- self.copyImg(self,function(picName)
- {
- console.log("2,拷贝图片成功");
- self.changeCssBGPercentageAndPngName(self,picName,function()
- {
- console.log("3,修改Css背景图片百分比成功");
- self.changeFolderName(self,function()
- {
- console.log("4,修改文件夹名成功");
- console.log("\n打包成功!");
- })
- })
- });
- });
- },
- //引入Script到html
- quoteScriptToIndexHtml(callback)
- {
- let self = this;
- this.readFile(this,fullFilePath,function(str)
- {
- let regExp = /<script src="main(.+?)<\/script>/g;// '<script src="main.870be.js" charset="utf-8"></script>';
- let targetStr = str.match(regExp);
- // console.log(targetStr);
- let addStr = '<script type="text/javascript" src="//js.cdn.aliyun.dcloud.net.cn/dev/uni-app/uni.webview.1.5.2.js"></script>';
- let replaceStr = addStr+'\n'+targetStr;
- let newNata = str.replace(targetStr,replaceStr);
- self.writeFile(self,newNata,fullFilePath,callback);
- });
- },
- //拷贝图片
- copyImg(self,callback)
- {
- let reg = /splash.+?png/;// splash.85cfd.png
-
- let pngName = self.matchFileInFolder(folderPath,reg);
- // console.log('png='+pngName);
- if(pngName)
- {
- fs.unlinkSync(folderPath+'/'+pngName);
-
- let picReg = /splash.+?/;// splash.85cfd.png
- let picName = self.matchFileInFolder('./',picReg);
- // console.log('picName='+picName);
- if(picName)
- {
- let aPath = folderPath+'/'+file;
- fs.copyFile(picName,aPath,function(err)
- {
- if(err) {
- console.log('something wrong was happened')
- }
- else
- {
- let aName = self.getFileName(pngName);
- // console.log('aName='+aName);
- let aTail = self.getFileTail(picName);
- // console.log('aTail='+aTail);
- let newFileName = aName+'.'+aTail;
- // console.log('newFileName='+newFileName);
- // console.log('copy file succeed');
- let oldPath = folderPath+'/'+picName;
- let newPath = folderPath+'/'+newFileName;
- self.rename(oldPath,newPath,function()
- {
- callback(newFileName);
- });
- }
- });
- }
- }
- },
- // 修改Css背景图片百分比
- changeCssBGPercentageAndPngName(self,picName,callback){
-
- let reg = /style-mobile.+?css/;// style-mobile.6e9cd.css
- let cssName = self.matchFileInFolder(folderPath,reg);
- if(cssName)
- {
- let aPath = folderPath+'/'+file;
- this.readFile(this,aPath,function(str)
- {
- //change percentate
- let targetStr = 'background-size: 45%;';
- let replaceStr = 'background-size: 100%;';
- let newNata = str.replace(targetStr,replaceStr);
- //change png link
- let fileName = self.getFileName(picName);
- // console.log('fileName='+fileName);
- // console.log('picName='+picName);
- let newNata2 = newNata.replace(fileName+'.png',picName);
- // console.log(newNata)
- self.writeFile(self,newNata2,aPath,callback);
- });
- }
- },
- //修改文件夹名
- changeFolderName(self,callback)
- {
- let deleteall = function(path)
- {
- var files = [];
- if(fs.existsSync(path))
- {
- files = fs.readdirSync(path);
- files.forEach(function(file, index)
- {
- var curPath = path + "/" + file;
- if(fs.statSync(curPath).isDirectory())
- { // recurse
- deleteall(curPath);
- }
- else
- { // delete file
- fs.unlinkSync(curPath);
- }
- });
- fs.rmdirSync(path);
- }
- if(!fs.existsSync(newfolderPath))
- {
- self.rename(folderPath,newfolderPath,callback)
- }
- };
- // delete FightingSports
- deleteall(newfolderPath);
- },
- readFile(self,path,callback)
- {
- fs.readFile(path, function (error, data)
- {
- if (error)
- {
- // 在这里就可以通过判断 error 来确认是否有错误发生
- console.log('读取文件失败了')
- }
- else
- {
- // <Buffer 68 65 6c 6c 6f 20 6e 6f 64 65 6a 73 0d 0a>
- // 文件中存储的其实都是二进制数据 0 1
- // 这里为什么看到的不是 0 和 1 呢?原因是二进制转为 16 进制了
- // 但是无论是二进制01还是16进制,人类都不认识
- // 所以我们可以通过 toString 方法把其转为我们能认识的字符
- // console.log(data.toString())
- var str = data.toString();
- callback(str);
- }
- });
- },
- writeFile(self,newNata,path,callback)
- {
- // fs.wirteFile有三个参数
- // 1,第一个参数是要写入的文件路径
- // 2,第二个参数是要写入得内容
- // 3,第三个参数是可选参数,表示要写入的文件编码格式,一般就不写,默认就行
- // 4,第四个参数是个回调函数 只有一个参数error,来判断是否写入成功
- fs.writeFile(path, newNata, error =>
- {
- if (error) return console.log("写入文件失败,原因是" + error.message);
- // console.log("写入成功");
- callback();
- });
- },
- rename(oldPath,newPath,callback)
- {
- //同以目录下的文件更名:
- fs.rename(oldPath,newPath, function(err)
- {
- if(err)
- {
- throw err;
- }
- // console.log('rename done!');
- callback();
- });
- },
- matchFileInFolder(path,reg)
- {
- const files = fs.readdirSync(path);
- for (file of files) {
- let result = reg.test(file);
- if(result)
- {
- return file;
- }
- }
- return null;
- },
- getFileName(name)
- {
- let namePartArr = name.split('.');
- return name.replace('.'+namePartArr[namePartArr.length-1],'');
- // if(name.indexOf('.png')!=-1)
- // {
- // return name.split('.png')[0];
- // }
- // else if(name.indexOf('.jpg')!=-1)
- // {
- // return name.split('.jpg')[0];
- // }
- },
- getFileTail(name)
- {
- let namePartArr = name.split('.');
- return namePartArr[namePartArr.length-1];
- // if(name.indexOf('.png')!=-1)
- // {
- // return 'png';
- // }
- // else if(name.indexOf('.jpg')!=-1)
- // {
- // return 'jpg';
- // }
- // return '';
- }
- }
- let package = Object.create(Package);
- package.init();
|