paq

Multithreaded tool for running node.js style code in the browser inspired by substack's Browserify.

Usage no npm install needed!

<script type="module">
  import paq from 'https://cdn.skypack.dev/paq';
</script>

README

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

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.