使用NPM和Nodejs编写编译工具

托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 :

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

  2. 在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!

转载于:https://my.oschina.net/tulayang/blog/306630

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值