dmachi at sitepen.com
Wed May 6 10:59:59 EDT 2009
In discussions with a customer, we noticed that in the tundra.css the
dijit.css import is ignored. After a little bit of tracing, this
comes down to being ignored by the buildscripts via a
cssIgnoreImport=../dijit.css option that we use in build-release.sh.
While I can see some utility in being able to set an import to be
ignored like this, I'm not sure it should be used on our release
files, but I am trying to understand the reasoning for it being done
At a minimum, we should probably document how people should use this
with and without a custom build. From my perspective, it seems that
the only reason to exclude the flattening of the dijit.css import in a
theme would be so that the dijit.css could be pulled in independently
at one time and then let the tundra.css (or another theme) be loaded
later without duplication of that css. However, with the current
case, trying to do this would end up with duplicate css requests (the
initial direct linked dijit.css and then the imported one from
tundra). The only time separation of these two things really seems
beneficial is if you want to change themese at runtime. Keeping them
separate would make that easier to do. Though in this case, it seems
like we would still end up loading dijit.css for each theme anyway. I
don't think that usecase outweighs the majority of pages that don't
allow the theme to change at run time, and as I mentioned it doesn't
seem to work right anyway.
In the end this comes down to a lack of any way to really do
intelligent css builds, but for now it seems like we should just
remove the import from tundra.css (and other themes) or let it get
interned as with the rest of the files.
One alternative would be to have cssStripImports=../dijit.css, which
would simply remove any matching import statements instead of ignoring
them. This way the default would just flatten as normal and inlcude
dijit.css in the tundra.css file, but if someone wanted to load
dijit.css separately, they could use cssStripImports to remove those
things they don't want to be imported automatically. Then they can
take care of loading them when they want.
All this said, perhaps I'm missing some reasoning behind this option/
implementation and would be glad to hear about why that might be.
More information about the dojo-contributors