Node.js实现JS文件合并小工具

 更新时间:2016年02月02日 09:49:39   作者:jerrylsxu  
这篇文章主要介绍了Node.js实现JS文件合并小工具的相关资料,需要的朋友可以参考下

临近春节,项目结束了,没事情做,于是就想学学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没法比╮(╯▽╰)╭不过练练手还是可以的......

相关文章

  • Nodejs多站点切换Htpps协议详解及简单实例

    Nodejs多站点切换Htpps协议详解及简单实例

    这篇文章主要介绍了Nodejs多站点切换Htpps协议详解及简单实例的相关资料,需要的朋友可以参考下
    2017-02-02
  • 分享五个Node.js开发的优秀实践 

    分享五个Node.js开发的优秀实践 

    这篇文章主要介绍了分享五个Node.js开发的优秀实践,文章围绕主题展开详细的分享内容,需要的小伙伴可以参考一下,希望对你的工作有所帮助
    2022-04-04
  • NodeJs模拟登陆正方教务

    NodeJs模拟登陆正方教务

    网上已经有很多关于模拟登陆正方教务的作品了,基于 PHP,Python,Java,.Net 加上NodeJs,这几门语言都可以实现模拟登陆,模拟登陆的技术点不是特别难,这里记录一下利用Node碰到的一些坑,以及一些解决思路。
    2017-04-04
  • 关于没有彻底清除node和npm的解决方法

    关于没有彻底清除node和npm的解决方法

    最近因为npm和node的版本不匹配遇到了许多困难,比如更新npm的版本,结果它给报错了,查阅了好多资料,发现就是node和npm卸载的时候,还有残留,所以本文给大家介绍了关于没有彻底清除node和npm的解决方法,需要的朋友可以参考下
    2024-03-03
  • node.js开发中使用Node Supervisor实现监测文件修改并自动重启应用

    node.js开发中使用Node Supervisor实现监测文件修改并自动重启应用

    这篇文章主要介绍了node.js开发中使用Node Supervisor实现监测文件修改并自动重启应用的功能,从而避免大量重复的CTRL+C终止程序动作,需要的朋友可以参考下
    2014-11-11
  • node跨域请求方法小结

    node跨域请求方法小结

    本篇文章主要介绍了node跨域请求方法小结,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • Node.js中你不可不精的Stream(流)

    Node.js中你不可不精的Stream(流)

    这篇文章主要给大家介绍了关于Node.js中你不可不精的Stream(流)的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-06-06
  • 30分钟用Node.js构建一个API服务器的步骤详解

    30分钟用Node.js构建一个API服务器的步骤详解

    这篇文章主要介绍了30分钟用Node.js构建一个API服务器的步骤详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-05-05
  • node.JS二进制操作模块buffer对象使用方法详解

    node.JS二进制操作模块buffer对象使用方法详解

    在ES6引入TypedArray之前,JavaScript语言没有读取或操作二进制数据流的机制,本文为大家详细介绍nodeJS中二进制操作模块buffer对象使用方法详解
    2020-02-02
  • gyp ERR!报错问题解决办法

    gyp ERR!报错问题解决办法

    这篇文章主要给大家介绍了关于gyp ERR!报错问题的解决办法,文中将解决的办法介绍的非常详细,对大家的学习或者工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2024-01-01

最新评论