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 相关文章推荐
初学prototype,发个JS接受URL参数的代码
Sep 25 Javascript
jquery ajax跨域解决方法(json方式)
Feb 04 Javascript
Angular中的Promise对象($q介绍)
Mar 03 Javascript
JS组件系列之Bootstrap Icon图标选择组件
Jan 28 Javascript
JavaScript中清空数组的方法总结
Dec 02 Javascript
JS生成和下载二维码的代码
Dec 07 Javascript
浅谈angular2的http请求返回结果的subcribe注意事项
Mar 01 Javascript
微信小程序教程系列之新建页面(4)
Apr 17 Javascript
js 用于检测类数组对象的函数方法
May 02 Javascript
node.js + socket.io 实现点对点随机匹配聊天
Jun 30 Javascript
vue.js  父向子组件传参的实例代码
Oct 29 Javascript
Vuex持久化插件(vuex-persistedstate)解决刷新数据消失的问题
Apr 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自动加载机制的深入分析
2013/06/08 PHP
微信公众平台之快递查询功能用法实例
2015/04/14 PHP
php解决约瑟夫环算法实例分析
2019/09/30 PHP
js 优化次数过多的循环 考虑到性能问题
2011/03/05 Javascript
jquery 实现窗口的最大化不论什么情况
2013/09/03 Javascript
jqueyr判断checkbox组的选中(示例代码)
2013/11/08 Javascript
js实现省市联动效果的简单实例
2014/02/10 Javascript
jQuery之选项卡的简单实现
2014/02/28 Javascript
JavaScript中number转换成string介绍
2014/12/31 Javascript
Node.js中JavaScript操作MySQL的常用方法整理
2016/03/01 Javascript
JS实现刷新父页面不弹出提示框的方法
2016/06/22 Javascript
Javascript 闭包详解及实例代码
2016/11/30 Javascript
react-native 封装选择弹出框示例(试用ios&android)
2017/07/11 Javascript
Vue实现动态创建和删除数据的方法
2018/03/17 Javascript
Postman模拟发送带token的请求方法
2018/03/31 Javascript
详解超简单的react服务器渲染(ssr)入坑指南
2019/02/28 Javascript
关于layui的动态图标不显示的解决方法
2019/09/04 Javascript
vue-cli创建的项目中的gitHooks原理解析
2020/02/14 Javascript
vue 中的动态传参和query传参操作
2020/11/09 Javascript
Python时区设置方法与pytz查询时区教程
2013/11/27 Python
在Python下尝试多线程编程
2015/04/28 Python
python分割列表(list)的方法示例
2017/05/07 Python
Python饼状图的绘制实例
2019/01/15 Python
python使用 __init__初始化操作简单示例
2019/09/26 Python
Python生成器实现简单"生产者消费者"模型代码实例
2020/03/27 Python
Python爬取网页信息的示例
2020/09/24 Python
Python爬虫获取op.gg英雄联盟英雄对位胜率的源码
2021/01/29 Python
香港太阳眼镜网上商店:SmartBuyGlasses香港
2016/07/22 全球购物
历史系毕业生自荐信
2013/10/28 职场文书
护理专业学生职业生涯规划范文
2014/03/11 职场文书
讲解员培训方案
2014/05/04 职场文书
纪律教育学习心得体会
2014/09/02 职场文书
2015年学生管理工作总结
2015/05/26 职场文书
预备党员群众意见
2015/06/01 职场文书
小兵张嘎观后感300字
2015/06/03 职场文书
mysql分表之后如何平滑上线详解
2021/11/01 MySQL