// Starting the project In Terminal 1:

$ yarn
$ yarn start
$ yarn logs

In Terminal 2:

$ yarn webpack

In Terminal 3:

$ yarn test

// Start Server

node lib/server.js

or

yarn dev

// check logs

$ yarn pm2 logs

// npm packages

  • ejs - for templating
  • pm2 - for zero downtime
  • react
  • react-dom
  • webpack
  • babel-loader@7
  • babel-polyfill
  • jest
  • react-test-renderer
  • axios
  • prop-types
  • enzyme
  • enzyme-adapter-react-16
  • lodash.debounce // can yarn add specific lodash functions
  • lodash.pickby

// yarn scripts

$ yarn start
$ yarn stop
$ yarn restart
$ yarn webpack
$ time yarn webpack

// Checking for packages to upgrade

$ yarn upgrade-interactive

// Tips Get api endpoint data and store it locally: Linux:

$ wget -O lib/testData.json https://gist.githubusercontent.com/samerbuna/5b53056342720b79ab19fc75629a9c8f/raw/f80d3d219d5913e0b36af1fcbb79c8721666fd49/react-blog-mockup-data.json

Mac:

$ curl https://gist.githubusercontent.com/samerbuna/5b53056342720b79ab19fc75629a9c8f/raw/f80d3d219d5913e0b36af1fcbb79c8721666fd49/react-blog-mockup-data.json -o lib/testData.json

Mapping an Array into an Object with Reduce:

  input -- Object.articles:
  {
    articles: [{id: 1, name: 'Guy'}, {id: 2, name: 'Dude'}]
  }

  function
  mapObjectIntoArray( arr ) {
    return arr.reduce((acc, curr) => {
      acc[curr.id] = curr;
      return acc;
    }, {});
  }

  Output:
  {
    1: {id:1,name:'Guy'},
    2: {id:2,name:'Dude'},
  }

// Git tips Abbreviated Git history:

$ git log --decorate --abbrev-commit

Find where a file was used:

$ git grep serverRender

// Node / npm tips: Easy relative paths -- package.json:

{
  "scripts": {
    "start" "NODE_PATH=./lib..."
  }
}