paq
v0.7.0
Published
Multithreaded tool for running node.js style code in the browser inspired by substack's Browserify.
Downloads
17
Readme
paq
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:
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 withpaq
What's Not Working
paq
can't actually run transforms yet. Almost there!- 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
- Written in Objective-C++
- Uses a native port of the
require.resolve
algorithm - Uses GCD for concurrency
- No external dependencies; escodegen and acorn are embedded in the binary
- Decent tests
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.