Node.js实现JS文件合并小工具_node.js
程序员文章站
2022-04-05 13:01:29
...
临近春节,项目结束了,没事情做,于是就想学学node.js,之前写了一个是为了实验室项目的需要,用c#写了个js代码压缩合并的小插件,后来想到可以用node重构,于是就练练手吧,下面小编直接给大家上代码了。
代码如下所示:
/*符合CommonJs规范*/ var writePath = 'min.js',/*默认输出到本目录min.js文件里*/ fs = require('fs'), r1 = /^(.+)$/mg,/*分行*/ r2 = /\s{2,}/g,/*去空格*/ r3 = /([^\\])\/\/.*/g,/*去行注释*/ r4 = /\/\*.*?\*\//g,/*去块注释*/ str = ''; module.exports.run = function(input){ input.forEach(function(item){ /*合并对顺序有需求,所以同步读取文件*/ var data = fs.readFileSync(item, 'utf8'), lines = data.match(r1);/*行数组*/ /*拼成一串*/ lines.forEach(function(item){ item = item.replace(r3, function($1, $2){return $2;}); str = str + item; }); }); str = str.replace(r2,' ').replace(r4, ''); /*异步写入到目标文件*/ fs.appendFile(writePath, str, {encoding: 'utf8'}, function(err){ if(err) {throw err}; console.log('complete........'); }); };
内容虽少,不过还是想借此适应一下commomJS的模块化编程,所以就分出上面这个模块了^_^,文件名:compress.js。
下面是引用它的代码:
var a = require('./compress.js');/*加载compress模块 ‘./'表示相同目录下查找本地文件*/ var input = process.argv;/*获取控制台输入数组(process引用当前进程)*/ a.run(input.slice(2)/*忽略前数组前两个*/);
文件名:run.js
控制台运行:
$ node run a.js b.js c.js....
即可把a.js b.js c.js (相对路径,也可使用绝对路径,路径定位和其他语言相似)压缩到默认的min.js里了。
当然,这个压缩还不够完善,空格去的不够完全,也没有基于流(还好压缩的JS文件都不大^_^),和专业的压缩插件如:uglify.js没法比╮(╯▽╰)╭不过练练手还是可以的......
推荐阅读
-
PHP根据传入参数合并多个JS和CSS文件的简单实现
-
Node.JS段点续传:Nginx配置文件分段下载功能的实现方法_node.js
-
Node.js 吊炸天的文件操作
-
一个简单的node.js界面实现方法
-
Node.js开发教程之基于OnceIO框架实现文件上传和验证功能
-
node.js中实现kindEditor图片上传功能的方法教程
-
使用node.js如何实现多用户web终端显示
-
Node.js模拟浏览器文件上传示例_javascript技巧
-
node.js - windows的服务器,一个文件夹最多能放多少个文件而不会影响php/nodejs/java等读取文件的速度?
-
Node.js fs模块(文件模块)创建、删除目录(文件)读取写入文件流的方法