完成一个基于「文件」的 todo 工具
💡:完成后的效果是怎样的?
yarn global add node-todo-1
💡:这个工具有哪些功能,以及我们通过什么命令可以使用这些功能?
💡:如何学习?
CRM -> 去官网或网上抄一些代码,抄完后让这些代码能够成功的运行,修改这个代码,在修改的过程中,你大概就能理解这个代码的原理是啥了 -> 继续运行,继续修改 -> 这个功能完成后,再去抄新的代码
修改的目的是为了完成某个功能
总之,不停地 CRM
💡:完成这个工具需要用到的依赖?
{
"name": "node-todo-2",
"version": "0.0.3",
"main": "index.js",
"license": "MIT",
"bin": {
"t": "cli.js"
},
"files": [
"*.js"
],
"scripts":{
"test": "jest"
},
"dependencies": {
"commander": "^3.0.2",
"inquirer": "^7.0.0"
},
"devDependencies": {
"jest": "^24.9.0"
}
}
mkdir node-todo
cd node-todo
yarn init -y
package.json
的版本为0.0.1
commander.js
文档(安装后,默认会有一个-h
选项,用来展示有哪些选项和子命令),用 CRM 大法测试:
option
) -> 可以-h
,也可以--help
,也可以-help
(最好是用--
)command
) -> <>
是必填项,[]
是可选项 -> 子命令后边的参数获取 -> 如果你写了<>
,那么命令后的第一个参数就是该命令能拿到的唯一一个参数,第二个参数就是command
对象,如果你不写<>
,那么你可以拿到多个输入的参数option
option
只能为某个命令而服务查询 API:https://nodejs.org/dist/latest-v14.x/docs/api/fs.html#fs.readFile()
'a+'
: Open file for reading and appending. The file is created if it does not exist.添加任务:
node cli.js add 任务 1
💡:devdocs 这个网站的配置
警告:
消除警告
未使用的变量也要删掉:
出现错误就得马上改掉,不然,错误积累多了,你就无法发现哪里是真正的错误了!
文档:SBoudrias/Inquirer.js: A collection of common interactive command line user interfaces.
清空所有任务node cli.js clear
:
查看所有任务node cli.js
:
用户既然查看了所有任务,就想着操作一下这些任务:
每一个询问操作都会展示成一个列表……
默认操作:
💡:process.argv
💡:加then
void
是 JavaScript 中非常重要的关键字,该操作符指定要计算一个表达式但是不返回值。
当函数返回值是一个不会被使用到的时候,应该使用 void
运算符,来确保返回 undefined
。
💡:value
用字符串
面对很长的代码? -> 不要放到一坨
注意:优化不是一次就能做好的
💡:webstorm 可以让我们看到代码的结构
💡:cli.js
和 main.js
的区别
💡:shebang
💡:可执行文件
💡:files
字段
💡:nrm
nrm ls
:查看当前用什么源nrm use npm
:使用 npm
的官方源💡:上传后的处理结果
💡:测试
安装刚刚上传的node-todo-2
-> 不要用淘宝源,因为淘宝源此时还未有同步啊!
💡:你很讨厌用缩写,可你为啥用pkg
这个名字,而不是用package
呢?
因为package
是保留字啊
上传后,更新你在本地全局安装的这个包:
升级不行?
重新安装:
可以用
yarn link
来测试,这样你就不用每次更新了版本都重新发布了!等一次性在本地测试完后,再发布版本
💡:总结