Node Scaffolding now supports pre and post build scripts!

  • person iconNell Shamrell-Harrington
  • calendar iconThursday, October 26 2017

We have just released a new version of the Node scaffolding that supports scripts defined in package.json!

It is common for Node applications to include scripts in their package.json files like so:

package.json
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test --env=jsdom",
"eject": "react-scripts eject"
}

The Habitat Node Scaffolding now supports these scripts out of the box.

Let's take it for a test run:

One of my favorite sample React apps is the Pokedex by Ali Gasymov.

Let's Habitize this application and deploy it in a Docker container!

First, clone the Github repo:

$ git clone git@github.com:alik0211/pokedex.git
$ cd pokedex

Now install the dependencies:

pokedex
$ npm install

Check out the package.json - notice the scripts section? We will be able to run these to start, build, etc. the application through the Node Scaffolding.

package.json
{
"name": "pokedex",
"version": "1.1.5",
"private": true,
"dependencies": {
"react": "^16.0.0",
"react-dom": "^16.0.0",
"react-redux": "^5.0.6",
"redux": "^3.7.2",
"redux-thunk": "^2.2.0"
},
"devDependencies": {
"react-scripts": "1.0.10",
"redux-logger": "^3.0.6"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test --env=jsdom",
"eject": "react-scripts eject"
}
}

Let's Habitize this app:

$ hab plan init -s node
$ hab studio enter
[1][default:/src:0]# build

Currently, this only builds your application as a HART package - scripts within the package.json file will run when installing this package to wherever you want to run it.

Once the build completes, export your new HART package as a Docker image:

[1][default:/src:0]# $ hab pkg export docker ./results/your_new_hart_file.hart
[1][default:/src:0]# $ exit

Now, start up a new container with your container image

$ docker run -it -p 8000:8000 your_origin/pokedex

Then navigate to http://localhost:8000 in your browser and you should see a running pokedex!

Posted In

About the author


Nell Shamrell-Harrington

Nell Shamrell-Harrington is a Software Development Engineer at Chef and core maintainer of the Habitat and Supermarket open source projects. She also sits on the advisory board for the University of Washington Certificates in Ruby Programming and DevOps. She specializes in Chef, Ruby, Rails, Rust Regular Expressions, and Test Driven Development and has traveled the world speaking on these topics. Prior to entering the world of software development, she studied and worked in the field of theatre.

Recommended Posts

All articles