cf-devenv

calvinfroedge devenv, extracted from redux

Usage no npm install needed!

<script type="module">
  import cfDevenv from 'https://cdn.skypack.dev/cf-devenv';
</script>

README

Overview

Awesome dev environment. Gratefully lifted from gaearon/redux-devtools/tree/master/examples/todomvc.

Right now:

  • Hot reloads for JS + React + CSS

Quick start

One line install. Installs dependencies, sets up some template files:

wget https://raw.githubusercontent.com/calvinfroedge/devenv/master/installer.sh && sh installer.sh

Installing

npm install --save-dev cf-devenv

Create a file called start.js. Make sure you have this in your package.json:

  "scripts": {
    "start": "node start.js"
  }

...with this content:

require('cf-devenv')(__dirname);

When you call npm start this will run the dev server.

Your app entry point is index.js and you'll need an index.html to serve the content from, which should include index.js (examples below).

Customizing

If you need to customize your config (for example, to add loaders, aliases, etc.), you can pass a second argument when you require cf-devenv and customize the config with the function you set as the value of the transform key:

require('cf-devenv')(__dirname, {
    transform: function(config){
        config.module.loaders.push({
            test: /\.json$/,
            loader: 'json'
        });
        return config;
    }
});

Any packages you install in your main project that webpack needs should still be picked up.

Boilerplate (gets you started with a page with content, hot reloading)

index.html

<html>
  <head>
    <title>DevEnv</title>
  </head>
  <body>
    <div id="root">
    </div>
  </body>
  <script src="/static/bundle.js"></script>
</html>

index.js

import React from 'react';
import App from './App';
import './style.css';

React.render(
  <App />,
  document.getElementById('root')
);

App.js

import React, { Component } from 'react';

export default class App extends Component {
  render() {
    return (
            <div>
                <h1>Hello, world! (try changing me)</h1>
            </div>
    );
  }
}

style.css

body {
    background-color: black;
    color: #fff;
    font-family: Helvetica;
    text-align:center;
    padding-top: 30%;
}

Customize

port:

devenv(__dirname, {port: 8080});