Javelin at FacebookJavelin Technical Documentation (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.
- Defined
- src/docs/facebook.diviner:1