Saltar al contenido

webpack-nexus 🐨: mi primer proyecto open source

La historia detrás de webpack-nexus, un pequeño CLI que construí para hacer scaffolding de proyectos JavaScript/React y aprender cómo funcionan por dentro herramientas como create-react-app.

2 min de lectura
  • webpack
  • react
  • tooling

Publicado originalmente en dev.to

Hace un año me preguntaba cómo se construyen cosas como create-react-app. En mayo de este año decidí intentar crear mi propio "create-react-app" para aprender sobre CLIs.

Así que, después de 2 meses de investigación y desarrollo, terminé mi propio CLI y quiero compartirlo contigo.

webpack-nexus 🐨: GiancarlosIO/webpack-nexus

¿Por qué creé mi propio CLI?

Lo creé porque quiero aprender a construir algo como create-react-app/next.js. No intento competir con los grandes CLIs/boilerplates actuales.

Sé que no es mejor que create-react-app o next.js, pero lo hice para cubrir mis propios requerimientos de configuración de webpack y vscode. Tal vez a ti también te sirva.

Features

  • Webpack: configuraciones de desarrollo y producción inspiradas en el increíble trabajo de react-boilerplate 🔨
  • Babel: ES6/ES7, jsx y más plugins configurados para modo de desarrollo y producción. ⚛️
  • Estilos con styled-components 💅
  • Tipado con typescript y eslint ✔️
  • Formateo automático con prettier 🔄
  • vscode configurado para trabajar con eslint + typescript + prettier 💙
  • React-apollo: próximamente...
  • Jest: próximamente...
  • Husky + lint-staged: próximamente...
  • webpack-nexus.js: archivo para configurar/sobrescribir la configuración actual de webpack/babel, próximamente...
  • Setup/configuraciones para atom y sublime, próximamente...

¿Cuál es la diferencia con otros proyectos como create-react-app/react-boilerplate/next.js?

Tiene muchas configuraciones específicas que uso en todos mis side projects, así que quizá a ti te vaya bien con CRA o NEXTJS.

Probé create-react-app y me parece increíble, pero no me gusta cómo funciona.

  • Necesitas hacer eject para agregar tus propios plugins de webpack o babel.
  • Necesitas hacer eject para configurar/agregar reglas de prettier/eslint.
  • Si tienes errores de lint, lanza un error. A veces solo quiero probar algunos edge cases. webpack-nexus no lanza errores porque eslint no está configurado dentro de webpack: solo se usa para lintear los archivos en vscode.
  • No tiene soporte para múltiples entries. Se puede configurar, pero de nuevo, necesitas hacer eject.
  • No trae styled-components instalado.
  • No tiene apollo graphql configurado. Graphql es algo que siempre uso en mis proyectos.
  • No tiene react-hot-loader configurado.

¿react-boilerplate? Me gusta mucho, pero yo solo quería un CLI simple para hacer scaffolding de mis proyectos y no tener que clonar un repositorio cada vez.

Y... no es comparable con next.js porque no es un framework de React... pero ¿quizá en el futuro pueda serlo? 🤔

Espero que este proyecto te ayude a hacer scaffolding de tu próximo gran side project. 😊

Puedes ver la documentación aquí: GiancarlosIO/webpack-nexus

Y... eso es todo. ¡¡¡Gracias por leer!!!