Open anikethsaha opened 5 years ago
Getting help from the communities is always awesome to have.
As from the plan we can see it is going to be a huge re-written. I handling this alone can be always buggy and not so handy. Would love to get some help here.
Also, Will appreciate a lot of people add their own features or better architecture or giving suggestion based on this
Getting other's hand for points 2
and 5
will be really helpful for making it better and fast.
Currently, this project name is good and explanatory but still it feels like it is limited to some functionality. Need to change the project name and will update here itself about the status. Surely gonna make use of the scoped packages to support the ecosystem of this package.
npm
To be honest the current repo logo and account logo both sucks. So have to change them. Simple !!
Hi ! 🚀
:page_facing_up: Goal and about
Currently, this is a simple cli tool for generating web app projects like using MERN stack based on a few questions and some build and development-related questions as well as preferred bundler and all.
Goal. What I want to achieve is a tool that will eliminate the requirement of adding boilerplates manually. the goal extends to a point where I whole adding of boilerplates should be flexible and customizable. As a user I would like to have more options on my bundler or on my styling options, I want a plugin to update my
webpack.config.js
when I am changing my style loaders or changing my scss to postcss or similar and many other use cases. It will be used as a pair programmer rather than a project generator.The most important thing about this project will be how plugins are integrating and how they will work. and I consider this as most challenging thing of this project. Plugins will load more than 70% work of using this package. And writing plugins should be simple.
:mega: Re-Written of the CLI
Currently, the cli is using templates architecture where it is being shipped of the templates while installing which can increase the bundle size of the project and also increase the install time. We have Three templates right now and have a plane to increase them to more number in future as the goal of this CLI is to
become a single app generator for all kind, type, the stack of the project
.New Architecture plan
1. No templates packages in the project core:
gatsby-cli
does.2. Plugin Architecture Most Exciting Plan:
passportjs
in your project plugin, etc.3. Config file :
4. Monorepo:
core
package. Also, there will core plugins and utility methods in this repo as monorepo.5. Anything to make it FAST:
caching
system in order to cache the plugins, packages and also the user's interactionsWorking flow not final yet:
When starting the cli, you can either pass the Github link to the boilerplate you want to use or the CLI will prompt to ask for it.
It will first check for some specific files in the boilerplate project and if it finds it okay to make it customizable and pluggable. then it will install it and will do further work
If not, then it will scan the github keywords used in that project and will recommend you based on that keywords. It will try to recommend any default or official boilerplates.
command will look similar like this :
-b [URL]
or if not passing the boilerplate , just simply running the CLI , it will start an interactive promptWork of the Interactive prompt:
used will be asked some basic questions like, is it a website with or without server, (basic)
then if with the server then chained of questions like server framework or raw? , need a database? if yes then type and preferred ORM for it?. (an advance question which may not be required to answer)
Then question for frontends framework, (basic)
need state management if supported?, then need SSR if supported?
Then language type like TS or JS (an advance question which may not be required to answer)
Preferred bundlers, styling thing. (an advance question which may not be required to answer)
PWA ? or need minimal alternatives to framework like Preact for react etc.(an advance question which may not be required to answer) ,
Using the config file, :
-c [path]
it will look for global config file if thepath
is not passed else it will load the config file mentioned in thepath
Where plugin will come?
--plugin <plguin-name>
inside our project structure and then it will create config file inside the project if not present already, and it will add this plugin name to that config file and then running command likemake
will run that plugin and also we can prefined plugin(s) in that config file and will run those plugins.This is what I got till now !