npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

cicd_gigena

v1.0.0

Published

Genera automáticamente los GitHub Actions de deploy a DEV/QA/PROD (S3 + CloudFront) para proyectos frontend Angular/Ionic.

Downloads

143

Readme

Luchy_Gigena

Genera automáticamente los GitHub Actions para desplegar a DEV / QA / PROD (S3 + CloudFront en AWS, con OIDC) en proyectos frontend Angular o Ionic.

Sigue el patrón de "un archivo de workflow por ambiente" (deploy-dev.yml, deploy-qa.yml, deploy-prod.yml), con manejo de cache-control diferenciado para SPA (assets con hash cacheados 1 año, index.html/JSON sin cache).

Instalación y uso

Opción A — sin instalar nada (recomendada)

Parado en la raíz de tu proyecto nuevo:

npx cicd_gigena

Te va preguntando todo interactivamente: nombre del proyecto, tipo (angular/ionic), región, ramas por ambiente, bucket S3 y CloudFront ID de cada uno (podés dejarlos en blanco con Enter si todavía no los tenés — el generador te deja un comentario # TODO en el .yml para que lo completes después a mano).

Opción B — instalada como dependencia de desarrollo del proyecto

npm install --save-dev cicd_gigena
npx cicd_gigena

Opción C — no interactiva (para scripts o plantillas de "nuevo proyecto")

npx cicd_gigena --yes \
  --name=mi-app --type=angular --region=us-east-1 \
  --branch_dev=dev --branch_qa=qa --branch_prod=prod \
  --bucket_dev=mi-bucket-dev --cf_dev=E1XXXXXXX \
  --bucket_prod=mi-bucket-prod --cf_prod=E2YYYYYYY

(Cualquier bucket/CloudFront que no pases queda con un placeholder # TODO.)

Qué genera

  • .github/workflows/deploy-dev.yml
  • .github/workflows/deploy-qa.yml (opcional, se puede omitir)
  • .github/workflows/deploy-prod.yml
  • .github/AMBIENTES.md — checklist de lo que falta configurar a mano: el secret AWS_ACCOUNT_ID, los Environments en GitHub, y cualquier bucket/CloudFront ID que hayas dejado pendiente.

Convenciones que asume

  • El rol IAM de cada ambiente se llama github-actions-<proyecto>-front-<env>-deploy (se puede sobreescribir por ambiente en el prompt o con --role_dev=... etc.).
  • Autenticación contra AWS vía OIDC, armando el ARN del rol con secrets.AWS_ACCOUNT_ID + el nombre de rol — así solo necesitás un secret a nivel repo, no uno por ambiente.
  • Carpeta de build: www para Ionic, dist/<proyecto>/browser para Angular puro (Angular 17+). Si tu proyecto no es ninguno de los dos, generalo con --type=otro y ajustá manualmente el outputDir en el .yml (queda marcado con placeholder).

Publicarlo en npm (público)

1. Crear cuenta

En https://www.npmjs.com/signup. Confirmá el email — npm no deja publicar sin verificar la cuenta.

2. Elegir el nombre final

Reemplazá TU-NOMBRE-AQUI en package.json (campo name) y en este README. Fijate que esté libre en https://www.npmjs.com/package/ (si da 404, está libre). Si el nombre que querías está tomado, dos salidas:

  • Otro nombre sin scope, ej. frontend-cicd-scaffold.
  • Un scope con tu usuario, ej. @tu-usuario-npm/cicd-generator (siempre disponible, porque el scope es tuyo). Con scope, además hace falta el flag --access public al publicar (ya está seteado en publishConfig del package.json, así que npm publish solo alcanza).

3. Login y publicar

npm login          # te pide usuario, contraseña, y un código si tenés 2FA
npm publish        # ¡ya queda público en npmjs.com!

4. Confirmar que funciona

Desde cualquier otra máquina, sin login ni nada:

npx TU-NOMBRE-AQUI

Actualizar versiones publicadas

Cada vez que cambies algo:

npm version patch   # o minor / major, según el cambio (semver)
npm publish

npm version ya actualiza el número en package.json y crea un tag de git.

Importante: los proyectos ya generados no se actualizan solos cuando publicás una versión nueva — el generador solo escribe archivos una vez, no los mantiene sincronizados después. Cada proyecto nuevo que corra npx TU-NOMBRE-AQUI sí va a bajar la última versión.