-
-
Notifications
You must be signed in to change notification settings - Fork 366
Roadmap for UserFrosting 4.2
Main goals : New Migrator, NPM fix, etc.
Status: Implemented in develop
branch
Related Milestone: 4.2.0
Currently the frontend vendor asset system in UserFrosting faces several issues:
- Bower has been deprecated (#737)
- Duplicate frontend vendor libraries are downloaded (#727)
- Conflicts between dependencies in different Sprinkles go completely unnoticed
Fixing (1) is at face value, simple. Just add support for npm. Except that node and npm don't every have to deal with dependency conflicts, since in such a case 2 versions are downloaded. Thankfully a npm alternative called yarn addresses this via a dependency flattening mechanism triggered by "flat": true
.
(2) is a little more tricky. One solution is to produce a package.json
that references each sprinkle, but this results in significant garbage data being copied. The solution instead is to make a node package (merge-package-dependencies) that creates a new package.json
based on the result of dependency merging.
Which leaves (3), the hardest issue to tackle. The best place to handle this is inside the package mentioned in (2). Having complete dependency tree conflict detection would be extremely difficult to achieve, and so the conflict detection should be kept to just the directly included dependencies, leaving yarn to pick up what remains. This lack will likely be addressed in the future however (merge-package-dependencies#6).
These improvements will have a consequence however. UserFrosting/assets does not handle using assets at different tree depths well. While possible to fix, breaking changes would be introduced. Changing the directory depth to fix this is one solution, but a poor one. Since the opportunity has presented itself, this project includes the following UserFrosting/Assets related issues:
- Locked to
gulp-bundle-assets
as the only bundling tool - Library cannot be used in non-UserFrosting projects due to customization
- UserFrosting's development asset server functionality is tightly coupled with UserFrosting/Assets
In a nut shell, (4), (5), and (6) all lead in to modularity improvements.
Status: Implemented in feature-with-aggregates
branch
These include withSum
, withAvg
, etc. Very useful for Sprunjing aggregates on related entities (total hours, for example).