上次写了一篇文章(用node.js开发命令行工具)介绍如何使用node.js开发命令行工具,那么node.js是如何支持命令行工具开发呢?这篇文章就介绍一下吧。
首先node.js是如何执行js就不说了,直接进入shebang
和npm link
这两个东西。首先是shebang
,node.js是通过这个指令来知道这段代码需要运行在任何目录,而且不需要使用node指令。而npm link
就是根据文件有没有加shebang
来做相应处理的,如果文件第一行有shebang
的话,npm就会根据package.json文件,使模块可以在全局运行,而且不需要加node指令。npm做的事情其实很简单,就是在npm的目录下添加了相应模块的cmd文件,假设一个模块叫做test
,那么npm就会在其目录(可能为:C:\Documents and Settings\Administrator\Application Data\npm
,可以输出path看下npm的路径)下生成一个test.cmd
文件,而npm目录是在环境变量中的,cmd文件又是可执行文件,所以就可以在任何地方运行test.cmd
文件了。那么test.cmd
文件内容又是什么呢?其实也很简单,就是一段让node执行指定js文件的代码。下面的代码可能就是test.cmd
文件的内容了:
1 | :: Created by npm, please don't edit manually. |
上面的代码是windows脚本,就是说当前目录如果有node.exe的话,就用当前目录下的node.exe执行当前目录下的node_modulestesttest.js
文件。如果否则用node(环境变量中)执行这个文件。
在npm的目录中还能找到一个没有后缀的test文件,那这个文件又是干什么的呢?打开文件可以看到如下内容:
1 |
|
显然这是针对Linux的代码,跟Windows下的代码功能基本一样。
好了,就说到这里了。