Node.js实现JS文件合并小工具


Posted in Javascript onFebruary 02, 2016

临近春节,项目结束了,没事情做,于是就想学学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没法比?(???)?不过练练手还是可以的......

Javascript 相关文章推荐
JQuery 选择器、过滤器介绍
Feb 14 Javascript
原生js拖拽(第一课 未兼容)拖拽思路
Mar 29 Javascript
javascript实现div浮动在网页最顶上并带关闭按钮效果实例
Aug 13 Javascript
node.js中的querystring.parse方法使用说明
Dec 10 Javascript
js实现文本框中输入文字页面中div层同步获取文本框内容的方法
Mar 03 Javascript
node.js入门实例helloworld详解
Dec 23 Javascript
js+html5实现canvas绘制椭圆形图案的方法
May 21 Javascript
JavaScript中闭包的详解
Apr 01 Javascript
vue 自定义组件 v-model双向绑定、 父子组件同步通信的多种写法
Nov 27 Javascript
使用Object.defineProperty如何巧妙找到修改某个变量的准确代码位置
Nov 02 Javascript
webpack 处理CSS资源的实现
Sep 27 Javascript
js实现数字滚动特效
Dec 16 Javascript
体验jQuery和AngularJS的不同点及AngularJS的迷人之处
Feb 02 #Javascript
JavaScript通过代码调用Flash显示的方法
Feb 02 #Javascript
AngularJS中$interval的用法详解
Feb 02 #Javascript
AngularJS中处理多个promise的方式
Feb 02 #Javascript
AngularJS数据源的多种获取方式汇总
Feb 02 #Javascript
多种JQuery循环滚动文字图片效果代码
Jun 23 #Javascript
三种AngularJS中获取数据源的方式
Feb 02 #Javascript
You might like
一个PHP缓存类代码(附详细说明)
2011/06/09 PHP
2014最热门的24个php类库汇总
2014/12/18 PHP
php短网址和数字之间相互转换的方法
2015/03/13 PHP
PHP中子类重载父类的方法【parent::方法名】
2016/05/06 PHP
php+MySql实现登录系统与输出浏览者信息功能
2016/07/01 PHP
PHP+原生态ajax实现的省市联动功能详解
2017/08/15 PHP
javascript JSON操作入门实例
2010/04/16 Javascript
根据一段代码浅谈Javascript闭包
2010/12/14 Javascript
javascript 全选与全取消功能的实现代码
2012/12/23 Javascript
JS预览图像将本地图片显示到浏览器上
2013/08/25 Javascript
js调用css属性写法
2013/09/21 Javascript
js中的getAttribute方法使用示例
2014/08/01 Javascript
JavaScript立即执行函数的三种不同写法
2014/09/05 Javascript
javascript实现很浪漫的气泡冒出特效
2020/09/05 Javascript
jQuery中实现prop()函数控制多选框(全选,反选)
2016/08/19 Javascript
微信JSAPI支付操作需要注意的细节
2017/01/10 Javascript
js实现一个猜数字游戏
2017/03/31 Javascript
AngularJS  ng-repeat遍历输出的用法
2017/06/19 Javascript
深入理解Vue2.x的虚拟DOM diff原理
2017/09/27 Javascript
vue将毫秒数转化为正常日期格式的实例
2018/09/16 Javascript
[02:40]DOTA2英雄基础教程 先知
2013/11/29 DOTA
Python打造出适合自己的定制化Eclipse IDE
2016/03/02 Python
Python3实现带附件的定时发送邮件功能
2020/12/22 Python
python编写弹球游戏的实现代码
2018/03/12 Python
python实现文本界面网络聊天室
2018/12/12 Python
Python制作动态字符图的实例
2019/01/27 Python
Django创建一个后台的基本步骤记录
2020/10/02 Python
详解CSS3中常用的样式【基本文本和字体样式】
2020/10/20 HTML / CSS
canvas 下载二维码和图片加水印的方法
2018/03/21 HTML / CSS
新闻专业个人自我评价
2013/09/21 职场文书
高级文秘工作总结的自我评价
2013/09/28 职场文书
演讲主持词
2014/03/18 职场文书
大学生撤销处分思想汇报
2014/09/12 职场文书
2015年护士医德医风自我评价
2015/03/03 职场文书
幼儿园家长反馈意见
2015/06/03 职场文书
团组织推荐意见
2015/06/05 职场文书