@mistercrunch one clarification here is that we don't need _multiple_ repos for 
the ui packages. It's pretty common to have one mono repo (eg 
`xxx/superset-ui`) that then contains multiple packages. It's almost easier to 
have them all in one place when there are inter-dependencies, and tools like 
`lerna.js` exist to help manage this + publishing. `vx` and `data-ui` are both 
written this way so I'm pretty familiar with how to do it.

So an example repo dir structure would look like

`xxx/superset-ui`
```javascript
// root package.json that has deps like lerna.js and shared things like build, 
testing, linting
package.json 

// each of these packages can be developed independently, and have dependencies 
on each other 
// lerna.js is used to manage inter-package dependencies + publishing.
packages/ 
  superset-core/
    package.json
    README.md
    src/ // source for THIS package only 
    tests/
  … 
  superset-plugin-vis-timeseries/
  superset-plugin-vis-histogram/
  …
  superset-preset-vis-core/
  superset-preset-vis-airbnb/
  superset-preset-vis-lyft/
```

so you could do that in a separate repo, or include it within 
`apache/incubator-superset` and update the structure to be

```javascript
superset/
  assets/
    // this defines the deps of the overall Superset app (including superset 
    // npm packages) + manages the build. This allows the packages to be 
developed 
    // and versioned independently from the Superset app 🎉
    package.json 
    webpack.config.js
    … 
    src/
      // these do NOT have package.json’s, their deps are defined in the root.
      // when an app has a dependency on a package (e.g., @superset/core), 
      // it is referencing the npm version of that code, not the code in the 
local 
      // repository. In development you can symlink such deps
      apps/
        explore/
        dashboard/
        …
      
      // each of these packages can be developed separately from the app.
      // lerna.js is used to manage inter-package dependencies + publishing.
      packages/ 
        superset-core/
          package.json
          README.md
          src/ // source for THIS package only 
          tests/
        … 
        superset-plugin-vis-timeseries/
        superset-plugin-vis-histogram/
        …

```

[ Full content available at: 
https://github.com/apache/incubator-superset/issues/5667 ]
This message was relayed via gitbox.apache.org for [email protected]

Reply via email to