mojito
mojito copied to clipboard
Config assets added twice (once by ac.done and once by ac.assets)
Assets in a mojit's config are added twice; once by the ac.done method and once by the ac.assets constructor method. When it is added by the ac.assets addon, assets with relative paths are expanded; however when added by ac.done, relative paths are not expanded resulting in a meta data with duplicate assets (one with a relative path and one with an absolute path). On the client side the absolute paths load; however the relative paths seem to be associated with the parent mojit resulting in 404s.
Resulting meta data:
{
top: {
css: [
'./index.css',
'/static/Mojit/assets/index.css'
]
}
}
// Add "assets" if they are found in the config.
if (command.instance && command.instance.config &&
command.instance.config.assets) {
this.addAssets(command.instance.config.assets);
}
meta.assets = Y.mojito.util.metaMerge(meta.assets, config.assets || {});
@aljimenez did you ever solve this?
From what I remember, my solution was not to use relative paths for assets in static configuration. But there is a problem since ac.done merges meta.assets with config.assets and then it calls ac.assets' mergeMetaInto method, which also merges assets contained in config.assets. So config.assets end up getting added twice. This becomes a problem when an asset is specified with a relative path, because ac.done simply does a metaMerge of config.assets without expanding the relative path.
I guess there is a design flaw, since config.assets only need to be added in one place.