您的位置:首页 > Web前端 > Node.js

使用NPM和Nodejs编写编译工具

2014-08-26 10:05 351 查看
托NPM和Nodejs的福,现在用javascript就可以快速编写命令行工具而不用浪费时间迷乱在c语法中.

~#gcc test.c


~#git add .


用javascript就可以写出类似的工具,NPM就是一个例子.

目标

我们想制作一个编译工具tool,当运行

~#tool test.js test2.js test3.js

会把文件合并、并加上一些需要的功能.

Step 1

制作 tool tool/bin tool/bin/tool :

tool目录代表了整个工具模块

tool/bin/tool是命令运行文件

~# mkdir tool
~# cd tool
~tool# mkdir bin
~tool# cd bin
~tool/bin# vi tool

Step 2

编辑 tool/bin/tool

#!/usr/bin/env node

var node = process.argv[0];         // node命令
var tool = process.argv[1];         // tool文件
var args = process.argv.slice(2);   // 其他参数

#!/usr/bin/env node是必须的。在linux的脚本里,这条语句用来指定脚本的解释程序。这里指定使用node作为解释程序。

下面的语句则完全由node来解释了,终于不需要C那笨拙的语法了。

process: 全局模块,代表了当前进程

process.argv: 命令行输入的参数数组。
当运行
~# tool test.js
时,第一个是'node',第二个是'tool',第三个是'test.js',…

Step 3

建立 package.json :

~tool#npm init
,输入模块信息.

在package.json中添加bin,在安装的时候,这一项会将tool/bin/tool文件复制到/usr/local/bin/
{
"bin": {
"tool": "./bin/tool"
}
}


Step 4

编写个 Hello world! 来测试通信:

1 ) 编辑 tool/bin/tool

#!/usr/bin/env node

var node = process.argv[0];
var tool = process.argv[1];
var file = process.argv[2];

if (file) {
var child = require("child_process").spawn(node, [file]);
child.stdout.on("data", function (data) {
process.stdout.write(data);
});
}

console.log("start tool.");

获得如下tool工具:

tool
|—— bin
|     |—— tool
|—— package.json

2 ) 编辑测试文件

~# vi test.js
:

console.log('Hello world!');

3 ) 安装tool工具

~# npm install -g ./tool


4 ) 测试

~# tool test.js


如果没有错误,可以看到

start tool.
Hello world!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: