将nodejs打包工具整合到鼠标右键的方法


Posted in NodeJs onMay 11, 2013

打包用到的批处理文件代码如下:

@echo off
title Builder - 正在合并 ...color 03
REM =====================================
REM     jsbuilder beta版
REM
REM =====================================
SETLOCAL ENABLEEXTENSIONS
echo.
REM 过滤文件后缀,只combo js文件
if "%~x1" NEQ ".js" (
    echo.
    echo **** 请选择JS文件
    echo.
    goto End
)
REM 检查NODE_PATH
if "%NODE_PATH%" == "" goto NoNodePath
if not exist "%NODE_PATH%\node.exe" goto NoNodePath
 
set RESULT_FILE=%~n1-combo%~x1
:ZIP_CHOICE
echo 选择是否【压缩】合并后的js文件?
set input=
set /p input= -^> 请选择(y/n): 
if /i "%input%"=="n" goto UNZIP
if /i "%input%"=="y" goto ZIP
REM 调用build合并文件
:UNZIP
"%NODE_PATH%\node.exe" "%~dp0build.js" --unzip "%~n1%~x1" > "%RESULT_FILE%"
echo.
echo **** ~O(∩_∩)O~ 【合并】成功 ****
echo.
goto End
 
REM 调用build合并并且压缩文件
:ZIP
"%NODE_PATH%\node.exe" "%~dp0build.js" "%~n1%~x1" > "%RESULT_FILE%"
echo.
echo **** ~O(∩_∩)O~ 【合并并压缩】成功 ****
echo.
goto End
:NoNodePath
echo.
echo **** 请先安装NodeJS并设置NODE_PATH环境变量 ****
echo.
:End
ENDLOCAL
pause

打包用的build.js代码如下:

//加载配置
require('./config.js');//用到的模块
var FS = require('fs'),
    PATH = require('path'),
    jscombo = require('./tool/jscombo'),
    Util = require('util');
 
//获取参数
var args = process.argv;
args = [].slice.call(args,2);
var opts = {};//配置
var curPath, rootPath = curPath = process.cwd();
//根据config.js的相对路径设置,变换rootPath
if(typeof relativePath!=='undefined'){
    rootPath = PATH.join(rootPath,relativePath);
}
var filename;//要处理的文件名字
//处理参数
out: while(args.length){
    var v = args.shift();
    switch(v){
        case '-uz':
        case '--unzip':
        //combo后压缩
            opts.unzip = true;
        break;
        default:
            filename = v;
            break out;
    }
}
// var filePath = PATH.join(rootPath,filename);
//将要压缩的js文件路径 转化为相对rootpath的路径
var rPath = PATH.relative(rootPath,PATH.join(curPath,filename));
var str = jscombo(rPath, rootPath, opts);
var fileout = process.stdout;
fileout.write(str);
NodeJs 相关文章推荐
NodeJS制作爬虫全过程
Dec 22 NodeJs
Windows系统中安装nodejs图文教程
Feb 28 NodeJs
详解NodeJs支付宝移动支付签名及验签
Jan 06 NodeJs
详解nodejs异步I/O和事件循环
Jun 07 NodeJs
nodejs 搭建简易服务器的图文教程(推荐)
Jul 18 NodeJs
nodejs读取本地中文json文件出现乱码解决方法
Oct 10 NodeJs
nodejs aes 加解密实例
Oct 10 NodeJs
nodejs同步调用获取mysql数据时遇到的大坑
Mar 02 NodeJs
NodeJs入门教程之定时器和队列
Mar 08 NodeJs
Nodejs环境实现socket通信过程解析
Jul 03 NodeJs
通过实例了解Nodejs模块系统及require机制
Jul 16 NodeJs
NodeJs内存占用过高的排查实战记录
May 10 NodeJs
用nodejs写的一个简单项目打包工具
May 11 #NodeJs
nodejs教程 安装express及配置app.js文件的详细步骤
May 11 #NodeJs
nodejs中exports与module.exports的区别详细介绍
Jan 14 #NodeJs
nodejs的require模块(文件模块/核心模块)及路径介绍
Jan 14 #NodeJs
windows系统下简单nodejs安装及环境配置
Jan 08 #NodeJs
NodeJs中的非阻塞方法介绍
Jun 05 #NodeJs
nodejs win7下安装方法
May 24 #NodeJs
You might like
PHP 和 XML: 使用expat函数(一)
2006/10/09 PHP
php构造函数实例讲解
2013/11/13 PHP
PHP文件管理之实现网盘及压缩包的功能操作
2017/09/20 PHP
jquery动态添加元素事件失效问题解决方法
2014/05/23 Javascript
jquery获取tagName再进行判断
2014/05/29 Javascript
AngularJS iframe跨域打开内容时报错误的解决办法
2015/01/26 Javascript
扒一扒JavaScript 预解释
2015/01/28 Javascript
javascript判断数组内是否重复的方法
2015/04/21 Javascript
Node.js项目中调用JavaScript的EJS模板库的方法
2016/03/11 Javascript
简单实现js倒计时功能
2017/02/13 Javascript
详解NodeJS框架express的路径映射(路由)功能及控制
2017/03/24 NodeJs
vue2 中如何实现动态表单增删改查实例
2017/06/09 Javascript
js生成word中图片处理方法
2018/01/06 Javascript
js实现简单模态框实例
2018/11/16 Javascript
详细介绍解决vue和jsp结合的方法
2020/02/06 Javascript
微信小程序实现选择地址省市区三级联动
2020/06/21 Javascript
python中的__slots__使用示例
2015/02/26 Python
Python使用pymysql从MySQL数据库中读出数据的方法
2018/07/25 Python
Python用61行代码实现图片像素化的示例代码
2018/12/10 Python
利用Python产生加密表和解密表的实现方法
2019/10/15 Python
python 实现多线程下载m3u8格式视频并使用fmmpeg合并
2019/11/15 Python
Python+Appium实现自动化清理微信僵尸好友的方法
2021/02/04 Python
纯css3制作网站后台管理面板
2014/12/30 HTML / CSS
关于box-sizing的全面理解
2016/07/28 HTML / CSS
家用个人磨皮机:Trophy Skin
2017/03/30 全球购物
歌唱比赛主持词
2014/03/18 职场文书
致共产党员倡议书
2014/04/16 职场文书
学校党委副书记个人对照检查材料思想汇报
2014/09/28 职场文书
三严三实对照检查材料思想汇报
2014/09/28 职场文书
2014年设计师工作总结
2014/11/25 职场文书
公司市场部岗位职责
2015/04/15 职场文书
2015年小学美术工作总结
2015/05/25 职场文书
小平小道观后感
2015/06/09 职场文书
2015中秋祝酒词
2015/08/12 职场文书
python中sqllite插入numpy数组到数据库的实现方法
2021/06/21 Python
使用python绘制横竖条形图
2022/04/21 Python