@title Javelin at Facebook @group facebook Information specific to Javelin at Facebook. = Building Support Scripts = Javelin now ships with the source to build several libfbjs-based binaries, which serve to completely sever its dependencies on trunk: - `javelinsymbols`: used for lint - `jsast`: used for documentation generation - `jsxmin`: used to crush packages To build these, first build libfbjs: javelin/ $ cd externals/libfbjs javelin/externals/libfbjs/ $ CXX=/usr/bin/g++ make Note that **you must specify CXX explicitly because the default CXX is broken**. Now you should be able to build the individual binaries: javelin/ $ cd support/javelinsymbols javelin/support/javelinsymbols $ CXX=/usr/bin/g++ make javelin/ $ cd support/jsast javelin/support/jsast $ CXX=/usr/bin/g++ make javelin/ $ cd support/jsxmin javelin/support/jsxmin $ CXX=/usr/bin/g++ make = Synchronizing Javelin = To synchronize Javelin **from** Facebook trunk, run the synchronize script: javelin/ $ ./scripts/sync-from-facebook.php ~/www ...where `~/www` is the root you want to pull Javelin files from. The script will copy files out of `html/js/javelin` and build packages, and leave the results in your working copy. From there you can review changes and commit, and then push, diff, or send a pull request. To synchronize Javelin **to** Facebook trunk, run the, uh, reverse-synchronize script: javelin/ $ ./scripts/sync-to-facebook.php ~/www ...where `~/www` is the root you want to push Javelin files to. The script will copy files out of the working copy into your `www` and leave you with a dirty `www`. From there you can review changes. Once Facebook moves to pure git for `www` we can probably just submodule Javelin into it and get rid of all this nonsense, but the mixed SVN/git environment makes that difficult until then. = Building Documentation = Check out `diviner` and `libphutil` from Facebook github, and put them in a directory with `javelin`: somewhere/ $ ls diviner/ javelin/ libphutil/ somewhere/ $ Now run `diviner` on `javelin`: somewhere/ $ cd javelin somewhere/javelin/ $ ../diviner/bin/diviner . [DivinerArticleEngine] Generating documentation for 48 files... [JavelinDivinerEngine] Generating documentation for 74 files... somewhere/javelin/ $ Documentation is now available in `javelin/docs/`. = Editing javelinjs.com = The source for javelinjs.com lives in `javelin/support/webroot/`. The site itself is served off the phabricator.com host. You need access to that host to push it.