paq implements a subset of Browserify's features with full multithreading support. For impatient people who have to deal with large codebases.
require(path.join(__dirname, 'some_module'))(or any other statically resolvable expression, like
__dirname + '/path')
- Exporting a standalone bundle
- Converting transforms like
hbsfyfor use with
What's Not Working
paqcan't actually run transforms yet. The code is written and tested, but I haven't hooked it up to the CLI because I couldn't decide on what the API should look like.
- Replacement of
process.envwith actual environment vars.
USAGE: paq <entry files> [options] Options: --parserTasks=<integer> The maximum number of concurrent AST parsers --requireTasks=<integer> The maximum number of concurrent require evaluations --standalone Returns a module that exports the entry file's export --convertBrowserifyTransform Returns a module that wraps a browserify transform for use with paq --ignoreUnresolvableExpressions Ignores expressions in require statements that cannot be statically evaluated
Under The Hood
- Written in Objective-C++
- Uses a native port of the
- Uses GCD for concurrency
- No external dependencies; escodegen and acorn are embedded in the binary
- Decent tests
- Mac only for now. If you get it running elsewhere, send a PR.
- Implements only the subset of Browserify that I need at work.
- Browserify is a production ready, well maintained, and mature project. paq is none of those things, considering I wrote it in about 24 hours.
To work on paq, you'll need these tools:
- Xcode 6.2
- OS X 10.10.2
- xctool (Get Homebrew then
brew install xctool)
To run the tests (which require the things mentioned above) you can either run
npm test from the command line, or run the
paq-test target in Xcode.