浅谈node.js 命令行工具(cli)

2020-06-17 06:52:08易采站长站整理

上面的命令会在NPM的全局模块目录内,生成一个符号链接文件,该文件的名字就是

package.json
文件中指定的模块名。


/path/to/global/node_modules/myModule -> src/myModule

这个时候,已经可以全局调用

myModule
模块了。但是,如果我们要让这个模块安装在项目内,还要进行下面的步骤。

切换到项目目录,再次运行

npm link
命令,并指定模块名。


src/myProject$ npm link myModule

上面命令等同于生成了本地模块的符号链接。

src/myProject/node_modules/myModule -> /path/to/global/node_modules/myModule

然后,就可以在你的项目中,加载该模块了。


var myModule = require('myModule');

这样一来,

myModule
的任何变化,都可以直接反映在
myProject
项目之中。但是,这样也出现了风险,任何在
myProject
目录中对
myModule
的修改,都会反映到模块的源码中。

如果你的项目不再需要该模块,可以在项目目录内使用

npm unlink
命令,删除符号链接。


src/myProject$ npm unlink myModule

二. 可执行脚本

写一个简单的脚本hello

$ mkdir hello #创建一个文件夹

$ cd hello && touch hello #创建命令文件


#!/usr/bin/env node
console.log('hello world');

文件的头部务必加入#!/usr/bin/env node这行代码,这里表示使用node作为脚本的解释程序,node的路径通过env来查找,可以避免node安装路径不一带来的问题。

打开 /usr/bin/env,可以查看到PATH,操作系统通过路径找到node

然后,修改 hello 的权限。


$ chmod 755 hello
$./hello

如果想把 hello 前面的路径去除,可以将 hello 的路径加入环境变量 PATH。但是,另一种更好的做法,是在当前目录下新建 package.json ,写入下面的内容。


{
"name": "hello",
"bin": {
"hello": "./hello"
}
}

然后执行 npm link 命令。不明白的看上面