最近很多小伙伴都在问运用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 打包发布项目)
- Linux环境下nodejs环境的搭建以及配置,使用nodejs编写工具与简化less编译
- node.js – 使用nodejs / mongoose进行子文档的部分更新
- node.js – 使用NodeJS创建Gzip压缩的JSON文件并在S3存储桶上传
- node.js – 使用npm命令以参数启动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编译
由于我的服务器是买的云服务器,因此整个是连接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
2.在node.js上下载相应版本的安装包(https://nodejs.org/en/download/)
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进行测试!
使用node.js编写less
1.安装less,在node/lib/node_modules目录下, $cd node/lib/node_modules 2.#npm install less 3.#less --help 进行测试环境是否装好
按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文件
6.如果在编译过程中想要将css文件压缩,则输入:lessc -x /Users/vickay/Desktop/testLess.less /Users/vickay/Desktop/testLess.css ,只是比5多了-x参数,在执行过程中,会有以下提示:
7.生成css文件内容的比较
以上就介绍了 Linux环境下nodejs环境的搭建以及配置,使用nodejs编写工具与简化less编译,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。
node.js – 使用nodejs / 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标识的子文档实例.目前我已经通过手动设置字段“解决”了,但是我希望能够做到这一点.
解决方法
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存储桶上传
下面是我在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); } }); };
谢谢
解决方法
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项目
这是我在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项目等相关知识的信息别忘了在本站进行查找喔。
本文标签: