使用NPM和Nodejs编写编译工具
2019独角兽企业重金招聘Python工程师标准>>>
托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 nodevar 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 nodevar 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
使用NPM和Nodejs编写编译工具相关推荐
- NPM:nodejs官方包管理工具的简介、安装、使用方法之详细攻略
NPM:nodejs官方包管理工具的简介.安装.使用方法之详细攻略 目录 NPM之nodejs官方包管理工具的简介 NPM之nodejs官方包管理工具的安装 NPM之nodejs官方包管理工具的使用方 ...
- jsc反编译工具编写探索之路
对于经常做游戏安全逆向的读者来说,可能会经常遇到Cocos2dx编写的游戏.这个国产开源的游戏开发引擎支持多种编程语言进行游戏开发:发括主流的C/C++/JavaScript/Lua,之前,与大家讨论 ...
- php编写文件管理工具,php之markdown文档管理工具的实现代码
本文主要和大家分享php之markdown文档管理工具的实现代码,希望能帮助到大家. 主要目标: 1.可以多人编辑 2.可以在浏览器中查看 3.有一个可以折叠的目录 4.支持多级目录 5.支持mark ...
- less及编译工具介绍
什么是LESSCSS LESSCSS是一种动态样式语言,属于CSS预处理语言的一种,它使用类似CSS的语法,为CSS的赋予了动态语言的特性,如变量.继承.运算.函数等,更方便CSS的编写和维护. LE ...
- 以太坊源码linux下如何编译,以太坊教程:搭建环境、编写编译一个智能合约
本以太坊教程主要是介绍:搭建一个开发环境.编写编译一个智能合约. 以太坊是什么 以太坊(Ethereum)是一个开源的有智能合约功能的公共区块链平台.通过其专用加密货币以太币(Ether)提供去中心化 ...
- add-apt-repository:找不到命令_手把手教你使用nodejs编写cli(命令行)
手把手教你使用nodejs编写cli(命令行) 前端日常开发中,会遇见各种各样的cli,比如一行命令帮你打包的webpack,一行命令帮你生成vue项目模板的vue-cli,还有创建react项目的c ...
- gyp linux,gyp编译工具
最近用到了 node-gyp 这个工具, 是node 社区对 google gyp 编译工具的一个封装, 使用 node-gyp 工具可以用C++为node 项目编写 addon. 了解了一下 goo ...
- 了解 yarn 、npm、nodejs
了解 yarn .npm.nodejs 一.前言 针对即将上线的 jeecg-boot 做一些准备. 二.了解系列 1.了解 nodejs Node.js 就是运行在服务端的 JavaScript.N ...
- nvm、npm、nodejs的关系
1,nvm:nodeJs版本管理工具,管理nodejs版本和npm版本 2,node.js是javascript的一种运行环境,是对Google V8引擎进行的封装.是一个服务器端的javascrip ...
最新文章
- Windows server 2003 关于DNS的配置以及区域复制测试
- Latex:图片及子图排版
- 21-5-22校赛J 下围棋
- 手机号段对应地区编码_漫画:“哈夫曼编码” 是什么鬼?
- mysql主主备份及集群
- 计算机网络——OSI参考模型和TCP/IP协议
- POJ3163 King of Fighters 状压DP/费用流
- 面试题--------7、Files的常用方法
- 深入浅出JavaScript (四)DHTML
- 《重学 Java 设计模式》PDF 出炉了 - 小傅哥,肝了50天写出18万字271页的实战编程资料
- Python提取视频帧图片
- 一辆智能小车,最初(时间为0)的位置为(0,0),我们想知道它最后的位置。小车以每小时10公里的速度向北移动(以北为y轴正向,以东为x轴正向)。小车会受到一系列依照时间戳记排序的命令,1表示“向左转”
- excel学习笔记(一)
- 拼多多是PHP还是java,应届程序员收到拼多多offer 表情瞬间爆发
- 计算机视觉与图形学-立体匹配专题-金字塔立体匹配网络
- Python NLP入门教程
- android电子英语词典背景介绍,实现基于Android的英文电子词典
- 输入框数据的初始化拼装
- mp3转wma格式转换器 mp3音频怎么转换wma格式
- param name=robot_description command= $(find xacro)/xacro --inorder ' $(arg model)' 到底什么意思
热门文章
- php实验cookie,PHP实验一、二(cookie和session)
- tcp 协议中发送窗口的大小应该是_面试必备--TCP协议中的窗口机制滑动窗口详解...
- pyqt与mysql例子_PyQt 连接MySql数据库,C++代码转Python3代码
- mysql随机查询多条记录表_MySQL 随机查询表中N条记录
- python `__bytes__`
- 数据结构之基于Java的顺序队列实现
- 网站如何和服务器匹配,匹配服务器
- es集群节点数和分片数关系_ES数据插入和查询流程是怎么样的?
- java订单类_使用Java创建一个订单类代码实例
- 如何报名腾讯云认证考试?