wintercounter / mhy

🧩 A zero-config, out-of-the-box, multi-purpose toolbox and development environment
https://mhy.js.org
MIT License
135 stars 32 forks source link

How can we improve mhy? #15

Open bafxyz opened 5 years ago

bafxyz commented 5 years ago

I'm thinking about using mhy for myself, but i don't like few things:

@wintercounter what do you think about this?

wintercounter commented 5 years ago

Thanks for the suggestions. There are definitely several areas for improvements.

For the dependency issues I already have similar solution in mind in the form of presets and keeping mhy to be a thin client but it needs a lot of changes.

One of mhy's mission is making the tools work well together using the latest versions. Installing the latest versions automatically won't guarantee that the tools will work together. For example ESLint 6 is out but they have some radical changes which broke how several other projects and mhy was using it. Having the latest installed automatically would break all tools in mhy.

mhy is basically running the command's of the respective tool. For example when you run mhy wds you basically run webpack-dev-server --config=mhy/configs/webpack. This means an additional workflow has to be implemented for every process that might use a port and IF port !== default AND occupied THEN change config to another port. What I mean is that port allocation is not directly done by mhy. Also this method rises another concern: when there is an issue with mhy and a process doesn't closed correctly for some reason, instead of killing the previous zombie process you end up running more zombie processes on more ports... But there are some workarounds to prevent this, exit if too many times free port not found for example.

Btw for dependency management I've added some tooling that will help you manage dependencies coming from mhy, but it's not finished yet.

bafxyz commented 5 years ago

We can have a config for specific projects like airbnb or whatever, with json of packages which you need for this project and if it's needed the version can be specified in this config. It should solve issues like eslint has now.

bafxyz commented 5 years ago

And yes, it should be tiny with dependencies, that's the main concern which everyone has i guess using it, because everyone has it's own lovely set of packages, so if you have a good idea how can we implement this i would be love to help.