A token that a plugin user must replace isn't acceptable, as it defies the drop-in nature of most plugins. But there are alternatives that would allow Yehuda to automate replacing the relative directory URL without anyone else having to modify the file.
Something like this: background-image: url(../img/bla.png) /* [relative-url] */ Writing a script that looks for these inline comments and modifies the content accordingly wouldn't be any harder then the %imagePath% token. In any case, we should define a convention for packaging resources, so that a plugin author can stick with the convention, without having to specify the metadata. Based on that convention and inline comments a plugin user could automate moving resources to project-specific folders. About the other metadata.json elements: How about keeping plugin names in sync with file names? jquery.tabs.js -> jquery.tabs; ui.core.js -> ui.core What about versioned depenendencies? Dependency to a certain jQuery version? So far plugins are always packaged into a single file, something like utility.tabs.jquery isn't in wide use. I don't see why that should be changed. So, to summarize: { name: "jquery.tabs", author: "Yehuda Katz", version: "1.0" dependencies: { "ui.core": "1.6", "ui.mouse": "1.6" } } Jörn On Sat, Oct 4, 2008 at 9:49 AM, Ca-Phun Ung <[EMAIL PROTECTED]> wrote: > I understand what you are saying - and believe me I have much experience > with "real-projects" that have their separate image/css/javascript folders > set in a certain way. What I'm trying to impart is the idea of de-coupling > so that plugin assets are independent of whatever system it is placed into. > By adding a %imgDir% token to CSS we're already assuming developers wants to > change CSS files whereas some might quite happily use the plugin as-is, > placing it inside a dedicated plugins sub-folder and link to the plugin css > files directly. > The point is you don't have to map the structure implanted inside a plugin > to the structure on your system. They could live quite happily together. > What we're dealing with here is a matter of aesthetics which is not > something you could get right for everyone. > If it is absolutely essential that all images/css are placed inside that > specified by the system then I think the automated tool could quite easily > handle this. It should be quite simple to write a CSS parser in Ruby or even > a simple regex to replace the combination found inside url(...) so it > replaces anything before the image filename with whatever folder structure > the system chooses. > On Sat, Oct 4, 2008 at 3:10 PM, Yehuda Katz <[EMAIL PROTECTED]> wrote: >> >> People who download plugins today have to go modify CSS files to make them >> match their existing directory structure. I've had to contend with this more >> than once with the tabs plugin, including having to figure out the issue in >> the first place. Typical downloaders could use the find/replace feature of >> their editors to quickly set up the CSS the way it belongs in their project, >> and we could document this, instead of developers, every time, having to go >> into the bundled CSS to figure out the expectations of the plugin. >> We could potentially also set up packages.jquery.com to automatically >> replace the token for a non-tokenized version (although, again, I think >> making assumptions about people's directory structures doesn't map well onto >> real-world projects). >> -- Yehuda >> >> On Fri, Oct 3, 2008 at 9:33 PM, Ca-Phun Ung <[EMAIL PROTECTED]> wrote: >>> >>> A few more potential issues with the %imgDir% token are: >>> 1. Plugin developers need to remember to add the token back in every time >>> they package the plugin for release. >>> 2. Those who simply download plugins without an automated tool will have >>> a problem with this token. >>> 3. If we're saying that this is a separate repository under >>> packages.jquery.com, we may come into sync'ing issues as plugin developers >>> have to upload their plugins twice. One version with the token and another >>> without. >>> On Sat, Oct 4, 2008 at 12:05 PM, Ca-Phun Ung <[EMAIL PROTECTED]> wrote: >>>> >>>> But if we don't touch CSS and image locations we're not assuming >>>> anything - the plugin developer should make this decision and not the >>>> automation tool. The automation tool should simply copy over the plugin as >>>> is and use the metadata.json to determine what is needed for installation. >>>> If we start dealing with image and CSS re-location it will make plugin >>>> maintenance more difficult, i.e. what happens if you decide to delete the >>>> plugin? >>>> >>>> >>>> On Sat, Oct 4, 2008 at 4:34 AM, Yehuda Katz <[EMAIL PROTECTED]> wrote: >>>>> >>>>> The problem is that you *can't* assume that the img folder remains >>>>> relative to the css folder. People are putting jQuery inside of other >>>>> directory structure (like Rails or Merb) which have their own conventions, >>>>> and then it's up to the individual developer to figure out how to modify >>>>> the >>>>> relative paths. >>>>> I'd like to be able to automate the installation of jQuery plugins, >>>>> which means not having to figure this out manually. >>>>> -- Yehuda >>>>> >>>>> On Fri, Oct 3, 2008 at 8:54 AM, Ca-Phun Ung <[EMAIL PROTECTED]> >>>>> wrote: >>>>>> >>>>>> Hi Yehuda, >>>>>> Interesting proposal. >>>>>> A note on CSS images. I'm not sure the %imageDir% token will be of any >>>>>> use in CSS because CSS is capable of locating images relative to itself. >>>>>> i.e. if we have a structure like >>>>>> /assets >>>>>> -- /css/style.css >>>>>> -- /img/logo.png >>>>>> Then as long as the img folder remains relative to the css folder, >>>>>> whereever it is copied the following will always hold true: >>>>>> _style.css_ >>>>>> div#logo { >>>>>> background: url( ../img/logo.png ) no-repeat; >>>>>> } >>>>>> >>>>>> >>>>>> On Fri, Oct 3, 2008 at 2:31 PM, Yehuda Katz <[EMAIL PROTECTED]> wrote: >>>>>>> >>>>>>> For a while, I've been trying to make it possible to build a system >>>>>>> to automatically install jQuery plugins into an application. In >>>>>>> particular, >>>>>>> I've wanted to be able to let Merb (a Ruby web framework I maintain >>>>>>> -- http://merbivore.com/) install jQuery plugins simply and easily. >>>>>>> There are a few problems I needed to see solved: >>>>>>> >>>>>>> A way for package authors to describe the locations of the javascript >>>>>>> files, the CSS files, and any images >>>>>>> A way for package authors to declare required dependencies >>>>>>> A way to write CSS files that don't need to provide explicit image >>>>>>> paths >>>>>>> >>>>>>> I want to propose a packaging format that plugin authors can use. To >>>>>>> get the ball rolling, I'm proposing a JSON file called metadata.json: >>>>>>> { >>>>>>> "name": "tabs.jquery", >>>>>>> "author": "Yehuda Katz", >>>>>>> "dependencies": [ >>>>>>> "core.ui.jquery", >>>>>>> "mouse.ui.jquery" >>>>>>> ], >>>>>>> "javascript": [ >>>>>>> "lib/utility.tabs.jquery", >>>>>>> "lib/tabs.jquery", >>>>>>> ], >>>>>>> "cssDir": "css", >>>>>>> "imageDir": "images" >>>>>>> } >>>>>>> Additionally, I'd like to propose that CSS files containing image >>>>>>> paths use the token %imageDir% to refer to the directory where the >>>>>>> images >>>>>>> will be placed. This will allow automated tools (or even users >>>>>>> themselves) >>>>>>> to quickly modify CSS files with the correct relative (or absolute) >>>>>>> path. >>>>>>> Does this stuff make sense? People seemed to be, in general, in favor >>>>>>> of a more consistent package format, so I thought I'd get the ball >>>>>>> rolling >>>>>>> here. >>>>>>> -- >>>>>>> Yehuda Katz >>>>>>> Developer | Engine Yard >>>>>>> (ph) 718.877.1325 >>>>>>> >>>>>>> >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> Ca-Phun Ung >>>>>> + Yelotofu <http://yelotofu.com> >>>>>> + css, django, hongkong, html, javascript, php >>>>>> >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> Yehuda Katz >>>>> Developer | Engine Yard >>>>> (ph) 718.877.1325 >>>>> >>>>> >>>> >>>> >>>> >>>> -- >>>> Ca-Phun Ung >>>> + Yelotofu <http://yelotofu.com> >>>> + css, django, hongkong, html, javascript, php >>> >>> >>> >>> -- >>> Ca-Phun Ung >>> + Yelotofu <http://yelotofu.com> >>> + css, django, hongkong, html, javascript, php >>> >>> >> >> >> >> -- >> Yehuda Katz >> Developer | Engine Yard >> (ph) 718.877.1325 >> >> > > > > -- > Ca-Phun Ung > + http://yelotofu.com > + css, django, hongkong, html, javascript, php > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "jQuery Development" group. To post to this group, send email to jquery-dev@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/jquery-dev?hl=en -~----------~----~----~----~------~----~------~--~---