Day 29 - 使用 Config 为 NestJS 专案拆分不同开发环境

前言

终於来到了第 29 天了,也就是名义上技术篇章的最後一篇了 XDD,到了今天我还真是突然不知道要写什麽,而且部署 AWS 那边因为卡关还没有时间继续研究,所以只能到处看看有没有好东西可以学来写,那今天就来写拆分 NestJS 开发环境。

拆分开发环境

为什麽要拆分开发环境呢?其实当初一开始变成工程师的时候还没有想过这件事,以前练习写 Side Project 刻 UI 的时候,因为只有自己一个人,而且也不是什麽非常重要的东西,所以不会去考虑这件事。

进了公司以後才发现,一个产品在上线之前,是要经过层层测试把关的,你才能真的把这个新的版本给更新到架上。

尤其对後端来说,拆分开不同的环境更是重要,毕竟你写好的 API 直接打下去如果是连到正式资料库的话,改动到了什麽资料可真是不好说啊,如果你是使用者,突然发现你的帐号里多了奇奇怪怪的东西总是会满头问号吧(?)

安装 Package

这边我们跟着 Udemy 课程的 Configuration 篇章进行,当然要拆分不同环境还有很多种方式,可以再自己搜寻看看。

这里我们安装 config 这个 Package:

yarn add config

https://ithelp.ithome.com.tw/upload/images/20201014/20119619ebgLQnJ4Kp.png

撰写 default.yml

我们在这个阶层建立一个资料夹叫做 config,并且新建一个档案叫 default.yml
https://ithelp.ithome.com.tw/upload/images/20201014/20119619G6UTINsJky.png

既然是 default 的话,中文叫做预设,也就是不会因为不同开发环境而变动的一些设定,比方说 port、DB 的基础设定:
https://ithelp.ithome.com.tw/upload/images/20201014/201196196dzUrufMf6.png

不过由於这是写在程序码里面的,有些比较机敏的资讯是不推荐写在程序码里,例如:DB 的连线资讯及帐密等等。

撰写 development.yml

再来我们来撰写测试环境用的 yml,这边仅仅是做范例而已,而我们在测试环境也会吃到刚刚 default 所撰写的:
https://ithelp.ithome.com.tw/upload/images/20201014/20119619DyDqqcHDVf.png

撰写 production.yml

再来我们来撰写正式环境用的 yml,不过由於正式资料库的机敏程度较高,通常不会撰写在程序码,会透过环境变数去设定帐密等等资讯,所以这边我突然也不知道要写啥 XDD,先留空吧:
https://ithelp.ithome.com.tw/upload/images/20201014/20119619Jkr2890yfO.png

套用 Config 设定

我们来到 main.ts,先将 config 给引用进来:
https://ithelp.ithome.com.tw/upload/images/20201014/20119619KeWqSpl9rF.png

要取用刚刚撰写的 yml 档里的参数的话,例如我要取到 port,我要先拿到 server:
https://ithelp.ithome.com.tw/upload/images/20201014/20119619LVNh7Co5v9.png

平常我们都是听 3000 port,我去把 default 改成 3001,并且让它听,且印出来看看:
https://ithelp.ithome.com.tw/upload/images/20201014/20119619GHKCttm8iS.png

然後运行 server,耶,听到 3001 了:
https://ithelp.ithome.com.tw/upload/images/20201014/20119619aWDk0BoBBR.png

使用环境变数

如上面一直强调的,有些机敏资讯是不能写在程序码里的,这边我依然用 port 来做范例,如果有给环境变数就听环境变数,没有就听 Config 的:
https://ithelp.ithome.com.tw/upload/images/20201014/20119619BL1ao6UBr9.png

那我们来测试一下,给它这个变数是 3005 好了:
https://ithelp.ithome.com.tw/upload/images/20201014/20119619CAJGzsjn7i.png

yes,顺利听到 3005 了:
https://ithelp.ithome.com.tw/upload/images/20201014/20119619baUnuaO2bP.png

以上是最简易版的做法,官方有提供更详尽的做法,再自行参考罗。

/*
本系列文系个人新手开发心得,可能会有许多错误,烦请多多包容不吝指教。
*/


<<:  [Day 29] Partitioning (3) - Rebalancing Partitions

>>:  [Day30] 完赛心得

musl libc 简介与其 porting(二)Say hello to my little friend!

今天到了 day3,上次有预告了这次会开始进行RISC-V 32平台的musl libc porti...

YOLO v4 模型训练实作

前言 之前一篇『YOLO v4 安装心得 -- Windows 环境』介绍如何建置 YOLO4(Da...

[Day 09 - JS] 网页第三大核心技术 — Javascript

What is Javascript?JavaScript (简称 JS)是一种 直译式(Inter...

【没钱买ps,PyQt自己写】Day 1 - 安装 PyQt,建立自己的第一支 PyQt5 程序

前言 今年算是拖到最後一天最後一刻才开赛... 因为疫情的关系今年实在有点忙不过来, 因此早在两个月...

Day1对於学习Java的看法&安装程序

刚读大一的时候,最让我感到头痛的就是程序设计课了!因为我一直以来都不怎麽喜欢电脑相关的东西,更别说是...