๐Ÿš‚ generator-choo-webpack [](https://travis-ci.org/danneu/generator-choo-webpack) [](http://badge.fury.io/js/generator-choo-webpack) [](https://david-dm.org/danneu/generator-choo-webpack)

July 22, 2016 ยท View on GitHub

Create the minimal Choo + Babel + Webpack project boilerplate.

$ yo choo-webpack my-app
> do you want to use Twitter Bootstrap v3? (y/N)
Project generated!
$ cd my-app
$ npm start
Development server listening at <http://localhost:8080>

Features

  • Optional Twitter Bootstrap (Sass) v3: You can opt-in during the generator prompt. Once you opt-in, you can immediately start using Bootstrap classes and it'll just work.
  • Sass support: Just write SASS in your .scss files if you want it.
  • CSS vendor autoprefixing: Automatically adds prefixes like -webkit to your styles when necessary.
  • Babel plugins: es2040 + { ...spread }

Install

Install Yeoman (generator framework) and generator-choo-webpack globally:

$ npm install -g yo generator-choo-webpack

Generate

Generate scaffolding in a target folder:

$ yo choo-webpack <destinationFolder>

Or in the current folder:

$ yo choo-webpack .

Run

Development

Start the local development server and visit http://localhost:8080.

$ npm start

Production

Bundle the app into a dist folder ready to be deployed.

$ npm run build

.
โ””โ”€โ”€ dist
 ย ย  โ”œโ”€โ”€ index.html
 ย ย  โ”œโ”€โ”€ 5df766af1ced8ff1fe0a.css
 ย ย  โ”œโ”€โ”€ 5df766af1ced8ff1fe0a.js
 ย ย  โ””โ”€โ”€ img
  ย ย     โ””โ”€โ”€ ...

To test the production build locally, spin up a static asset server to avoid broken links.

$ npm run build && npm run serve
server listening on http://localhost:8080

Anatomy of the Scaffolding

Here's the generated project folder:

.
โ”œโ”€โ”€ README.md          # for your personal use, notes
โ”œโ”€โ”€ package.json       # dependencies, implements the `npm` commands
โ”œโ”€โ”€ src                # your choo application code goes here
โ”‚ย ย  โ””โ”€โ”€ index.js       # root choo component, begin hacking here
โ”œโ”€โ”€ static             # holds static assets (html, css, js, img, ...)
โ”‚ย ย  โ”œโ”€โ”€ css
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ index.scss # root css file that should @import other css files
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ bootstrap  # if you opted into bootstrap, can customize it here
โ”‚ย ย  โ”‚ย ย   ย ย  โ”œโ”€โ”€ pre-customizations.scss # tweak bootstrap $vars before it loads
โ”‚ย ย  โ”‚ย ย   ย ย  โ””โ”€โ”€ customizations.scss     # override bootstrap after it loads
โ”‚ย ย  โ”œโ”€โ”€ favicon.ico    # a default favicon for you to replace
โ”‚ย ย  โ”œโ”€โ”€ index.html     # root html file
โ”‚ย ย  โ””โ”€โ”€ index.js       # root javascript file, webpack entrypoint
โ”œโ”€โ”€ .bootstraprc       # if you opted into bootstrap, you can configure it here
โ”œโ”€โ”€ webpack.config.js
โ””โ”€โ”€ dist               # the stand-alone folder generated by `npm run build`
    โ”œโ”€โ”€ index.html     # throw the contents on a server and open index.html
    โ”œโ”€โ”€ <hash>.js
    โ”œโ”€โ”€ <hash>.css
    โ””โ”€โ”€ ...

License

MIT ยฉ Dan Neumann