Isaac, may be, it worth to add native yaml support to npm? I don't see big 
problems with backward compatibility.
That would be user-friendly.

понедельник, 24 июня 2013 г., 19:37:07 UTC+4 пользователь Isaac Schlueter 
написал:
>
> As with using CoffeeScript or Streamline to write your JavaScript, I 
> have no problem with stuff like this for publishing to npm, as long as 
> what ends up in the registry is "regular" json and javascript. 
>
> I'd recommend against using `ynpm` as the bin name, if only because 
> I'm an ex-yahoo, and `ynpm` sounds like Yahoo!'s fork of npm ;) 
>
> You know, you CAN put comments in JSON by just using a key that isn't 
> used for anything else.  You can't put it in places (such as 
> `dependencies`) where the key name is relevant information, of course. 
>  But at the top-level, this is fine: 
>
> ```json 
> { "name": "silverware-drawer" 
> , "description": "BECAUSE ITS FULL OF FORKS GET IT!?" 
> , "//": 
>   [ "This package.json file has a lot of forks on github" 
>   , "of things that I've forked and added patches to." 
>   , "I'll use the 'real' one once they're merged." ] 
> , "//0": "Use an ID on multiple comments so they don't clobber" 
> , "//1": {"this":"may","not":"be","ideal":"but","it":"works"} 
> , "dependencies": { "foo":"my/fork" } 
> } 
> ``` 
>
>
> On Sun, Jun 23, 2013 at 11:59 AM, Alex Kocharin 
> <[email protected]<javascript:>> 
> wrote: 
> > 
> > When ynpm looks in a directory, it sees both files: real yaml file and a 
> > "virtual" json file. So it packs both. 
> > 
> > It's very much intentional to ensure interoperability. We can use 
> whatever 
> > we want in development enviroment (coffee-script, package.yaml, other 
> cool 
> > stuff), but other people who will install a package from registry should 
> > have as little issues with it as possible, which means compiled to 
> > javascript modules and a package.json format. 
> > 
> > 
> > 
> > On Sunday, June 23, 2013 10:32:19 PM UTC+4, José F. Romaniello wrote: 
> >> 
> >> Do you pack/publish with package.yaml inside? How does that works with 
> the 
> >> npm service? 
> >> 
> >> El 23/06/2013 13:12, "Alex Kocharin" <[email protected]> escribió: 
> >>> 
> >>> Hi guys, 
> >>> 
> >>> TL;DR: I developed a package that monkey-patches npm to work with 
> >>> package.yaml files without any json ever written to a disk. Hope it 
> will be 
> >>> useful. 
> >>> 
> >>> Published as npm module a month ago: https://npmjs.org/package/ynpm 
> >>> (github: https://github.com/rlidwka/ynpm ), and I think it's ready to 
> use 
> >>> now. 
> >>> 
> >>> So, 6 months ago I asked in the mailing list about how to place 
> comments 
> >>> in package.json files ( 
> >>> https://groups.google.com/forum/?fromgroups#!topic/nodejs/NmL7jdeuw0M) 
> >>> and 
> >>> found no good answer for that. So for a long time I used package.js 
> and a 
> >>> Makefile to generate package.json. Rather ugly solution. 
> >>> 
> >>> We were developing a large and complex project, and I submitted dozens 
> >>> pull requests to other packages. But until these PR were merged, I 
> needed to 
> >>> point these dependencies to my git repositories with these changes in 
> place. 
> >>> And THAT is why I desperately needed comments. 
> >>> 
> >>> So anyway... these are fundamental issues with JSON: 
> >>> 
> >>> 1. JSON have no comments, you can't comment out why did you put some 
> >>> dependency, but not the other. 
> >>> 2. JSON have no trailing comma. So you can't easily remove an item, 
> add 
> >>> an item or interchange two arbitrary lines in a list. 
> >>> 3. JSON require ugly enquoting both keys and values in object. 
> Javascript 
> >>> require enquoting values only, and YAML doesn't require quotes in most 
> >>> cases. 
> >>> 
> >>> JSON is designed to be written by computers, not humans. Humans could 
> >>> read it easily, but maintaining JSON is a pain. 
> >>> 
> >>> Why YAML? Well, I would certainly not use XML. :) Anyway, YAML it's 
> >>> easier to read and edit than all other widely known serialization 
> formats, 
> >>> and it solves all issues described above. I would fully support if 
> Isaacs 
> >>> returns package.js back to work (see 3y old github issue 
> >>> https://github.com/isaacs/npm/issues/408 ), it would be good enough, 
> but it 
> >>> doesn't seem to happen. 
> >>> 
> >>> So, a lot of other people suggested to use YAML. That's the most 
> recent 
> >>> github issue https://github.com/isaacs/npm/issues/3336 , but there 
> were 
> >>> others. 
> >>> 
> >>> And there are some existing solutions to do that, for example 
> npm-yaml: 
> >>> https://npmjs.org/package/npm-yaml. But all these solutions just 
> pre-compile 
> >>> package.yaml before npm is executed. It's not good enough because json 
> >>> remains written on the disk, and if npm modifies json, yaml remains 
> >>> unmodified. 
> >>> 
> >>> So, I wrote a wrapper that replaces fs.* calls, so whenever npm reads 
> >>> package.json file, and if there is a yaml file, we compile and return 
> yaml 
> >>> contents. If npm writes package.json, we change yaml instead. 
> >>> 
> >>> I made sure that all npm functionality is working with this new 
> approach. 
> >>> For example, in order to make `npm version` working I replaced 
> >>> execFile("git", ["add", "package.json"]) with an appropriate 
> substitute. 
> >>> Other features required to replace readdir and file streams, and so 
> on. 
> >>> 
> >>> If something is wrong with this approach or if something breaks beyond 
> >>> fixing with future npm versions, I'll go for a fork. But as for now 
> things 
> >>> seem to work out nicely. 
> >>> 
> >>> PS: to guys who write YAML parsers: could you please write a module to 
> >>> change one particular node in YAML file without rewriting the entire 
> file? 
> >>> Because it is the only thing here that ain't very good. I know it 
> can't be 
> >>> done in a general case, but it doesn't mean we shouldn't try. 
> >>> 
> >>> Regards, 
> >>> alex 
> >>> 
> >>> -- 
> >>> -- 
> >>> Job Board: http://jobs.nodejs.org/ 
> >>> Posting guidelines: 
> >>> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines 
> >>> You received this message because you are subscribed to the Google 
> >>> Groups "nodejs" group. 
> >>> To post to this group, send email to [email protected] 
> >>> 
> >>> To unsubscribe from this group, send email to 
> >>> [email protected] 
> >>> 
> >>> For more options, visit this group at 
> >>> http://groups.google.com/group/nodejs?hl=en?hl=en 
> >>> 
> >>> --- 
> >>> You received this message because you are subscribed to the Google 
> Groups 
> >>> "nodejs" group. 
> >>> To unsubscribe from this group and stop receiving emails from it, send 
> an 
> >>> email to [email protected]. 
> >>> 
> >>> For more options, visit https://groups.google.com/groups/opt_out. 
> >>> 
> >>> 
> > 
> > -- 
> > -- 
> > Job Board: http://jobs.nodejs.org/ 
> > Posting guidelines: 
> > https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines 
> > You received this message because you are subscribed to the Google 
> > Groups "nodejs" group. 
> > To post to this group, send email to [email protected]<javascript:> 
> > To unsubscribe from this group, send email to 
> > [email protected] <javascript:> 
> > For more options, visit this group at 
> > http://groups.google.com/group/nodejs?hl=en?hl=en 
> > 
> > --- 
> > You received this message because you are subscribed to the Google 
> Groups 
> > "nodejs" group. 
> > To unsubscribe from this group and stop receiving emails from it, send 
> an 
> > email to [email protected] <javascript:>. 
> > For more options, visit https://groups.google.com/groups/opt_out. 
> > 
> > 
>

-- 
-- 
Job Board: http://jobs.nodejs.org/
Posting guidelines: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en

--- 
You received this message because you are subscribed to the Google Groups 
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to