hipley v1.1.5
hipley
A very-specific babel/less/webpack build tool.
About
Hipley provides a CLI for developing and building react-powered front-ends via webpack, babel, hot-reloading, and less stylesheets. This was built for a very specific workflow, but I'm open to making the tool more extensible to different use-cases.
Installation
Hipley is a CLI so just install it globally from npm.
$ npm install -g hipleyTLDR; Quick Usage
$ hipley --init
$ hipley --dev
(open http://localhost:3000 in browser)
(edit a file, such as a component)
(watch it hot reload)Application Setup
Hipley comes with a utility to quickly set up a new simple React application. Navigate to a new directory where you'd like your app to be set up and run:
$ hipley --initYour directory should now look something like this:
myapp/
 ├── .hipleyrc
 ├── package.json
 ├── build/
 ├─┬ public/
 | ├── favicon.ico
 │ └── index.html
 └─┬ src/
   ├─┬ js/
   │ ├── app.js
   │ ├── colors.js
   │ └─┬ components/
   │   ├── App.js
   │   └── Counter.js
   └─┬ less/
     └── app.lessYour package.json will include any app-specific dependencies, such as react, redux, etc.
You can include a .hipleyrc file from which settings will be read (and merged into any command line arguments. For example:
{
  "cmd": "node server.js -p 8080",
  "proxy": 8080,
  "vendors": [
    "react",
    "redux",
    "react-redux"
  ]
}The src/ directory is where hipley will create the build from. It'll be looking for a few specific things:
- A js/subdirectory with anapp.jsentry point for the webpack build.
- A less/subdirectory with anapp.lessentry point for the less build.
Run the Development Server
With one command you can run a development server that watches your javascript and styles for changes and applies hot-reloading to any changes.
$ hipley --devBuild for Production
Hipley includes a production build mode that properly sets NODE_ENV, minifies
scripts, and builds source maps.
$ hipley --buildYour built files will be found in ./build/. You can run a simple 'production'
server that loads these files with:
$ hipley --serveThis can be useful for deploying to services like Heroku. This server is a simple
express server that hosts the public/ and build/ directories and rewrites
ALL urls to public/index.html.
Using with Node.js
You may want to require() "front-end" modules in your node application. To
do this you'll need to use the babel-register hook and point it at hipley's
configuration.
First, install and save babel-register into your node application.
$ npm install --save babel-registerNext, somewhere early in your node application's bootstrapping phase, require the register hook and point it at configuration generated by the hipley CLI.
require('babel-register')(
  JSON.parse(require('child_process').execSync('hipley --babel-register'))
)Note: You'll need to install hipley globally on your production server in order for your app to run there.
CLI
$ hipley --help
  Usage: hipley [options]
  Options:
    -h, --help           output usage information
    -V, --version        output the version number
    -d, --dev            Run a development server
    -b, --build          Build the production bundles
    -s, --serve          Run a production server
    -p, --port [port]    Port to run the dev server on (3000)
    -r, --proxy [port]   Proxy requests to another port
    -c, --cmd [command]  Spawn a command, for example a node server
    --src [dir]          The directory containing the source files (src/)
    --dest [dir]         The directory to use for the build (build/)
    --init               Initialize a new React application
    --babel-register     Output options for babel-register as JSON
  Development Server:
      $ hipley --dev
  Production Build:
      $ hipley --build
  Production Server:
      $ hipley --serve
  Configuration can be specified in a .hipleyrc file. Defaults:
    {
      "port": 3000,
      "proxy": null,
      "cmd": null,
      "src": "src",
      "dest": "build",
      "static": "public",
      "devServer": 3002,
      "browserSync": {
        "ui": 3001
      },
      "vendors": [],
      "copy": [],
      "optional": {
        "react-transform-catch-errors": true
      }
    }Note: Most options pertain to the development or serve modes.
CLI Options
- -p, --port: The port that the primary develpment server (BrowserSync) will run on. This is what you point your browser at.
- -r, --proxy: (Optional) A port that the development server should ultimately proxy to. For example, an express server hosting your server-side code.
- -c, --cmd: (Optional) A shell command to run before starting the development build. For example, start up your express server- node server.js.
Vendors
Hipley build two bundles: app.js and vendors.js. Vendors will only contain libraries you specify in your .hipleyrc config. Simply list them like the example above in "Application Setup".
Hot Reloading
Hot reload is powered by the methodology shown in https://github.com/gaearon/react-transform-boilerplate. It uses babel react-transforms and middleware inside the dev server.
Examples and hipley --init
The ./examples directory contains examples of various react applications. The --init command
is directly tied to the examples and easily allows you to spin up a copy of one of them. Simply
execute hipley --init [name of example] and you'll get an installed clone of the example,
ready to be modified.
# Spin up the basic example:
$ hipley --init
# or...
$ hipley --init basic
# Spin up a redux app:
$ hipley --init reduxDeveloped by TerraEclipse
Terra Eclipse, Inc. is a nationally recognized political technology and strategy firm located in Santa Cruz, CA and Washington, D.C.
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago