npx express-generator server --view=ejs --css=less
http://expressjs.com/en/starter/generator.html
npm run tsc -- --init
npm i --save-dev @types/express
npm i --save-dev @types/http-errors
npm i --save-dev @types/less-middleware
npm i --save-dev @types/cookie-parser
find server client -name *.js | xargs rm
find server client -name *.js.map | xargs rm
find server client -name *.css | xargs rm
https://github.com/BrianDGLS/express-ts
git config url."https://".insteadOf git://
bower init
bower install jquery bootstrap --save
https://bower.io/
bower install angular --save
https://code.angularjs.org/1.8.2/docs/tutorial
https://github.com/angular/angular-phonecat
mkdir client & touch app.ts & reference bundle.js in server/views/angular.ejs
tsconfig -> https://www.typescriptlang.org/docs/handbook/tsconfig-json.html
npm i -g grunt-cli
grunt --help && grunt clean && grunt
https://www.npmjs.com/package/grunt-contrib-clean
https://gruntjs.com/getting-started
npm install -D load-grunt-config
npm install -D grunt-contrib-less grunt-contrib-watch
https://www.npmjs.com/package/grunt-concurrent
https://www.npmjs.com/package/grunt-eslint
https://www.npmjs.com/package/grunt-tslint
https://www.npmjs.com/package/grunt-ts
https://www.npmjs.com/package/grunt-contrib-copy
https://www.npmjs.com/package/grunt-contrib-uglify
https://www.npmjs.com/package/grunt-contrib-cssmin
https://www.npmjs.com/package/grunt-contrib-less
https://www.npmjs.com/package/grunt-contrib-watch
https://www.npmjs.com/package/load-grunt-config
https://gruntjs.com/plugins
npm i -g ts-node && ts-node start-script
npm install && npm run clean && npm run compile && npm start