@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.