browser client build/install process improvements
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Evergreen |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
Packaging the browser client currently looks something like this:
* dependency retrieval (angular, etc.)
* running unit tests (optional)
* minifying JS and CSS files
* moving dependencies and minified files into a 'build' directory.
For reference, dependencies currently include:
* Bootstrap CSS
* angular
* angular-route
* angular-mocks (unit tests only)
* angular-bootstrap
* angular-hotkeys
The full packaging process looks like this:
http://
I've added most of that to the build/tools/
* Install modern version of node.js (see again http://
% sudo npm update
% sudo npm install -g grunt-cli
% sudo npm install -g bower
% build/tools/
Like other release-building dependencies, the node/sudo stuff only happens once.
make_release will create and populate the build directory w/ files, which is where the browser client expects to find all of the dependencies and, if enabled, the combined core dependencies minified JS file.
All of the above has no effect on the dependencies needed to *run* Evergreen. The final product is simply more JS files executed by the browser.
---------
For make_release, this process does not seem terribly onerous. Particularly since in time it will replace all of the XUL dependency fetching and packaging and the prereqs required for that.
What about developers, though, building code from Git checkouts?
If you are working on the browser client, then the above is needed for executing unit tests, so going through these steps is inevitable. What if you are not working on the browser client and want to install/run Evergreen to test your non-browser code? Do we make node/grunt/bower requirements for building Evergreen and put the build steps directly into the Makefile (instead of make_release)? This would be my preference over, say, pushing pinned versions of dependencies to a community-hosted location to be fetched w/ a curl script, which is one more thing to maintain (and does what bower already does for us), but I'd like to get some feedback on that before adding these dependencies.
If we go the all-in route, the dependencies (node/grunt-
In the spirit of improving the browser client installation, I've pushed a branch that adds the new jquery dependency to the dependency builder/installer:
http:// git.evergreen- ils.org/ ?p=working/ Evergreen. git;a=shortlog; h=refs/ heads/user/ berick/ lp1350350- browser- client- jquery- dep
Adding 'pullrequest' for this ^--, but we either want to remove the pullreq after this is merged, since it does not address the Makefile aspects of this ticket.