JS開源:Prepack-非死book 出品的 JS 混淆壓縮工具
Prepack
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 .
Status
- 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 .
How to get the code
- Clone repository and make it your current directory.
- git submodule init
- git submodule update --recursive --remote
- Get npm and node, then do npm install
How to build, lint, type check
- Get the code
- npm run build
You can later run npm run watch in the background to just compile changed files on the fly. - npm run lint
- npm run flow
How to run tests
- Get the code
- Make sure the code is built, either by running npm run build or npm 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.
How to run the interpreter
- Get the code
- Make sure the code is built, either by running npm run build or npm run watch
- npm run repl
This starts an interactive interpreter session.
How to run Prepack
-
Get the code
-
Make sure the code is built, either by running npm run build or npm 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.
How to validate changes
Instead of building, linting, type checking, testing separately, the following does everything together:
npm run validate
How to edit the website
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 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.
How to contribute
For more information about contributing pull requests and issues, see our Contribution Guidelines .
License
Prepack is BSD-licensed. We also provide an additional patent grant.
項目主頁:http://www.baiduhome.net/lib/view/home/1493886817028