GVKun编程网logo

运用node.js 和 DOS命令来编写打包 json 工具(nodejs 打包发布项目)

10

最近很多小伙伴都在问运用node.js和DOS命令来编写打包json工具和nodejs打包发布项目这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展Linux环境下nodejs环境的

最近很多小伙伴都在问运用node.js 和 DOS命令来编写打包 json 工具nodejs 打包发布项目这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展Linux环境下nodejs环境的搭建以及配置,使用nodejs编写工具与简化less编译、node.js – 使用nodejs / mongoose进行子文档的部分更新、node.js – 使用NodeJS创建Gzip压缩的JSON文件并在S3存储桶上传、node.js – 使用npm命令以参数启动NodeJS项目等相关知识,下面开始了哦!

本文目录一览:

运用node.js 和 DOS命令来编写打包 json 工具(nodejs 打包发布项目)

运用node.js 和 DOS命令来编写打包 json 工具(nodejs 打包发布项目)

首先运用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命令执行本地文件时发现其中的编写很是简洁方便,但是不知道的东西太多了,每一个命令怎么用、该用哪儿个命令都无从下手,只能去搜索,也许只有在这种探索中才能够将自己变的强大,学无止境,努力加油!

Linux环境下nodejs环境的搭建以及配置,使用nodejs编写工具与简化less编译

Linux环境下nodejs环境的搭建以及配置,使用nodejs编写工具与简化less编译

由于我的服务器是买的云服务器,因此整个是连接ssh进行配置的

LNMP

由于云服务器刚使用不久,此前一直是只安装了centos 6.5版本的裸机,因此这次顺道配置了LNMP,整个LNMP环境的安装和LAMP环境的搭建基本一致。附本人参照的配置博客:http://www.cnblogs.com/xiaoit/p/3991037.html,这篇博客只是基础的安装LNMP,并测试Nginx解析php脚本文件,并未对各个环节做详细配置说明,如果想看详细的配置,请自行百度。
登录后复制

node.js安装

在Node.js上下载安装包,非源码包,因为安装包是已经被编译过,可以直接使用,源码包安装的话,繁琐坑多。

1.在安装之前首先核对自己的系统位数
登录后复制
getconf LONG_BIT
登录后复制

 Linux环境下nodejs环境的搭建以及配置,使用nodejs编写工具与简化less编译

2.在node.js上下载相应版本的安装包(https://nodejs.org/en/download/)
登录后复制

 Linux环境下nodejs环境的搭建以及配置,使用nodejs编写工具与简化less编译

3.通过ftp上传到自己的云服务器上
4.解压缩文件 $tar xvJf  ***.tar.xz
5.移动解压缩的文件到node     $mv *** node
6.因为安装包已经被编译过,因此不需要再安装,直接可以使用,但是为了以后使用的方便,进行环境变量的配置   export PATH=/root/node/bin  (如果不确定自己的文件夹路径,可以使用 find /path -name node进行查询)
7.然后 node -v 和npm -v进行测试!
登录后复制

 Linux环境下nodejs环境的搭建以及配置,使用nodejs编写工具与简化less编译

使用node.js编写less

1.安装less,在node/lib/node_modules目录下, $cd node/lib/node_modules
2.#npm install less
3.#less --help 进行测试环境是否装好 
登录后复制

 Linux环境下nodejs环境的搭建以及配置,使用nodejs编写工具与简化less编译
按q键退出当前操作

4.编写代码,测试less环境
登录后复制
<span>@<span>color:</span> #<span>4</span>D926F</span>;

<span>#header</span><span>{
  <span><span>color</span>:<span> @color</span></span>;
<span>}</span></span><span>h2</span><span>{
  <span><span>color</span>:<span> @color</span></span>;
<span>}</span></span>
登录后复制
5.输入:lessc /Users/vickay/Desktop/testLess.less /Users/vickay/Desktop/testLess1.css ,可以在桌面生成css文件
登录后复制

 Linux环境下nodejs环境的搭建以及配置,使用nodejs编写工具与简化less编译

6.如果在编译过程中想要将css文件压缩,则输入:lessc -x /Users/vickay/Desktop/testLess.less /Users/vickay/Desktop/testLess.css ,只是比5多了-x参数,在执行过程中,会有以下提示:
登录后复制

 Linux环境下nodejs环境的搭建以及配置,使用nodejs编写工具与简化less编译

7.生成css文件内容的比较
登录后复制

 Linux环境下nodejs环境的搭建以及配置,使用nodejs编写工具与简化less编译

'').addClass(''pre-numbering'').hide(); $(this).addClass(''has-numbering'').parent().append($numbering); for (i = 1; i '').text(i)); }; $numbering.fadeIn(1700); }); });

以上就介绍了 Linux环境下nodejs环境的搭建以及配置,使用nodejs编写工具与简化less编译,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

node.js – 使用nodejs / mongoose进行子文档的部分更新

node.js – 使用nodejs / mongoose进行子文档的部分更新

是否可以在Mongoose中一次性(子)文档上设置多个属性?我想要做的一个例子:

假设我有这个架构:

var subSchema = new Schema({
    someField: String,someOtherField: String
});

var parentSchema = new Schema({
    fieldOne: String,subDocs: [subSchema]
})

然后我想做:

exports.updateMyDocument = function(req,res) {
    var parentDoc = req.parentDoc; // The parent document. Set by parameter resolver.
    var document = req.myDoc; // Sub document of parent. Set by parameter resolver.
    var partialUpdate = req.body; // updated fields sent as json and parsed by body parser
    // I kNow that the statement below doesn't work,it's just an example of what I would like to do.
    // Updating only the fields supplied in "partialUpdate" on the document
    document.update(partialUpdate); 
    parentDoc.save(function(err) {
        if(err) {
            res.send(500);
            return;
        }
        res.send(204);
    }); 
};

通常,我可以使用$set操作符来实现这一点,但是我的问题是该示例中的文档是parentDoc的子文档(嵌入式模式).所以当我试图做

Parent.update({_id: parentDoc._id,"subDocs._id": document._id},{$set: {"subDocs.$" : partialUpdate}},function(err,numAffected) {});

它替换了由subDocs._id标识的子文档实例.目前我已经通过手动设置字段“解决”了,但是我希望能够做到这一点.

解决方法

根据partialUpdate的字段以编程方式构建一个$set对象,以使用点符号更新这些字段:

var set = {};
for (var field in partialUpdate) {
  set['subDocs.$.' + field] = partialUpdate[field];
}
Parent.update({_id: parentDoc._id,{$set: set},numAffected) {});

node.js – 使用NodeJS创建Gzip压缩的JSON文件并在S3存储桶上传

node.js – 使用NodeJS创建Gzip压缩的JSON文件并在S3存储桶上传

我想在S3存储桶上传GZip压缩的 JSON文件.我正在努力解决这个问题,有人可以帮我解决这个问题.因为,我正在尝试使用zlib npm模块进行Gzip压缩JSON文件但是没有得到一个方法来实现这个.

下面是我在S3上上传Gzip压缩JSON文件的上传方法:

var uploadEntitlementDataOnS3 = function(next,event,jsonFileContent,filePath,results) {
    console.log("uploadEntitlementDataOnS3 function 
    started",jsonFileContent);
        var bufferObject = new 
    Buffer.from(JSON.stringify(jsonFileContent));
        var s3 = new AWS.S3();
        var params = {
            Bucket: configurationHolder.config.bucketName,Key: filePath,Body: bufferObject,CacheControl: 'no-cache',ContentType: "application/json",ContentEncoding: 'gzip'
        }
        s3.putObject(params,function(err,data) {
            if (err) {
                console.log(err,err.stack);
                next(err);
            } else {
                next(null,filePath);
            }
        });
    };

谢谢

解决方法

另外,我使用下面的代码片段进行gzip压缩,如果我使用错误的方法,请告诉我:

var bufferObject = new Buffer.from(JSON.stringify(jsonFileContent));
    var zlib = require('zlib');
    zlib.gunzip(bufferObject,zipped) {
        if(err) {
          console.log("error",err);
          next(err);
        }
        else {
          console.log("zipped",zipped);
        }
      })

node.js – 使用npm命令以参数启动NodeJS项目

node.js – 使用npm命令以参数启动NodeJS项目

我正在尝试创建两个单独的npm命令,以便在开发机器和生产模式下本地启动我的NodeJS项目.我希望能够将参数分别传递给机器以提供正确的依赖关系 – 这可能是生产中的CDN或我的本地机器.

这是我在package.json中看到的内容

"run": "node ./server/app.js",/* for running locally*/

"start": "node ./server/app.js",/* for running in production*/

如果我尝试调用npm run – 它会创建此错误:

npm ERR! npm run-script [<pkg>] <command>
npm ERR! not ok code 0

我还希望能够发送包含URL的命令行参数.

解决方法

你做得不对.

要调用自定义脚本,您必须运行

npm run-script run

你的package.json应该有:

"scripts": {
    "start": "node ./server/app.js","run": "node ./server/app.js"
}

见:https://npmjs.org/doc/cli/npm-run-script.html

关于运用node.js 和 DOS命令来编写打包 json 工具nodejs 打包发布项目的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于Linux环境下nodejs环境的搭建以及配置,使用nodejs编写工具与简化less编译、node.js – 使用nodejs / mongoose进行子文档的部分更新、node.js – 使用NodeJS创建Gzip压缩的JSON文件并在S3存储桶上传、node.js – 使用npm命令以参数启动NodeJS项目等相关知识的信息别忘了在本站进行查找喔。

本文标签: