Ինչպես ստեղծել պրոֆեսիոնալ NodeJS նախագիծ

Արտադրության մակարդակի հավելվածների համար մեզ անհրաժեշտ է աջակցություն բազմաթիվ միջավայրերի համար: Օրինակ, դուք պետք է օգտագործեք տարբեր տվյալների բազաներ տարբեր միջավայրերի համար: Կան բազմաթիվ կիրառումներ, և սա դրանցից միայն մեկն է:

Այսօր մենք կտեսնենք, թե ինչպես կարող ենք կառավարել բազմաթիվ միջավայրեր NodeJS հավելվածում:

Նախքան սկսելը…

Ես ստեղծել եմ պրոֆեսիոնալ կաթսա ExpressJS-ով և Typescript-ով: Այս հոդվածը այս շարքի մի մասն է։ Ստորև կարող եք գտնել բոլոր հոդվածները:

* Creating a ExpressJS + Typescript Boilerplate

* How to setup Linter and Formatter for NodeJS

* How to handle multiple environments in NodeJS

* Error Handling in NodeJS

* Request validation in NodeJS

* Using Docker Professionally with NodeJS

* Using Docker for Local Development in NodeJS

* Logging in NodeJS

* Kubernetes with NodeJS

Եկեք սկսենք!

Ավանդական ճանապարհ

Շրջակա միջավայրի փոփոխականներ օգտագործելու ամենահեշտ ձևը մեր package.json ֆայլի օգտագործումն է: Եկեք ստեղծենք երկու հրաման՝ երկու միջավայր ցուցադրելու համար:

"scripts": {
    "start-dev": "PORT=3000 ts-node-dev --respawn src/index.ts",
    "start-prod": "PORT=4000  ts-node-dev --respawn src/index.ts"
  }

Մենք սահմանել ենք երկու հրաման. Զարգացման համար մենք սահմանել ենք start-dev, որտեղ PORT փոփոխականը պետք է ունենա 3000 արժեք, իսկ prodի համար այն կլինի 4000:

Եթե ​​մենք գործարկենք մեր հավելվածը

yarn start-dev

Դուք կստանաք հետևյալ հաղորդագրությունը.

Connected successfully on port 3000

իսկ գործարկման start-prod-ը ձեզ կտա

Connected successfully on port 4000

Այսպիսով, մենք հաջողությամբ դարձրել ենք մեր հավելվածը կարգավորելի:

Եկեք մեկ քայլ առաջ գնանք:

Իսկ եթե մեզ անհրաժեշտ լինի մեկ այլ փոփոխական, որը կփոխվի տարբեր միջավայրերում: Մենք կարող ենք մեկ այլ փոփոխական ավելացնել այդ տողի ներսում։

Այստեղ SOMETHING_ELSE-ը հասանելի կլինի process.env.SOMETHING_ELSE-ի միջոցով

Բայց իրական կյանքում մենք ունենք բազմաթիվ միջավայրեր, որոնք պետք է փոխվեն: Ինչպե՞ս ենք մենք դա կառավարում:

Եկեք ստեղծենք միջավայրի ֆայլ:

Շատ շրջակա միջավայրի փոփոխականներ կառավարելու համար մենք կարող ենք օգտագործել շրջակա միջավայրի ֆայլ: Գնացեք ձեր նախագիծը, ստեղծեք .env ֆայլ և տեղադրեք հետևյալը:

PORT=3000
SOMETHING_ELSE=dev

Իսկ միջավայրերը հեռացնել package.json հրամաններից։

"scripts": {
    "start-dev": "ts-node-dev --respawn src/index.ts",
    "start-prod": "ts-node-dev --respawn src/index.ts",
 },

Եվ արի վազենք!

yarn start-dev

Սա կտա հետևյալ արդյունքը.

Connected successfully on port 5000

Հիմա դա տարօրինակ է: Քանի որ մենք պետք է տեսնենք 3000 որպես նավահանգիստ, բայց դա մեզ տալիս է 5000:

Պատճառն այն է, որ չնայած մենք ավելացրել ենք շրջակա միջավայրի փոփոխականները, NodeJS-ը դրանք ինքնաբերաբար չի կարդա։

Եկեք կարդանք մեր շրջակա միջավայրի փոփոխականները:

Մենք ունենք շատ տարածված փաթեթ՝ դա մեզ համար անելու համար: Անունը dotenv է

Եկեք նախ տեղադրենք դա:

yarn add dotenv

Եվ ներմուծեք այն մեր հավելվածի ներսում, ինչպես հետևյալը.

import "dotenv/config";

կամ այսպես

import dotenv from "dotenv";
const configuration: any = dotenv.config().parsed;

Եվ դա բավական է: Ձեզ անհրաժեշտ չէ որևէ այլ բան անել շրջակա միջավայրի ֆայլերը կարդալու համար: Այս փաթեթը փոփոխականները հասանելի կդարձնի մեր հավելվածի համար process.env-ի միջոցով

Դա փորձարկելու համար կարող եք վազել:

yarn start-dev

Եվ դուք նորից կտեսնեք, որ հավելվածը աշխատում է PORT 3000-ում:

Բազմաթիվ միջավայր

Եկեք պատրաստենք մեր հավելվածի արտադրությունը հիմա: Եկեք ստեղծենք երկու առանձին ֆայլ առանձին միջավայրերի համար:

Ստեղծեք ֆայլեր ըստ միջավայրի, ինչպիսիք են .env.development և .env.production

Այժմ մենք պետք է բեռնենք ֆայլերը բեռնման ժամանակ: Windows միջավայրերը երբեմն բախվում են միջավայրերը բեռնելու հետ կապված խնդիրների հետ: Դրա մասին հոգալու համար եկեք տեղադրենք cross-env անունով փաթեթ

yarn add -D cross-env

Այնուհետև ստեղծեք առանձին սցենարներ փաթեթ.json-ի ներսում գտնվողների համար

"dev": "cross-env NODE_ENV=development ts-node-dev --respawn src/index.ts",
"prod": "cross-env NODE_ENV=production ts-node-dev --respawn src/index.ts",

Այնուհետև փոփոխեք կազմաձևման ֆայլը հետևյալ կերպ.

Եվ մենք այժմ կարող ենք օգտագործել կոնֆիգուրացիան մեր հավելվածում ամենուր:

import Config from "./utils/Configuration";
console.log(Config.port);

վերջ Այժմ դուք կարող եք ունենալ այնքան միջավայր, որքան ցանկանում եք և հեշտությամբ կառավարել դրանք:

Վերջնական խոսքեր

Մի մոռացեք ավելացնել .env ֆայլերը ձեր .gitignore ֆայլերին: Հակառակ դեպքում, ձեր բոլոր գաղտնիքները կբացահայտվեն:

Բացեք ձեր .gitignore ֆայլը և ավելացրեք հետևյալը

.env.development
.env.production

Ահա և վերջ։ Հաճելի հանգիստ անցկացրեք ձեր օրը :D

Want to Connect?
You can reach out to me via LinkedIN or my Personal Website

GitHub Repo