Skip to content

Configurar Entorno ​

Archivo .env ​

En la raíz del proyecto Auto-CRUDx, ubique y abra el siguiente archivo.

📃.env.example

sh
DB_DATABASE=db_name
DB_HOST=localhost
DB_PASSWORD=12345678
DB_PORT=5432
DB_USER=postgres

PATH_USER=/home/username
PATH_BACKEND=my-backend-folder-name
PATH_BACKEND_ROOT=app
PATH_FRONTEND=my-frontend-folder-name
PATH_FRONTEND_ROOT=src
PATH_MODULE=

CRUD_SCHEMA=public
CRUD_TABLE_MASTER=users
CRUD_TABLE_MASTER_IS_HELPER=FALSE
CRUD_STACK_BACKEND=my-backend-stack-name
CRUD_STACK_FRONTEND=my-frontend-stack-name
CRUD_EXCLUDE_FIELDS=created_at, updated_at, deleted_at
CRUD_GENERATE=TRUE

Cópielo y péguelo en la misma raiz del proyecto para crear el archivo de configuración del entorno .env. Tenga en cuenta que este archivo agrupa 3 secciones respectivamente (DB, PATH y CRUD) que describiremos a continuación.

Descripción de sección DB ​

  • DB_DATABASE: Nombre de la base de datos.
  • DB_HOST: IP de la máquina donde se hospeda la base de datos.
  • DB_PASSWORD: Password de la base de datos.
  • DB_PORT : Puerto por donde escucha la base de datos.
  • DB_USER: Usuario de la base de datos.

Descripción de sección PATH ​

  • PATH_USER: Ruta del usuario en la máquina anfitriona.
  • PATH_BACKEND: Ruta de la carpeta donde se generará el respectivo código del CRUD correspondiente a su backend.
  • PATH_BACKEND_ROOT: Nombre de la carpeta, dentro del PATH_BACKEND, donde se escribirá el correspondiente código generado.
  • PATH_FRONTEND: Ruta de la carpeta donde se generará el respectivo código del CRUD correspondiente a su frontend.
  • PATH_FRONTEND_ROOT: Nombre de la carpeta, dentro del PATH_FRONTEND, donde se escribirá el correspondiente código generado.
  • PATH_MODULE: Si está usando estructura modular, indique el nombre del módulo en cuestión.

Descripción de sección CRUD ​

  • CRUD_SCHEMA: Nombre del esquema de la base de datos donde se encuetra la tabla a la que se le pretende generar el CRUD.
  • CRUD_TABLE_MASTER: Nombre de la tabla a la que se le pretende generar el CRUD.
  • CRUD_TABLE_MASTER_IS_HELPER: Indica si se trata de una simple tabla para llenar una lista desplegable (elemento select html).
  • CRUD_STACK_BACKEND: Nombre de la carpeta de su Stack para el Backend.
  • CRUD_STACK_FRONTEND: Nombre de la carpeta de su Stack para el Frontend.
  • CRUD_EXCLUDE_FIELDS: Campos que contiene la respectiva tabla que desea sean excluidos del CRUD del lado del frontend.
  • CRUD_GENERATE: En TRUE indica que desea generar el CRUD. Mientras que en FALSE indica que desea debuggear el dataJSON que alimenta el CRUD.

Carpeta config ​

En la carpeta config se capturan los parámetros del archivo .env enviándolos a JavaScript para ser exportados a través de todo el programa.

txt
src/
├── config/
├── stack/
└── app.ts

Echemos un vistazo.

txt
├── config/
    ├── crud.ts
    ├── db.ts
    ├── index.ts
    └── output.ts

Tenga en cuenta que hay 3 archivos (crud.ts, db.ts y output.ts) respectivamente más el index.ts quien representa la interface de los anteriores.

src/config/index.ts ​

Tenga en cuenta lo que exporta este archivo.

📃src/config/index.ts

ts
import crud from './crud'
import dbConfig from './db'
import { // import * as output from './output'
    moduleName,
    pathBackend,
    pathFrontend, 
    pathModule, 
    pathUser
} from './output'

export default { //output
    crud,
    dbConfig,    
    moduleName,
    pathBackend,
    pathFrontend, 
    pathModule, 
    pathUser
}

Si desea obtener las variables de entorno simplemente importelas.

ts
import {
    crud,
    dbConfig,    
    moduleName,
    pathBackend,
    pathFrontend, 
    pathModule, 
    pathUser
} from '@config/index'

Hagamos un simple vistazo a los otros archivos de configuración para revisar como funciona esto.

./src/config/db.ts ​

ts
import dotenv from 'dotenv'

dotenv.config();

const dbConfig = {    
    host: process.env.DB_HOST,
    port: Number(process.env.DB_PORT),
    database: process.env.DB_DATABASE,
    user: process.env.DB_USER,
    password: process.env.DB_PASSWORD    
}

export default dbConfig;

./src/config/crud.ts ​

ts
import dotenv from 'dotenv'

dotenv.config();

export default {  
  schema: process.env.CRUD_SCHEMA,
  tableMaster: process.env.CRUD_TABLE_MASTER,
  tableMasterIsHelper: Boolean(JSON.parse((process.env.CRUD_TABLE_MASTER_IS_HELPER??''.toString()).toLowerCase())),
  excludeFields: process.env.CRUD_EXCLUDE_FIELDS ? process.env.CRUD_EXCLUDE_FIELDS.split(", ") : [],
  generate: Boolean(JSON.parse((process.env.CRUD_GENERATE??''.toString()).toLowerCase())),
  stackBackend: process.env.CRUD_STACK_BACKEND,
  stackFrontend: process.env.CRUD_STACK_FRONTEND
}

./src/config/output.ts ​

ts
import dotenv from 'dotenv'

dotenv.config();

export const pathUser = process.env.PATH_USER
export const moduleName = process.env.PATH_MODULE
export const pathModule = moduleName ? `/${moduleName}` : ""
export const pathBackend = `${pathUser}/${process.env.PATH_BACKEND}/${process.env.PATH_BACKEND_ROOT}${pathModule}`
export const pathFrontend = `${pathUser}/${process.env.PATH_FRONTEND}/${process.env.PATH_FRONTEND_ROOT}${pathModule}`

Released under the MIT License.