Hey all, It is possible to build Ripple's client (UI) files post-install of an npm package, instead of having to build before publishing. This makes publishing to npm easy as possible, and also makes the dependencies management more simple (IMO).
i.e. This means "lib/client" (and all of `lib`) would be included in the npm package, which is more simple and straightforward (IMO) than specifying a partial set of files to include (along with "pkg/hosted"). Instead, the build is defined directly in package.json's scripts.postinstall property. However, a slight downside is that: initially, most (or all) of the npm deps will now have to be included in the package (mainly because all Jakefile tasks need to work ATM to build). So, installing it via NPM is essentially like downloading a cloned and configured repo. That means the size is significantly bigger. I.e (a rough measurement I did)... v0.9.16 (current) -> ~12MB (unpacked) v0.9.17 -> ~38MB (unpacked) Bleh. :-s. However, I think it is most simple to do this (for a start), IMO. The size is not utterly horrible, and optimization of the package size (and its deps) could be continued afterwards. Thoughts? This is something I have already got working, and I was thinking about creating an issue for this if there is general agreement. Gord Tanner and I were discussing this a while back. Gord please do chime in, especially if you think I am missing something, etc! ---- See here for my current (temp) work -> https://github.com/brentlintner/incubator-ripple/commit/b03a073bed6671922b250cb46a52cd4fd94842e6#L5L26 Note: Jake will be needed locally and globally (when developing Ripple in general). Ideally, this redundancy would be changed in the future (perhaps by adopting npm as the main way to interact with the codebase while developing for Ripple). Note 2: This also means globally installed packages like jshint, csslint and uglify-js could be installed locally, which offers better control with dependency management, creates less install steps in 'configure', and avoids possible version conflicts with other packages that may require a global install of those. -- Brent
