共计 1971 个字符,预计需要花费 5 分钟才能阅读完成。
背景
因为近期工作有所变动,本人的电脑要从头开始装置一些开发工具,须要装置 git, nvm,nodejs,omz 等等。下载安装这些尽管不难,然而还是会花一些工夫去找地址,再执行命令行开始下载安装。那么问题来了,这个时候是否应用 shell 脚本主动执行下载安装,下楼买个咖啡回来,所有装置结束岂不美哉。俗话说的好,不会“偷懒”的工程师不是一个好的程序员。
而当编写好这个 shell 工具后,不仅能够一键下载安装必备开发工具,又能够将对应的代码提交到 GitHub 平台,在下次须要装根底开发环境的时候就能间接复用;其次,当其余开发者看到并应用的时候,也能够为别人晋升效率。
因而,在有了这个想法之后我就着手去写了这个 shell 工具并最终公布到 GitHub 上,参见 easy-install。接下来会大抵论述本人的整个开发过程和一些踩坑经验,具体的一些应用细节不做过多赘述。
筹备
因为须要编写 Shell,因而根本的语法是要弄清楚并把握的。当初网上的教程很多,这里就不作过多阐明了。在编写前须要筹备的工具:vscode,bash,docker,git。
Docker
一般来说,在 macOS 或者 Linux 零碎下开发软件相对来说 docker 是开发工具必备之一。在编写 shell 前能够先相熟下 docker 的装置和应用教程,应用 docker 的命令装置 centos 镜像,命令行如下:
docker pull centos
VSCode
VScode 的下载地址参见:https://code.visualstudio.com/,依据以后零碎环境装置对应的版本。装置好之后,关上编辑器首先设置 code 全局命令。在下次应用时,能够间接应用 code 命令关上编辑器。
Git
下载并装置好 Git 工具,并在 GitHub 上创立好一个仓库,应用 git clone 命令将仓库克隆到本地,进入仓库对应的根目录内新增一个开发分支,应用 code . 命令关上编辑器开始编写 shell
开发 & 调试 & 测试
本地开发
作为一个前端开发者,本地必须要装置的工具有:git,nvm,nodejs, oh-my-zsh,homebrew 等,因而这个 shell 工具至多要帮我主动装置上述相干工具。这个 时候就尽量抉择快捷不便的形式去下载和装置这些工具,比方 Git 在 macOS 上能够应用 xcode 来疾速装置;而在 centos 能够应用 yum 来装置。
在本地开发期间,尽可能保障环境和实在环境的一致性,能够多开几个 terminal 窗口,一边测试单行命令,一边在编辑器内减少脚本代码。
脚本调试
在初步编写好脚本后,可在启动的 docker 容器内间接创立 .sh 文件并运行。因为 shell 命令都是串行运行,因而不必刻意思考异步场景的状况,必要时须要调整相干命令行程序。
测试
在实现本地初步的命令测试后,就能够在镜像容器内开始整个测试流程了。整体的命令如下:
docker run -it centos /bin/bash
cd root
curl -o- https://raw.githubusercontent.com/CasoMemory/easy-install/develop/shell.sh | bash
上述的近程文件地址可通过切换到 raw 的模式查看最终的显示地址,如下图所示:
接着就是开始察看终端显示的信息,期待最终的装置后果。当终端最终显示 “Congratulations! All tools installed!”,无任何报错时,就表明整个 shell 工具开发测试实现。
一些踩坑经验
- 在编写 shell 脚本时,如果是在 Windows 环境,须要留神相干换行字符的对立。在 Windows 下默认为 CRLF,在运行 shell 脚本时是会报语法错误的,此时要留神设置为 LF,参见下图:
- centos 镜像内一些根本的指令是没有,比方:sudo, chsh, zsh 等,这个时候容易呈现装置一些工具时会因为命令不存在导致下载失败。因而能够查看相干命令是否存在并去装置。因为 centos 内置了 yum 软件下载管理工具,能够应用 yum 下载来装置。
- 在调试时,尽量开启加速器,有些时候 raw.githubusercontent.com 域名会呈现一些不稳固的状况,必要时可减少域名 IP 绑定。
公布
在实现整体开发和测试后,就能够将开发分支代码合并到 main 分支。在正式合并前,提前准备 readme 文档,尽量应用英文去形容。应用英文的益处就是,不仅能够锤炼本人的英文写作能力,也能让更多的国外开发者看明确工具的介绍和应用形式,间接减少本人的影响力。
总结
以上是我在开发 easy-install 的时候整个实战经验,不仅学习并相熟应用 shell,又学习和应用了 docker 的性能。整体上来说编写 easy-install 让我再一次找到了学习的乐趣,推动一个人的成长,往往更多的是乐趣和酷爱。
更多酷爱,更多成长,致力成就更好的本人!