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 相关文章推荐
从URL中提取参数与将对象转换为URL查询参数的实现代码
Jan 12 Javascript
jtable列中自定义button示例代码
Nov 21 Javascript
jquery控制select的text/value值为选中状态
Jun 03 Javascript
跟我学习javascript的循环
Nov 18 Javascript
10个JavaScript中易犯小错误
Feb 14 Javascript
AngularJS实现表单验证功能详解
Oct 12 Javascript
JavaScript实现正则去除a标签并保留内容的方法【测试可用】
Jul 18 Javascript
ztree加载完成后显示勾选节点的实现代码
Oct 22 Javascript
快速解决layui弹窗按enter键不停弹窗的问题
Sep 18 Javascript
通过js实现压缩图片上传功能
Feb 25 Javascript
JavaScript Image对象实现原理实例解析
Aug 26 Javascript
微信小程序弹窗禁止页面滚动的实现代码
Dec 30 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
SONY SRF-40W电路分析
2021/03/02 无线电
php 文本文件的读取效率
2012/02/10 PHP
PHP网站建设的流程与步骤分享
2015/09/25 PHP
详解PHP用substr函数截取字符串中的某部分
2016/12/03 PHP
PHP笛卡尔积实现原理及代码实例
2020/12/09 PHP
关于javascript document.createDocumentFragment()
2009/04/04 Javascript
深入理解JavaScript高级之词法作用域和作用域链
2013/12/10 Javascript
bootstrap table实例详解
2017/01/06 Javascript
详解Web使用webpack构建前端项目
2017/09/23 Javascript
详解Vue路由钩子及应用场景(小结)
2017/11/07 Javascript
vue使用Element组件时v-for循环里的表单项验证方法
2018/06/28 Javascript
详解关于Vue单元测试的几个坑
2020/04/26 Javascript
python代码检查工具pylint 让你的python更规范
2012/09/05 Python
Python 模拟员工信息数据库操作的实例
2017/10/23 Python
使用python实现BLAST
2018/02/12 Python
Python Numpy:找到list中的np.nan值方法
2018/10/30 Python
在numpy矩阵中令小于0的元素改为0的实例
2019/01/26 Python
Python中正则表达式的用法总结
2019/02/22 Python
Tensorflow实现神经网络拟合线性回归
2019/07/19 Python
python笔记_将循环内容在一行输出的方法
2019/08/08 Python
python 常用日期处理-- datetime 模块的使用
2020/09/02 Python
pytorch下的unsqueeze和squeeze的用法说明
2021/02/06 Python
纯CSS3实现Material Design效果
2017/03/09 HTML / CSS
西部世纪.net笔试题面试题
2014/04/03 面试题
如何用Python输出一个Fibonacci数列
2016/08/28 面试题
人力资源总监工作说明
2014/03/03 职场文书
母婴店促销方案
2014/03/05 职场文书
销售员试用期自我评价
2014/09/15 职场文书
质监局领导班子践行群众路线整改方案
2014/10/26 职场文书
交通事故死亡赔偿协议书
2014/12/03 职场文书
安全第一课观后感
2015/06/18 职场文书
围城读书笔记
2015/06/26 职场文书
《走遍天下书为侣》教学反思
2016/02/22 职场文书
OpenCV-Python实现人脸美白算法的实例
2021/06/11 Python
Python实战之大鱼吃小鱼游戏的实现
2022/04/01 Python
uniapp开发打包多端应用完整方法指南
2022/12/24 Javascript