美文网首页技术专栏我爱编程
使用node.js,实现简单的JS文件合并小工具

使用node.js,实现简单的JS文件合并小工具

作者: Cesium4Unreal | 来源:发表于2018-03-24 23:27 被阅读10次

/*符合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。

下面是引用它的代码:

vara = require('./compress.js');/*加载compress模块 ‘./’表示相同目录下查找本地文件*/varinput = 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没法比╮(╯▽╰)╭不过练练手还是可以的......

原文地址:http://www.cnblogs.com/liubingblog/p/4341767.html

相关文章

  • 使用node.js,实现简单的JS文件合并小工具

    /*符合CommonJs规范*/ var writePath = 'min.js',/*默认输出到本目录min.j...

  • node之path模块

    Node.js path 模块提供了一些用于处理文件路径的小工具,它是node.js内置模块,所以直接引入就可以:...

  • java——文件合并

    文件合并的原理和使用SequenceInputStream,实现文件碎片的合并

  • Node.js - 模块系统

    Node.js模块系统 Node.js 有一个简单的模块加载系统。 为了让Node.js的文件可以相互调用,Nod...

  • 6-1 Node.js 模块

    Node.js 的模块 为了让Node.js的文件可以相互调用,Node.js提供了一个简单的模块系统。模块是No...

  • Node学习(6)--模块系统

    Node.js模块系统 为了让Node.js的文件可以相互调用,Node.js提供了一个简单的模块系统。模块是No...

  • node.js - 基础之module

    1. node.js模块概述 为了让node.js的文件可以相互调用,node.js提供了一个简单的模块系统。模块...

  • Day7 Node.js模块系统

    为了让Node.js的文件可以相互调用,Node.js提供了一个简单的模块系统。 模块是Node.js 应用程序的...

  • Node.js模块系统

    为了让Node.js的文件可以相互调用,Node.js提供了一个简单的模块系统。 模块是Node.js 应用程序的...

  • Node.js模块化

    1、概念为了让Node.js的文件可以相互调用,Node.js提供了一个简单的模块系统,模块是Node.js应用程...

网友评论

    本文标题:使用node.js,实现简单的JS文件合并小工具

    本文链接:https://www.haomeiwen.com/subject/cdwccftx.html