-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
node命令行程序开发记录 #1
Comments
Node命令行程序Node命令行程序就是通过Node.js编写的在命令行里执行的程序,常见的Node命令行程序就是脚手架程序.例如:vue-cli, angular-cli.当然还有其他类型的,就不一一列举了. 准备工作首先,我们要给我们开发的程序一个具体的定位,也就是说程序的主题功能是什么.我的这个程序不限功能,当然目前支持的功能有两个:下载文件和vue-cli的简化版功能. 其次,选择解析命令行命令以及选项的库,不落俗套的选择了Tj大神的Commander.js,选择Commander.js原因:
当然写出一些简单的程序对大多数人来说相信都比较简单.程序写完了我怎么挂载这个命令这个才是大部分人关心的.就像vue-cli 安装之后就可以在命令行看到vue命令. 这个时候就需要npm link.在项目的package.json里面添加参数bin,bin参数就是用来指定内部命令对应的可执行文件的位置.然后就会在npm install的时候在node_modules/.bin/目录下创建一个链接,然后在该项目的npm script里就可以直接使用这个命令.如mocha,istanbul等.package.json参数 "test": "mocha" npm link的作用就是在全局的node目录下创建链接,链接到当前项目所在位置以及命令的可执行文件的位置.具体可以看下图: 开发过程项目目录项目目录结构如图所示: 项目踩坑1.process.on('SIGINT'): process.on()是用来监听程序的一些特殊信号以及事件,上面的就是用来监听程序中断的(通常是由ctrl + c操作导致的).程序里使用了inquirer,版本是v6.x,该库底层是通过node readline模块实现的,readline模块实现了监听ctrl + c然后发送SIGINT信号给当前readline Interface的实例,具体查看readline代码777~788行 2.Node中的各种路径 . 进程当前执行脚本所在路径(__dirname) 这里详细说一下process.cwd()和process.env.PWD之间的区别:
下面以一个具体的例子给大家展示一下具体的区别: console.log('before change dir, process.env.PWD is ', process.env.PWD)
console.log('before change dir, process.cwd() is ', process.cwd())
process.chdir('../')
console.log('after change dir, process.env.PWD is ', process.env.PWD)
console.log('after change dir, process.cwd() is ', process.cwd()) |
No description provided.
The text was updated successfully, but these errors were encountered: