collective / mrs-developer

NodeJS utility to checkout Git repositories as NPM dependencies
7 stars 3 forks source link

Monorepo support #5

Closed sneridagh closed 4 years ago

sneridagh commented 4 years ago

Hi! Have you ever thought in add support for monorepos? So one checkout can have several packages? Cheers!

ebrehault commented 4 years ago

You can probably already manage monorepos dependencies with the current mrs.developer.json format by using the same url but different path. Example:

{
   "grange-core": {
        "package": "@guillotinaweb/grange-core",
        "url": "git@github.com:guillotinaweb/grange-mono-repo.git",
        "path": "/projects/grange/core",
        "tag": "1.2.1"
    },
    "grange-form": {
        "package": "@guillotinaweb/grange-form",
        "url": "git@github.com:guillotinaweb/grange-mono-repo.git",
        "path": "/projects/grange/form",
        "tag": "1.1.1"
    }
}

It is not ideal, as it might produce conflicts (you should make sure you use the same tag or same branch for all your deps coming from the same mono-repo) and it will make all the git calls twice…

If you give me a decent format for mrs.developer.json supporting mono-repos on a better way without breaking the current format, I am sure I can implement it soon :)

sneridagh commented 4 years ago

If you give me a decent format for mrs.developer.json supporting mono-repos on a better way without breaking the current format, I am sure I can implement it soon :)

Indeed that will be the hardest part :)

ebrehault commented 4 years ago

maybe this:

{
   "grange": {
        "package": "@guillotinaweb/grange-core",
        "url": "git@github.com:guillotinaweb/grange-mono-repo.git",
        "tag": "1.1.1"
        "subrepos": {
             "core": {
                    "path": "/projects/grange/core",
              },
             "grange-form": {
                  "path": "/projects/grange/form",
             }
    }
}
sneridagh commented 4 years ago

Yes, fair enough! I've also thought to declare them the usual way, then detect if you've already pulled them, then used the already pulled one, just write the jsconfig.json file. But then I guess it might be confusing to be able to specify different tags/branches, and know which one will win...

So I'm +1 for your proposal!

BTW, going full Volto addons story here! Let's see how far can we reach and how many niceties can we stuff there :)