Allows for in-lining of templates at compilation, avoiding additional the network request that using "templateUrl" adds
Allows templates to live in external files for code clarity and scaling
Can be easily migrated to a plain HTML file once Typescript "import file as string" functionality is in place
Webstorm html syntax highlighting still works correctly
Project building and bundling with Gulp
Linting runs before compilation, minification, and bundling
Express serves static files from "public" directory
"public/dist" contains our compiled, bundled, and minified "src"
"public/lib" contains our compiled, bundled, and minified dependencies
Installation
npm install -g gulp typings: installs Gulp and Typings globally
npm install: installs node modules locally
(need to run whenever dependencies in package.json change)
typings install: installs type definitions
(need to run whenever typings.json changes)
Build and Run
Automatically
gulp: lints, builds, and restarts web server on changes
(Branch changes will cause server to crash; stop and start before doing so)
Manually
gulp build: lints, compiles, and compresses static files
npm start: starts web server on port 8080
Repeat steps 1 & 2 on any file change
Testing with Jasmine
npm run test: watches and compiles files on changes, opens browser to see test runs
(Initially it may show "No specs found", but browser will automatically reload on changes.)
gulp clean:tests: optionally clear test build directory
Additional Commands
gulp tsconfig-glob: populates 'files' in tsconfig.json from 'filesGlob'
gulp styles: lints, compiles, compresses Sass to CSS only
gulp scripts: lints, compiles, compresses Typescript to JS only
gulp lint: lints Typescript and SCSS files
gulp clean: clears all built files
gulp serve: starts web server with a watcher that will recompile any changed files
(will not trigger recompilation on any files changed before task starts)