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 实现窗口滚动搜索框停靠效果(类似滚动停靠)
Mar 27 Javascript
JavaScript实现网页上的浮动广告的简单方法
Jun 14 Javascript
选择复选框按钮置灰否则按钮可用
May 22 Javascript
js实现文本框支持加减运算的方法
Aug 19 Javascript
js实现纯前端的图片预览
Apr 27 Javascript
jQuery实现点击某个div打开层,点击其他div关闭层实例分析(阻止冒泡)
Nov 18 Javascript
jQuery用FormData实现文件上传的方法
Nov 21 Javascript
js简单正则验证汉字英文及下划线的方法
Nov 28 Javascript
Vue项目全局配置页面缓存之按需读取缓存的实现详解
Aug 01 Javascript
vue-cli安装使用流程步骤详解
Nov 08 Javascript
微信小程序dom操作的替代思路实例分析
Dec 06 Javascript
layui table单元格事件修改值的方法
Sep 24 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
星际争霸兵种名称对照表
2020/03/04 星际争霸
基于PHPexecl类生成复杂的报表表头示例
2016/10/14 PHP
thinkphp ajaxfileupload实现异步上传图片的示例
2017/08/28 PHP
laravel项目利用twemproxy部署redis集群的完整步骤
2018/05/11 PHP
PHP多个图片压缩成ZIP的方法
2020/08/18 PHP
Javascript匿名函数的一种应用 代码封装
2010/06/27 Javascript
关于div自适应高度/左右高度自适应一致的js代码
2013/03/22 Javascript
将nodejs打包工具整合到鼠标右键的方法
2013/05/11 NodeJs
js从10种颜色中随机取色实现每次取出不同的颜色
2013/10/23 Javascript
基于jQuery滑动杆实现购买日期选择效果
2015/09/15 Javascript
JS动态日期时间的获取方法
2015/09/28 Javascript
jQuery的Cookie封装,与PHP交互的简单实现
2016/10/05 Javascript
快速入门Vue
2016/12/19 Javascript
JS实现的简单轮播图运动效果示例
2016/12/22 Javascript
JS中的算法与数据结构之栈(Stack)实例详解
2019/08/20 Javascript
Angular6项目打包优化的实现方法
2019/12/15 Javascript
vscode+gulp轻松开发小程序的完整步骤
2020/10/18 Javascript
Python实现登录接口的示例代码
2017/07/21 Python
selenium python浏览器多窗口处理代码示例
2018/01/15 Python
centos6.8安装python3.7无法import _ssl的解决方法
2018/09/17 Python
解决Django中多条件查询的问题
2019/07/18 Python
Python中断多重循环的思路总结
2019/10/04 Python
40行Python代码实现天气预报和每日鸡汤推送功能
2020/02/27 Python
python爬取”顶点小说网“《纯阳剑尊》的示例代码
2020/10/16 Python
python实现学生信息管理系统源码
2021/02/22 Python
CSS3选择器新增问题的实现
2021/01/21 HTML / CSS
带你认识HTML5中的WebSocket
2015/05/22 HTML / CSS
Burberry英国官网:英国标志性奢侈品牌
2017/03/29 全球购物
德国骆驼商店:ActiveFashionWorld
2017/11/18 全球购物
Tiqets英国:智能手机上的文化和娱乐门票
2019/07/10 全球购物
俄罗斯汽车零件和配件在线商店:CarvilleShop
2019/11/29 全球购物
公共汽车、火车和飞机票的通用在线预订和销售平台:INFOBUS
2019/11/30 全球购物
比较一下entity bean和session bean
2013/12/27 面试题
严以用权学习心得体会
2016/01/12 职场文书
创业计划书之牛肉汤快餐店
2019/10/08 职场文书
把77A收信机改造成收音机
2022/04/05 无线电