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来处理图片坏链具体实现步骤
May 02 Javascript
jquery快捷动态绑定键盘事件的操作函数代码
Oct 17 Javascript
jQuery实现切换页面过渡动画效果
Oct 29 Javascript
浅谈Javascript中的12种DOM节点类型
Aug 19 Javascript
ES6中箭头函数的定义与调用方式详解
Jun 02 Javascript
vue.js如何更改默认端口号8080为指定端口的方法
Jul 14 Javascript
详解Webpack实战之构建 Electron 应用
Dec 25 Javascript
Angular7.2.7路由使用初体验
Mar 01 Javascript
vue-cli脚手架打包静态资源请求出错的原因与解决
Jun 06 Javascript
vue实现修改图片后实时更新
Nov 14 Javascript
JS判断浏览器类型与操作系统的方法分析
Apr 30 Javascript
js观察者模式的弹幕案例
Nov 23 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常用的小程序代码段
2015/11/14 PHP
javascript Demo模态窗口
2009/12/06 Javascript
javascript中xml操作实现代码
2011/11/21 Javascript
自己编写的类似JS的trim方法
2013/10/09 Javascript
JS文本获得焦点清除文本文字的示例代码
2014/01/13 Javascript
jQuery实现的动态伸缩导航菜单实例
2015/05/07 Javascript
基于jQuery实现表格的查看修改删除
2016/08/01 Javascript
3种不同的ContextMenu右键菜单实现代码
2016/11/03 Javascript
JavaScript用JSONP跨域请求数据实例详解
2017/01/06 Javascript
vuejs事件中心管理组件间的通信详解
2017/08/09 Javascript
VUE长按事件需求详解
2017/10/18 Javascript
Vue配合iView实现省市二级联动的示例代码
2018/07/27 Javascript
解决iview多表头动态更改列元素发生的错误的方法
2018/11/02 Javascript
NodeJs实现简单的爬虫功能案例分析
2018/12/05 NodeJs
VUE DEMO之模拟登录个人中心页面之间数据传值实例
2019/10/31 Javascript
js+canvas实现两张图片合并成一张图片的方法
2019/11/01 Javascript
[43:24]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第二场 12.12
2020/12/17 DOTA
关于win10在tensorflow的安装及在pycharm中运行步骤详解
2020/03/16 Python
django使用JWT保存用户登录信息
2020/04/22 Python
实列教程 一款基于jquery和css3的响应式二级导航菜单
2014/11/13 HTML / CSS
会走动的图形html5时钟示例
2014/04/27 HTML / CSS
使用jTopo给Html5 Canva中绘制的元素添加鼠标事件
2014/05/15 HTML / CSS
PAUL HEWITT手表美国站:德国北部时尚生活配饰品牌,船锚元素
2017/11/18 全球购物
为什么需要版本控制?
2013/08/08 面试题
百货商场楼层班组长竞聘书
2014/03/31 职场文书
购房协议书范本
2014/04/11 职场文书
读书活动总结范文
2014/04/26 职场文书
政府门卫岗位职责
2014/04/29 职场文书
2014年安全生产大检查方案
2014/05/13 职场文书
整顿机关作风心得体会
2014/09/10 职场文书
合作协议书模板2014
2014/09/26 职场文书
新生入学欢迎词
2015/01/26 职场文书
个人借条范本
2015/05/25 职场文书
高三物理教学反思
2016/02/20 职场文书
vue特效之翻牌动画
2022/04/20 Vue.js
win10双系统怎么删除一个系统?win10电脑有两个系统删除一个的操作方法
2022/07/15 数码科技