文档章节

使用NPM和Nodejs编写编译工具

tulayang
 tulayang
发布于 2014/08/26 10:05
字数 451
阅读 49
收藏 0

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

© 著作权归作者所有

tulayang
粉丝 2
博文 7
码字总数 6034
作品 3
崇明
私信 提问
深入浅出Node.js(二):Node.js&NPM的安装与配置

Node.js已经诞生两年有余,由于一直处于快速开发中,过去的一些安装配置介绍多数针对0.4.x版本而言的,并非适合最新的0.6.x的版本情况了,对此,我们将在0.6.x的版本上介绍Node.js的安装和配...

leeldy
2012/10/25
508
0
如何编写 Node.js 扩展

引言 这里是继续跟进 (如何推出你自己V8版本Javascript API) How to roll out your own Javascript API with V8. 如果你没有读过它的话你应该继续跟进. 我们现在将(为V8写的代码) code we h...

oschina
2013/05/12
6.1K
8
前端开发神器:grunt快速入门

grunt是什么? grunt是一个基于nodejs的task runner,简单来说,就是类似于.net平台的msbuild以及java平台的maven。 grunt能做什么? grunt可以使你的项目中重复的任务,比如压缩,语法检查,...

knightuniverse
2013/10/16
1K
0
Centos6安装安装node.js

install node v7.x #设置镜像 #安装nodejs #验证安装情况 install node v8.x curl --silent --location https://rpm.nodesource.com/setup8.x | bash - sudo yum install -y nodejs #验证安装......

qianghong000
2018/06/26
0
0
npm——安装教程、安装vue脚手架

npm:是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题。比如常用的有:   1)允许用户从NPM服务器下载别人编写的第三方包到本地使用。   2)允许用户从NPM服务器下...

哒哒成晨
05/17
30
0

没有更多内容

加载失败,请刷新页面

加载更多

无回路有向图的拓扑排序

因公司业务需要,在表单中每个字段都会配置自动计算,但自动计算公式中会引用到其他字段中的值。所以希望可以根据计算公式,优先计算引用的公式。所以最终使用了无回路有向图的扩扑排序来实现...

兜兜毛毛
今天
6
0
如何抢占云栖大会C位?史上最强强强攻略来了

点击观看视频: APSARA云栖大会开发者情怀 原文链接 本文为云栖社区原创内容,未经允许不得转载。

阿里云官方博客
今天
6
0
Kubernetes 从懵圈到熟练:集群服务的三个要点和一种实现

作者 | 声东 阿里云售后技术专家<br /> 文章来源:Docker,点击查看原文。 <br />以我的经验来讲,理解 Kubernetes 集群服务的概念,是比较不容易的一件事情。尤其是当我们基于似是而非的理解...

阿里巴巴云原生
今天
9
0
PHP7.3的新特性

2018年12月6日,PHP7.3正式版发布,在PHP7.2基础上进行了大量错误修复和安全优化,性能提升10%! 从目前的更新说明来看,PHP 7.3 并不是一个主打新特性的版本,包含更多的是 bug 修复。PHP 7...

迅睿CMS-PHP开源CMS程序
今天
8
0
Tomcat 应用中并行流带来的类加载问题

本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/f-X3n9cvDyU5f5NYH6mhxQ 作者:肖铭轩、王道环 随着 Java8 的不断流行,越来越多的开发人员使用并行流(parallel)...

vivo互联网技术
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部