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
-~----------~----~----~----~------~----~------~--~---

Reply via email to