Comments (9)
From my perspective, it would help to better separate the apps from each other, so I am all in. If anything is required in the open-ux-tools, just let me know.
from generator-ui5-project.
I generally like the idea. I do think we would need to touch code in quite a few different places, but I guess it's feasible. I know that @petermuessig also has an opinion on this as we talked about the whole uimodule
-structure a while ago.
from generator-ui5-project.
IMO, a mono-repo setup requires a package.json
for each module. We should in general rework the structure. In case of including ui projects and backend project the dependencies are rather different and must not be mixed. Ideally the project also uses a mono repo tool such as yarn
or better pnpm
. We should follow-up on this after the summer holiday break. In general, we should think about streamlining the generators more in depth - at least the ones coming from the UI5 community.
from generator-ui5-project.
With PR #42 @tobiasqueck introduce support for SAP Fiori elements Flexible Programming Model (FPM) pages and also added question:
? Do you want the module to be visible in the SAP Fiori tools? (Y/n)
Could we work on a PR to apply the new monorepo structure in case this questions is answered with Yes
, only. Like a frontrunner implementation, because we need this for SAP Fiori tools. If the new structure finds acceptance, we could also use it as default for other generated project.
from generator-ui5-project.
I like the strategy, however, it might be technically a bit more complicated to do it this way because you need two implementations for multiple sub-generators (I assume).
from generator-ui5-project.
I' ve prepared a sample mono repo that has two Fiori apps. One FPM enabled app, similar to the one generated in this script: https://github.com/tobiasqueck/ui5con2022, generated with yo (generator-ui5-project) and one Fiori elements List Report Object Page v4 app, generated with @sap/generator-fiori
. While generating both apps I've choosen all available linting and JavaScript helper options.
Here is the repo: https://github.com/Klaus-Keller/fiori-monorepo
What I've done so far can be seen in the commit history (bottom to top). Of course, looking at the details there are some open questions about what to move to the root and what should be kept on app level, but in general I think this sample could serve as a basis for discussion. We could add more and different apps to it to see how they related.
from generator-ui5-project.
Do we want to limit it to pnpm
or should the generator offer to generate for yarn
, pnpm
or npm@7+
?
Where would you put the btp deployment script e.g. mta.yaml
etc.; would this be another (private) module in packages
?
from generator-ui5-project.
Hi @tobiasqueck,
Do we want to limit it to pnpm or should the generator offer to generate for yarn, pnpm or npm@7+?
I'd start with pnpm
and if there is a community demand for other package managers, it should be a rather simple contribution to add support for other package managers.
Where would you put the btp deployment script e.g. mta.yaml etc.; would this be another (private) module in packages?
Good question and this is exactly the kind of discussion I like to have. I guess this depends on your scenario, if you have modules that are all deployed together it might be on root level, if you selectively deploy certain packages you might want to go with a private module in packages.
Other things, especially devDependencies
, that we need to discuss include:
- linting rules; I assume in most cases you want to have one ruleset for all apps in your monorepo
- UI5 version specific modules; like
@sap/ux-specification
or@sapui5/ts-types
. If all modules in your monorepo are deployed to the same target, they might share the same UI5 version. Otherwise, if apps need different versions of UI5 specific modules, they can't be defined on root leveldevDependencies
. - tooling support; modules like
@ui5/cli
or@sap/ux-ui5-tooling
are good candidates to consolidate to root. - testing; also highly dependent on the actual scenario, I'd propose to keep it on app level, open for discussion.
from generator-ui5-project.
The monorepo approach has been implemented and merged with PR #75
from generator-ui5-project.
Related Issues (20)
- Proposal to add a more sophisticated eslint ruleset HOT 9
- eslint always looks for "xml", even if oConfig.viewtype=="JSON" HOT 5
- Component is not loaded with newest version of @sap-ux/ui5-application-writer
- Generated FlpSandbox shows an empty page HOT 4
- Allow usage of Promises when using code assist HOT 1
- QoL change: projectname ↔ "name" attribute in package.json HOT 2
- Tests `JS-Application Router @ Cloud Foundry` fails HOT 2
- Duplicate entries in `.eslintrc` for project scaffolding HOT 2
- Deployed app is not visible in the html5-apps-repo HOT 2
- App.controller.js has wrong namespace HOT 1
- Error in directory paths when generating a new app inside an existing project HOT 1
- ajax and xhr are not available in HOT 4
- Suggestion: Remove JS and HTML View Types
- Error when creating "newwebapp" with "project" generator HOT 7
- Error with ui5-project generator HOT 2
- [error] No parser could be inferred for file HOT 1
- Remove JS View from template(s) HOT 1
- Error - [ERR_UNSUPPORTED_ESM_URL_SCHEME] HOT 2
- Various findings HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from generator-ui5-project.