运用node.js 和 DOS命令来编写打包 json 工具

首先运用nodejs 将需要打包的 json合并成一个json文件,之后,采用了两张打包方式,一种是用JSZIP打包,另一种采用打包工具7z进行打包,发现7z的打包压缩率略高于jszip的压缩率,下面请看代码

1.编写js代码,起名merger.js,代码中已标注了详细的注释

 1 let fs = require("fs")
 2 let path = require("path")
 3 let JSZIP = require("jszip");//首先引用jszip库  npm install jszip
 4 
 5 let jsonPath = path.join(__dirname, "/../client");//json目录地址  其中__dirname为该js所在的目录
 6 let cfgPath = path.join(__dirname, "/../config");//存放配置文件的目录
 7 
 8 let targetName = "cfg.json";//保存的合并后的json文件名
 9 let zipName = "cfg.cfg";//打包生成的zip文件
10 
11 let dataJson = {};//用于存放读取到的json总和
12 
13 //读取json文件操作
14 function readJson(dirPath) {
15     let files = fs.readdirSync(dirPath);//同步读取目录文件
16     files.forEach((fileName, index) => {//遍历文件
17         try {
18             let filePath = path.join(dirPath, fileName);//获取文件的完整路径
19             let info = fs.statSync(filePath);//获取文件属性
20             if (info.isDirectory()) {//如果是文件夹就继续遍历文件目录
21                 readJson(filePath);
22             } else {//非文件夹,则只读取json文件
23                 var extname = path.extname(fileName);//获取文件扩展名 (扩展名前有 . )
24                 if (extname == ".json") {
25                     console.log("当前文件:", fileName, index);
26                     var data = fs.readFileSync(filePath, "utf-8");//同步读取文件内容,该文件数据中会包括换行(\n)、制表符(\t)等符号
27                     dataJson[fileName.split(".")[0]] = JSON.stringify(JSON.parse(data));//所以保存数据前先转成JSON对象(去除多余的符号,减小体积),再转成数据进行保存
28                 }
29             }
30         } catch (e) {
31             console.log(e);
32         }
33     });
34 }
35 
36 //写入文件
37 function writeMergeJson() {
38     console.log("开始写入。。。。。。。。。。");
39     try {
40         fs.writeFileSync(path.join(cfgPath, targetName), JSON.stringify(dataJson), "utf-8");
41     } catch (e) {
42         console.log(e);
43     }
44 }
45 
46 //运用jszip进行打包json文件
47 function compressJSON() {
48     console.log("开始打包。。。")
49     try {
50         let zip = new JSZIP();
51         zip.file(zipName, JSON.stringify(dataJson));
52         zip.generateAsync({//设置压缩格式
53             type: "nodebuffer",//nodejs用
54             compression: "DEFLATE",//压缩算法
55             compressionOptions: {//压缩级别 1-9 数字越大压缩率越低,压缩越慢
56                 level: 9
57             }
58         }).then((content) => {
59             fs.writeFileSync(path.join(cfgPath, zipName), content, "utf-8");//将内容写入文件
60         })
61     } catch (e) {
62         console.log(e);
63     }
64 }
65 
66 //开始读取文件,进行操作
67 readJson(jsonPath);
68 writeMergeJson();
69 compressJSON();

2.编写简单的dos命令

 1 @echo off
 2 echo del client
 3 
 4 set path1=..\config
 5 del %path1%\cfg.json
 6 del %path1%\cfg.cfg
 7 
 8 
 9 echo start nodejs
10 node mergeTool.js
11 
12 
13 cd ../
14 set filePath=%cd%
15 
16 echo %filePath%
17 "7z\7za.exe" a -tzip config\cfg2.cfg config\cfg.json
18 
19 
20 pause

3. 看下打包后的数据大小

4. 最后总结一下:

node.js的运行,目前我只会用dos命令去执行,不知道其他方法是怎么直接运行js文件的,哪儿位博友知道可以给我留言告知我一声,感谢大家!

最近为了想编写一些小工具,才接触了node.js,和dos命令,大家在编写项目中的工具时都用什么编写的,可以互相交流下。在运用DOS命令执行本地文件时发现其中的编写很是简洁方便,但是不知道的东西太多了,每一个命令怎么用、该用哪儿个命令都无从下手,只能去搜索,也许只有在这种探索中才能够将自己变的强大,学无止境,努力加油!

posted @ 2019-02-23 12:55  猪猪快冲  阅读(930)  评论(0编辑  收藏  举报