YahooArchive / mojito

[archiving soon] Yahoo! Mojito Framework
BSD 3-Clause "New" or "Revised" License
1.57k stars 215 forks source link

Config assets added twice (once by ac.done and once by ac.assets) #1281

Open aljimenez opened 11 years ago

aljimenez commented 11 years ago

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'
        ]
   }
}

assets.common.js:

// 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);
}

action-context.common.js:

meta.assets = Y.mojito.util.metaMerge(meta.assets, config.assets || {});
caridy commented 10 years ago

@aljimenez did you ever solve this?

aljimenez commented 10 years ago

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.

aljimenez commented 10 years ago

I guess there is a design flaw, since config.assets only need to be added in one place.