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] <javascript:>> > 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]<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.
