Skip to content
Haul is a command line tool for developing React Native apps, powered by Webpack
TypeScript HTML JavaScript Objective-C Starlark Java Other
Branch: master
Clone or download

Latest commit

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci chore: use single tsc build and move types to monorepo root (#668) Nov 4, 2019
.github Setups missing meta (#39) Mar 29, 2017
docs chore: remove haul inspector (#721) Apr 20, 2020
e2e fix: bundle options query params for unspecified/default params (#740) May 12, 2020
fixtures fix: React Native Windows E2E test app (#726) May 14, 2020
jest chore: add missing cases to bundle options test suite (#737) May 6, 2020
packages chore: publish May 12, 2020
scripts chore: use single tsc build and move types to monorepo root (#668) Nov 4, 2019
website docs: revamp for new config (#591) Jul 16, 2019
.eslintignore chore: setup code coverage report & check from unit and e2e tests (#656) Oct 11, 2019
.eslintrc feat: move transpilation and minification to workers (#689) Jan 29, 2020
.gitattributes Switch to monorepo + scaffolding for new works (#538) May 6, 2019
.gitignore chore: use single tsc build and move types to monorepo root (#668) Nov 4, 2019
.nycrc.json feat(breaking): update dependencies (#688) Jan 21, 2020
.prettierrc feat(breaking): update dependencies (#688) Jan 21, 2020
CODE_OF_CONDUCT.md Setups missing meta (#39) Mar 29, 2017
LICENSE Initial commit Mar 20, 2017
README.md chore: remove haul inspector (#721) Apr 20, 2020
azure-pipelines.yml fix: React Native Windows E2E test app (#726) May 14, 2020
babel.config.js feat(breaking): update dependencies (#688) Jan 21, 2020
jest.config.js feat: install previous version of preset if the target one is not ava… Oct 16, 2019
lerna.json chore: update lerna config Oct 24, 2019
package.json chore: move ram bundle plugin to core (#723) Apr 27, 2020
tsconfig.json chore: use single tsc build and move types to monorepo root (#668) Nov 4, 2019
yarn.lock chore: move basic bundle plugin to core (#722) Apr 21, 2020

README.md

Haul

A command line tool for developing React Native apps


Build Status MIT License

PRs Welcome Code of Conduct

Chat tweet

Haul is a drop-in replacement for react-native CLI built on open tools like Webpack. It can act as a development server or bundle your React Native app for production.

@haul-bundler/cli and other packages under @haul-bundler scope are a overhaul of haul package and support only React Native 0.59.0 and above. If you need to support older versions, please check legacy branch.

@haul-bundler/cli and other packages requires Node 10 to be installed. If you're running older version, please upgrade to Node 10 LTS or newer.

Features

  • Replaces React Native packager to bundle your app
  • Access to full webpack ecosystem, using additional loaders and plugins is simple
  • Doesn't need watchman, symlinks work nicely
  • Helpful and easy to understand error messages

Packages

Name Version Description Required
@haul-bundler/cli cli version CLI and commands implementation. Yes
@haul-bundler/core core version Core logic and functionality. Yes (installed with cli)
@haul-bundler/core-legacy core-legacy version Legacy logic from haul package Yes (installed with cli)
@haul-bundler/babel-preset-react-native babel-preset-react-native version Babel preset tweaked for RN 0.59+, which can decrease the bundle size by using only the necessary transforms. Yes (installed by init command)
@haul-bundler/basic-bundle-webpack-plugin basic-bundle-webpack-plugin version Webpack plugin with tweaks for plain JS bundle. Yes (installed with cli)
@haul-bundler/ram-bundle-webpack-plugin ram-bundle-webpack-plugin version Webpack plugin for RAM bundle support. Yes (installed with cli)
@haul-bundler/preset-0.59 preset-0.59 version Preset with configuration tweaked for RN 0.59. Yes (installed by init command when using RN 0.59)
@haul-bundler/preset-0.60 preset-0.60 version Preset with configuration tweaked for RN 0.60. Yes (installed by init command when using RN 0.60)
@haul-bundler/explore explore version Explore and analyse generated bundle No (optional)

Getting started

Start by adding Haul as a dependency to your React Native project (use react-native init MyProject to create one if you don't have a project):

yarn add --dev @haul-bundler/cli

# Traditionalist? No problem:
npm install --save-dev @haul-bundler/cli

To configure your project to use haul, run the following:

yarn haul init
# npm >= 5.2.0 :
npx haul init
# npm < 5.2.0 :
npm install -g npx
npx haul init

This will automatically add the configuration needed to make Haul work with your app, e.g. add haul.config.js to your project, which you can customize to add more functionality.

Next, you're ready to start the development server:

yarn haul start
# Or:
npx haul start

Finally, reload your app to update the bundle or run your app just like you normally would:

react-native run-ios

Documentation

Check out the docs to learn more about available commands and tips on customizing the webpack configuration.

  1. CLI Commands
  2. Configuration
  3. Recipes
  4. Migration guide

Limitations

Haul uses a completely different architecture from React Native packager, which means there are some things which don't work quite the same.

  • Delta Bundles (RN 0.52+) have minimal support
  • Existing react-native commands
  • No support for Hot Module Replacement

The following features are unlikely to be supported in the future:

  • Haste module system: use something like babel-plugin-module-resolver instead
  • Transpile files under node_modules: transpile your modules before publishing, or configure webpack not to ignore them

Made with ❤️ at Callstack

Haul is an open source project and will always remain free to use. If you think it's cool, please star it 🌟. Callstack is a group of React and React Native geeks, contact us at hello@callstack.com if you need any help with these or just want to say hi!

You can’t perform that action at this time.