nextlevel

v0.0.1
Skeleton build tool learning using: lerna monorepo, webpack2, nodejs, hot reloader 3, react router 4, preact, jsdom, enzyme, babel6 loader, async extension point bootstrap, flowtypes, eslint autofixing...


nextlevel


Build Status

A month ago, my colleague Mario Scheliga asked me what goals I wanted to achieve before the year ends. I told him I wanted to level up my build tool skills. So in my free time, I started defining what “leveling up my build tool skills” meant.  After doing some experimentation & research with him, I wrote out a list:

monorepo

  • [~] modularized lerna monorepo
  • travis + docker staging deploying (with only one easy command, deploy at will, simultaneous or sequentially)
  • flowtypes (reusable across projects) -> [x] cli test running
  • eslint (reusable across projects)
  • aliasing, helpers, async startups across projects
  • benchmarks

backend

  • express 5
  • nodejs 6.9.1
  • nodejs 7.1
  • [~] (simultaneous) hot reloading dev+test server(s) in one cli (works but haven’t added second backend)
  • es6 + webpack2 + babel
  • point cut routing setup
  • [~] hot route analysis to be used for code chunking least|most used routes
  • sharable di & configs

frontend

  • hot reloading 3
  • point cut routing setup
  • react 15.4.1 & react router 4~
  • es6 + webpack2 + babel
  • jsdom + enzyme + mocha test suite
  • preact for development & production

step 1

  • set up build system (resolve with helpers etc)
  • make test pass
  • run webpack when testing, keep it in memory, that we we don't have to build every time? (more difficult than it seems)
  • how to do backend with es6
  • can do express routes with plugins as well?
  • config & db should be on DI
  • run test suite with mocha + webpack + babel (more difficult than it seems)
  • load plugins in nodejs (more difficult than it seems)
  • eslint plugin setup

step 2

  • set up configs extending each other
  • ensure lerna works properly

step 3

  • knexdb setup migrations - could just use pg straight up no knex #noknex (opted for couchdb b/c ease of use)
  • set up running server with webpack & running built system
  • use babel6
  • uglify production
  • uglify front end production
  • reuse configs
  • fix WARNING in ... Critical dependencies: ... require function is used in a way in which dependencies cannot be statically extracted
  • add backend hot reloading SERVER setup

step 4

  • use webpack 2
  • add flowtypes initially for documentation only
  • test flowtypes
  • add hot reloading 3
  • add tests to front end
  • route logging & detecting hot routes for automatic code chunking the hot routes (pt 1 middleware logging)

step 5

  • add react routing
  • add a component as a route
  • use react router 4
  • base babel query loader generator
  • simplify xtpoint invokation

step 7

  • make xtpoint invokation safe - might need to add another function EITHER
  1. add flag to .point(ns, context)
  2. add method invokeFor
  3. add method apply -> would require changing exec too (could do applyExec)
  4. change the signature, if first argument is object it is the context <- THIS
  • async wrapper IN xtpoint invoking routing wrapper? like in whitelists
  • reusable core for both backends -> split CONFIGS

step 8

  • fix .gitignore RTFM
  • read about lerna/monorepo deployment

step 9

  • benchmarks for backend
  • real benchmarks
  • fix tests not stopping watching on their own

step 10

  • write a blog post

step 11

  • add custom syntax with sweet.js 2
  • add a custom webpack loader for it
  • express 5
  • eslint flowtypes
  • build sweetjs files from .sjs to .js before the rest
  • maybe add an atom plugin for compiling and saving sugarjs files on save like so many do with CoffeeScript

next steps

  • worker
  • i18n
  • docker
  • package manager
  • move reusable deps like underscore to root (issue with lerna)
  • later, add second backend
  • test code coverage
npm i nextlevel

Metadata

  • MIT
  • Whatever
  • Unknown
  • released 11/28/2016

Downloads

Maintainers