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 相关文章推荐
小议Function.apply()之二------利用Apply的参数数组化来提高 JavaScript程序性能
Nov 30 Javascript
JavaScript 事件查询综合
Jul 13 Javascript
Jquery实战_读书笔记1—选择jQuery
Jan 22 Javascript
Javascript中自动切换焦点实现代码
Dec 15 Javascript
jquery Mobile入门—多页面切换示例学习
Jan 08 Javascript
javascript实现tabs选项卡切换效果(扩展版)
Mar 19 Javascript
jQuery中add()方法用法实例
Jan 08 Javascript
JS中的hasOwnProperty()和isPrototypeOf()属性实例详解
Aug 11 Javascript
JS实现的驼峰式和连字符式转换功能分析
Dec 21 Javascript
vue2.0 中#$emit,$on的使用详解
Jun 07 Javascript
vue+iview+less 实现换肤功能
Aug 17 Javascript
JavaScript实现图片的放大缩小及拖拽功能示例
May 14 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
现磨咖啡骗局!现磨咖啡=新鲜咖啡?现磨咖啡背后的猫腻你不懂!
2019/03/28 冲泡冲煮
php将数据库中所有内容生成静态html文档的代码
2010/04/12 PHP
openPNE常用方法分享
2011/11/29 PHP
深入理解PHP类的自动载入机制
2016/09/16 PHP
PHP+Apache环境中如何隐藏Apache版本
2017/11/24 PHP
php-fpm.conf配置文件中文说明详解及重要参数说明
2018/10/10 PHP
控制打印时页眉角的代码
2007/02/08 Javascript
深入理解JavaScript系列(43):设计模式之状态模式详解
2015/03/04 Javascript
在windows上用nodejs搭建静态文件服务器的简单方法
2016/08/11 NodeJs
利用js编写响应式侧边栏
2016/09/17 Javascript
使用Promise链式调用解决多个异步回调的问题
2017/01/15 Javascript
ES6新特性之模块Module用法详解
2017/04/01 Javascript
JS实现汉字与Unicode码相互转换的方法详解
2017/04/28 Javascript
各种选择框jQuery的选中方法(实例讲解)
2017/06/27 jQuery
浅谈angular表单提交中ng-submit的默认使用方法
2018/09/30 Javascript
jQuery中each和js中forEach的区别分析
2019/02/27 jQuery
js之切换全屏和退出全屏实现代码实例
2019/09/09 Javascript
BootstrapValidator实现表单验证功能
2019/11/08 Javascript
使用vuex较为优雅的实现一个购物车功能的示例代码
2019/12/09 Javascript
Tornado Web服务器多进程启动的2个方法
2014/08/04 Python
Python数据结构之Array用法实例
2014/10/09 Python
单利模式及python实现方式详解
2018/03/20 Python
python爬虫用mongodb的理由
2020/07/28 Python
python如何设置静态变量
2020/09/07 Python
使用canvas来完成线性渐变和径向渐变的功能的方法示例
2019/07/25 HTML / CSS
房地产管理毕业生自荐信
2013/11/04 职场文书
旅游专业职业生涯规划范文
2014/01/13 职场文书
关于廉洁的广播稿
2014/01/30 职场文书
大学自我评价
2014/02/12 职场文书
预备党员承诺书
2014/03/25 职场文书
个人投资计划书
2014/05/01 职场文书
如何签定毕业生就业协议书
2014/09/28 职场文书
2014年个人委托书范本
2014/10/13 职场文书
董事长新年致辞
2015/07/29 职场文书
mysql脏页是什么
2021/07/26 MySQL
Windows server 2012 NTP时间同步的实现
2022/06/25 Servers