Estructura de aplicaciones en NestJS

3/23
Recursos
# ./editorconfig
# Editor configuration, see https://editorconfig.org
root = true

[*]
charset = utf-8
indent_style = space
indent_size = 2
insert_final_newline = true
trim_trailing_whitespace = true

[*.ts]
quote_type = single

[*.md]
max_line_length = off
trim_trailing_whitespace = false

Aportes 8

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Archivo ./editorconfig

# Editor configuration, see https://editorconfig.org
root = true

[*]
charset = utf-8
indent_style = space
indent_size = 2
insert_final_newline = true
trim_trailing_whitespace = true

[*.ts]
quote_type = single

[*.md]
max_line_length = off
trim_trailing_whitespace = false

Algo a resaltar, es que NestJs/CLI te inicializa también un repositorio, pero lo hace creando la rama principal como master.
.
Esto puede ser un problema si queremos subir nuestro repositorio a plataformas como GitHub, ya que en ellos la rama principal es main.
.
La solución es muy sencilla, solo debes hacer commit de los archivos, y después cambiar el nombre de la rama con el siguiente comando

git branch -m master main

Y listo, podrás subir tu proyecto a GitHub sin problema 😉

Estructura de archivos de Nest.js:

/
Nest.js trae muchas carpetas y archivos cuya finalidad es configurar todo lo que nuestro proyecto de backend necesitaría sin tener que configurarlo nosotros. Entre todos los archivos y carpetas generados, los principales son:
/

  • La carpeta dist donde se encuentra todo el código que enviaremos a producción.
    /

    /
  • La carpeta src donde crearemos nuestro proyecto backend en sí.
    /

    /
  • El archivo package.json dentro del cual se encuentran todos los comandos y dependencias que utiliza Nest.js.
    /

    /
  • El archivo tsconfig.json dentro del cual se encuentra toda la configuración de TypeScript que necesita nuestro proyecto.
    /

crear archivo .editorconfig

Esta propiedad no existe en editorConfig ```
quote_type = single

excelente

Estructura de de la aplicacion:

  • Dependencias del proyecto package.json
"dependencies": {
    "@nestjs/common": "^7.6.15",
    "@nestjs/core": "^7.6.15",
    "@nestjs/platform-express": "^7.6.15",
    "reflect-metadata": "^0.1.13",
    "rimraf": "^3.0.2",
    "rxjs": "^6.6.6"
}
  • el archivo .eslintrc.js tiene la configuracion del linter para que nuestro codigo sea entendible y los demas puedas leer facilmente.
module.exports = {
  parser: '@typescript-eslint/parser',
  parserOptions: {
    project: 'tsconfig.json',
    sourceType: 'module',
  },
  plugins: ['@typescript-eslint/eslint-plugin'],
  extends: [
    'plugin:@typescript-eslint/recommended',
    'plugin:prettier/recommended',
  ],
  root: true,
  env: {
    node: true,
    jest: true,
  },
  ignorePatterns: ['.eslintrc.js'],
  rules: {
    '@typescript-eslint/interface-name-prefix': 'off',
    '@typescript-eslint/explicit-function-return-type': 'off',
    '@typescript-eslint/explicit-module-boundary-types': 'off',
    '@typescript-eslint/no-explicit-any': 'off',
  },
};
  • el archivo nest-cli.json tiene la forma que ejecuta el cli de nest nuestro proyecto. No se suele editar mucho, solo para unos plugins en particular.
{
  "collection": "@nestjs/schematics",
  "sourceRoot": "src"
}
  • Crea un README.md sencillo
  • tsconfig.json viene con la config adecuada para que transpile el codigo de ts a js
{
  "compilerOptions": {
    "module": "commonjs",
    "declaration": true,
    "removeComments": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "allowSyntheticDefaultImports": true,
    "target": "es2017",
    "sourceMap": true,
    "outDir": "./dist",
    "baseUrl": "./",
    "incremental": true
  }
}
  • La carpeta mas importante src donde vamos a trabajar, creando servicios, clases, componentes, etc
  • .editorconfig pone la config para que todos manejemos el mismo estandar sin importar el editor que usemos.
# Editor configuration, see https://editorconfig.org
root = true

[*]
charset = utf-8
indent_style = space
indent_size = 2
insert_final_newline = true
trim_trailing_whitespace = true

[*.ts]
quote_type = single

[*.md]
max_line_length = off
trim_trailing_whitespace = false

Excelente.