Prepack is a partial evaluator for JavaScript. Prepack rewrites a JavaScript bundle, resulting in JavaScript code that executes more efficiently. For initialization-heavy code, Prepack works best in an environment where JavaScript parsing is effectively cached.
See the official prepack.io website for an introduction and an interactive REPL playground.
- test262 status on master branch
- code coverage report for serialization tests
- To see the status for a pull request, look for the message All checks have passed or All checks have failed. Click on Show all checks, Details, Artifacts, and then test262-status.txt or coverage-report-sourcemapped/index.html.
- Clone repository and make it your current directory.
git submodule init
git submodule update --recursive --remote
- Get npm and node, then do
npm install
- Get the code
npm run build
You can later runnpm run watch
in the background to just compile changed files on the fly.npm run lint
npm run flow
- Get the code
- Make sure the code is built, either by running
npm run build
ornpm run watch
npm test
You can run individual test suites as follows.
npm run test-serializer
This tests the interpreter and serializer. All tests should pass.npm run test-test262
This tests conformance against the test262 suite. Not all will pass, increasing conformance is work in progress.
- Get the code
- Make sure the code is built, either by running
npm run build
ornpm run watch
npm run repl
This starts an interactive interpreter session.
-
Get the code
-
Make sure the code is built, either by running
npm run build
ornpm run watch
. -
Have a JavaScript file handy that you want to prepack, for example:
echo "function hello() { return 'hello'; } function world() { return 'world'; } s = hello() + ' ' + world();" >/tmp/sample.js
-
npm run prepack /tmp/sample.js
Try--help
for more options.
Instead of building, linting, type checking, testing separately, the following does everything together:
npm run validate
The content for prepack.io resides in the gh-pages branch of this repository. To make changes, submit a pull request, just like for any code changes. In order to run the website locally at localhost:8000, run python -m SimpleHTTPServer
(Python 2) or python -m http.server
(Python 3) from the cloned gh-pages
branch.
At this time, a particular bundled version of Prepack is checked in to the gh-pages
branch at js/prepack.min.js
. To update the bundle, run npm run build-bundle
from the master
branch, and copy the resulting prepack.min.js
file into the gh-pages
branch into the js
directory, and submit a pull request for that change.
For more information about contributing pull requests and issues, see our Contribution Guidelines.
Prepack is BSD-licensed. We also provide an additional patent grant.