window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', versión: 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster ya existe') } else { w.LeadBooster = { q: [], on: function (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: function (n) { this.q.push({ t: 't', n: n }) }, } } })() La calidad ante todo 5 sencillos pasos para eliminar las pelusas de su código con los flujos de trabajo de GitHub en el proyecto JavaScript - The Codest
The Codest
  • Quiénes somos
  • Servicios
    • Desarrollo de software
      • Desarrollo Frontend
      • Desarrollo backend
    • Staff Augmentation
      • Desarrolladores frontales
      • Desarrolladores de backend
      • Ingenieros de datos
      • Ingenieros de la nube
      • Ingenieros de control de calidad
      • Otros
    • Asesoramiento
      • Auditoría y consultoría
  • Industrias
    • Fintech y Banca
    • E-commerce
    • Adtech
    • Tecnología sanitaria
    • Fabricación
    • Logística
    • Automoción
    • IOT
  • Valor para
    • CEO
    • CTO
    • Gestor de entregas
  • Nuestro equipo
  • Case Studies
  • Saber cómo
    • Blog
    • Meetups
    • Seminarios en línea
    • Recursos
Carreras profesionales Póngase en contacto
  • Quiénes somos
  • Servicios
    • Desarrollo de software
      • Desarrollo Frontend
      • Desarrollo backend
    • Staff Augmentation
      • Desarrolladores frontales
      • Desarrolladores de backend
      • Ingenieros de datos
      • Ingenieros de la nube
      • Ingenieros de control de calidad
      • Otros
    • Asesoramiento
      • Auditoría y consultoría
  • Valor para
    • CEO
    • CTO
    • Gestor de entregas
  • Nuestro equipo
  • Case Studies
  • Saber cómo
    • Blog
    • Meetups
    • Seminarios en línea
    • Recursos
Carreras profesionales Póngase en contacto
Flecha atrás VOLVER
2020-03-10
Desarrollo de software

La calidad ante todo 5 sencillos pasos para eliminar la pelusa de su código con flujos de trabajo de GitHub en el proyecto JavaScript

Wojciech Bak

La calidad del código es una parte crucial del proceso de desarrollo, especialmente cuando se quiere trabajar de forma eficiente a largo plazo. Existen muchos enfoques y buenas prácticas, incluido todo el tema de las metodologías ágiles, pero la mayoría de ellos están relacionados con algún gran proyecto empresarial dirigido por al menos 6 personas.

¿Qué debemos hacer cuando el proyecto es pequeño o el cliente aún no sabe si merece la pena invertir más? Obviamente, en el Fase MVP del proyecto, código El estilo o las pruebas unitarias no son la máxima prioridad. Los inversores suelen querer tener un buen producto y vamos, si funciona, no hace falta probarlo, ¿no?

En realidad, tengo algo de experiencia en crear aplicaciones desde ceroincluso sin utilizar las mejores prácticas. Algunas circunstancias empresariales me obligaron a buscar el compromiso entre los planes presupuestarios de un inversor y la lista de "cosas bonitas" del desarrollador. Por suerte, si utilizas GitHub, la mayoría de los problemas habituales relacionados con la calidad del código pueden resolverse en unos minutos.

En este artículo, voy a mostrarte cómo utilizar los flujos de trabajo de GitHub en el entorno Node.js para estandarizar tu código base.

Algunas suposiciones antes de empezar:

  • Está familiarizado con NPM y la consola Linux.
  • Tienes alguna experiencia con preprocesadores de estilo, cargadores de módulos, bundlers, etc.
  • Ya sabe para qué sirven los linters y tiene muchas ganas de utilizarlos en sus proyectos.

1. Estructura típica de un proyecto JavaScript

Si alguna vez has utilizado frameworks JS como Vue o React, puede detectar fácilmente algunas cosas comunes entre ellos, p. ej:

  • /src con toda su lógica JS y componentes,
  • /prueba para las pruebas unitarias y e2e,
  • /activos para estilos, imágenes, etc.

Aunque estemos hablando de JavaScript proyecto, trabajamos en Nodo así que, obviamente, también debería haber algunas cosas de Node como paquete.json, paquete-lock.json y /node_modules en nuestro directorio raíz.

Todas estas cosas están en su sitio - eso es lo que llamamos el convención. Los frameworks se inventan para proporcionar algunas convenciones razonables, por lo que normalmente, ni siquiera necesitamos preocuparnos por el patrón de diseño inicial. Como en este ejemplo, quiero explicar algunos enfoques, no voy a aplicar ninguna solución lista para usar como Vue CLI.

Es hora de entender qué se esconde bajo todos estos guiones mágicos de pelusa.

2. Ampliación del típico proyecto Node

Para proporcionar soluciones de alta calidad, los linters son lo primero con lo que debemos empezar al configurar un nuevo proyecto. Centrémonos en dos linters - Stylelint para estilos (*.scss) y ESLint para archivos fuente (*.js). Ambos linters están disponibles en NPM y son bastante fáciles de configurar. Usar linters requiere pasar por el proceso de instalación, añadir archivos de configuración y definir scripts de proyecto. Hagámoslo paso a paso.

3. Añadir Stylelint

La instalación de Stylelint en el entorno Node es realmente sencilla. Según documentos oficialesSólo tienes que correr:

npm install --save-dev stylelint stylelint-config-standard

y esperar a que termine.

stylelint-config-standard proporciona un conjunto predeterminado de reglas de linting y puede sustituirse por cualquier paquete que se adapte mejor a sus necesidades (p. ej. Al estilo Airbnb). A continuación, cree un nuevo archivo oculto .stylelintrc.jsonque es el archivo de configuración de Stylelint, responsable de cargar nuestras reglas predefinidas:

{
    "extends": "stylelint-config-standard"
}

Ahora mismo, lo único que falta es algún script NPM (o scripts) declarado en el archivo package.json para empezar a linting nuestros archivos SCSS. Esta es mi propuesta:

"scripts": {
    "lint:scss": "stylelint '**/*.scss' --syntax scss -f verbose --color",
    "lint:scss:fix": "stylelint '**/*.scss' --sintaxis scss --fix -f verbose -color"
}

Como puedes ver, he declarado el script que contiene -fijar Esta opción se utiliza antes de enviar los cambios al repositorio.

Recuerde: es una mala práctica utilizar -fijar en tu flujo de CI, porque entonces el código que pasas a producción no tiene el estilo correcto en el repositorio. Por eso necesitamos los dos guiones.

Vamos a probar nuestro linter creando un fichero /activos/scss/estilos.scss con algún contenido, como:

cuerpo {
                    color de fondo: #fff;
}
npm run lint:scss

Deberías ver en tu consola algo como esto:

> stylelint '**/*.scss' --syntax scss -f verbose --color

assets/scss/styles.scss

2:21 ✖ Sangría esperada de 2 espacios sangría

1 fuente comprobada

~/Codest/Projects/github-workflow-demo/assets/scss/styles.scss

1 problema encontrado

nivel de gravedad "error": 1

sangría: 1

npm ERR! code ELIFECYCLE

npm ERR! errno 2

npm ERR! [email protected] lint:scss: `stylelint '**/*.scss' --syntax scss -f verbose --color`

npm ¡ERR! Estado de salida 2

Esto significa que nuestro linter funciona.

La salida muestra exactamente qué línea causa un error y describe el problema a resolver. Algunos problemas no se pueden solucionar automáticamente, ya que necesitan la decisión de un desarrollador, pero en la mayoría de los casos, basta con ejecutar el mismo comando con -fijar así que vamos a ejecutarlo.

npm run lint:scss:fix

Ahora debería ver una salida verde sin errores encontrados:

stylelint '**/*.scss' --sintaxis scss --fix -f verbose --color


1 fuente comprobada

/Users/wojciechbak/Codest/Projects/github-workflow-demo/assets/scss/styles.scss

0 problemas encontrados

4. Añadir ESLint

Este paso es casi el mismo que el anterior. Vamos a instalar ESLint, definir un conjunto de reglas por defecto y declarar dos scripts NPM invocables - uno para CI, otro para pre-push. ¡Vamos a ir a través de esto!

Si utilizas NPM en tu trabajo diario, quizás quieras instalar ESLint de forma global. Si no es así, consulte las instrucciones de instalación en documentos oficiales.

npm install -g eslint

Cuando el comando eslint esté disponible en su máquina, simplemente ejecútelo en su proyecto:

eslint --init

Siguiendo las instrucciones que aparecen en tu terminal, sólo tienes que tomar algunas decisiones de proyecto como:

  • Javascript o TypeScript
  • Al estilo Airbnb o al estilo Google
  • tipo de configuración (archivo JSON, archivo JS o inline en paquete.json)
  • Módulos ES (importación/exportación) o requiere sintaxis

En este lugar vale la pena escribir unas palabras sobre el formateador de código llamado Prettier. Está totalmente estandarizado y es compatible con la mayoría de los editores de código (por ejemplo, VS Code). Prettier proporciona muchos conjuntos de reglas predefinidas de estilo de código, trabaja con linters y puede ser un gran apoyo en la búsqueda de la máxima calidad del código. Para saber qué es exactamente Prettier, visite este enlace comparación de los documentos oficiales.

Si se hace, el archivo de configuración de ESlint (p.ej. .eslintrc.jsondependiendo de lo que hayas elegido antes) debería aparecer en tu directorio raíz, en algún lugar junto a .stylelintrc.json creado antes.

Ahora tenemos que definir scripts en paquete.json igual que para los archivos SCSS:

"scripts": {
    "lint:js": "eslint '**/*.js' --ignore-pattern node_modules/",
    "lint:js:fix": "eslint '**/*.js' --ignore-pattern node_modules/ --fix"
}

¡Enhorabuena! ESLint está listo para usarse ahora mismo. Comprobemos si funciona correctamente. Crear /src/index.js con algún contenido:

console.log("algo");

Ejecutar linter:

npm run lint:js


El resultado debería ser el siguiente:

> eslint '**/*.js' --ignore-pattern node_modules/

~/Codest/Projects/github-workflow-demo/src/index.js

1:1 warning Declaración de consola inesperada no-console

✖ 1 problema (0 errores, 1 advertencia)

Esta advertencia no desaparecerá después de utilizar -fijar porque linters no afecta al código potencialmente significativo. Sólo sirven para estilizar el códigoincluyendo espacios en blanco, nuevas líneas, punto y coma, comillas, etc.

5. Definición de flujos de trabajo de GitHub

Flujos de trabajo de GitHub son algo bastante bien documentado. Siéntase libre de profundizar en esto, pero por ahora, voy a implementar un flujo de trabajo simple para pelusa nuestro código después del empuje al repositorio remoto (obviamente, alojado en GitHub).

Cree /.github/workflows y el nuevo calidad del código-workflow.yml ya que los flujos de trabajo de GitHub deben definirse con archivos YAML.

Para ejecutar un flujo de trabajo adecuado, tenemos que responder a algunas preguntas:

  • ¿Cuándo queremos ejecutar nuestro flujo de trabajo (en push, en pull request, en merge, etc.)?
  • ¿Queremos excluir algunas situaciones (como push to branch master)?
  • ¿Qué entorno debemos configurar para ejecutar correctamente nuestros comandos (en este ejemplo, Node)?
  • ¿Necesitamos instalar dependencias? En caso afirmativo, ¿cómo debemos almacenarlo en caché?
  • ¿Qué pasos debemos dar para completar la comprobación?

Después de algunas consideraciones y algunas horas de trabajo con docs ejemplo .yml puede tener este aspecto:

nombre: Calidad del código

on: 'push

trabajos:
  calidad del código:
    nombre: Lint source code
    se ejecuta en: ubuntu-latest
    pasos:
    - usa: actions/checkout@v1

    - nombre: Setup Node
      usa: actions/setup-node@v1
      con:
        node-version: '12.1'

    - nombre: Cache dependencies
      usa: actions/cache@v1
      con:
        ruta: ./node_modules
        key: $(( runner.OS ))-dependencies-$(( hashFiles('**/package-lock.json') ))
        restaurar-llaves: |
          $(( runner.OS ))-dependencias-$(( env.cache-name ))-
          $(( runner.OS ))-dependencias-
          $(( runner.OS ))-dependencias-

    - nombre: Instalar dependencias
      ejecutar: |
        npm install

    - nombre: Lint files
      run: |
        npm run lint

GitHub proporciona todo el material ambiental que necesitamos. En la última línea estamos ejecutando el comando npm run lint que antes no estaba definido:

"scripts": {
    "lint": "npm run lint:js && npm run lint:scss"
}

Tenga en cuenta que en nuestro flujo de trabajo no estoy usando :arreglar comandos.

Una vez realizados todos estos pasos, puede disfrutar de este hermoso resultado de GitHub antes de fusionar su Pull Request:

Artículos relacionados

Soluciones para empresas y escalas

Buenas prácticas para crear un equipo fuerte y cohesionado

La colaboración es crucial para el éxito del desarrollo de software. Un equipo fuerte que trabaja bien en equipo puede lograr mejores resultados y superar los retos. Para fomentar la colaboración se necesita esfuerzo, comunicación y...

The Codest
Krystian Barchanski Jefe de unidad de frontend
Desarrollo de software

¿Cómo implantar Agile Methodology?

Domine la metodología ágil con las mejores prácticas para una implantación satisfactoria y una mejor gestión de proyectos en el desarrollo de software.

EL MEJOR

Suscríbase a nuestra base de conocimientos y manténgase al día de la experiencia del sector informático.

    Quiénes somos

    The Codest - Empresa internacional de desarrollo de software con centros tecnológicos en Polonia.

    Reino Unido - Sede central

    • Oficina 303B, 182-184 High Street North E6 2JA
      Londres, Inglaterra

    Polonia - Centros tecnológicos locales

    • Parque de oficinas Fabryczna, Aleja
      Pokoju 18, 31-564 Cracovia
    • Embajada del Cerebro, Konstruktorska
      11, 02-673 Varsovia, Polonia

      The Codest

    • Inicio
    • Quiénes somos
    • Servicios
    • Case Studies
    • Saber cómo
    • Carreras profesionales
    • Diccionario

      Servicios

    • Asesoramiento
    • Desarrollo de software
    • Desarrollo backend
    • Desarrollo Frontend
    • Staff Augmentation
    • Desarrolladores de backend
    • Ingenieros de la nube
    • Ingenieros de datos
    • Otros
    • Ingenieros de control de calidad

      Recursos

    • Hechos y mitos sobre la cooperación con un socio externo de desarrollo de software
    • De EE.UU. a Europa: ¿Por qué las startups estadounidenses deciden trasladarse a Europa?
    • Comparación de los polos de desarrollo de Tech Offshore: Tech Offshore Europa (Polonia), ASEAN (Filipinas), Eurasia (Turquía)
    • ¿Cuáles son los principales retos de los CTO y los CIO?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Condiciones de uso del sitio web

    Copyright © 2025 por The Codest. Todos los derechos reservados.

    es_ESSpanish
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic it_ITItalian jaJapanese ko_KRKorean nl_NLDutch etEstonian elGreek es_ESSpanish