Multithreaded browserify
C++ Objective-C++ JavaScript Other
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
bin
fixtures
paq-tests
paq.xcodeproj
paq
scripts
.gitignore
.slather.yml
.travis.yml
LICENSE
Makefile
Readme.md
package.json

Readme.md

paq

Build Status Coverage Status

paq implements a subset of Browserify's features with full multithreading support. For impatient people who have to deal with large codebases.

Get updates by following me on Twitter: Follow @_benng

What's Working

  • require('./relative/path')
  • require('some-module')
  • require('node-core-module')
  • require(path.join(__dirname, 'some_module')) (or any other statically resolvable expression, like __dirname + '/path')
  • Exporting a standalone bundle
  • Converting transforms like hbsfy for use with paq

What's Not Working

  • paq can'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.env with actual environment vars.

Usage

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

Caveats

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

Contributing

To work on paq, you'll need these tools:

  • Xcode 6.2
  • OS X 10.10.2
  • xctool (Get Homebrew then brew install xctool)
  • node
  • npm

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.