javascript toolchain

25
BUILD JAVASCRIPT! Dienstag, 11. Februar 14

Upload: marc-baechinger

Post on 27-Jan-2015

134 views

Category:

Technology


1 download

DESCRIPTION

Part of the workshop "JavaScript for the enterprise" held at the the /ch/open/ Workshop Tage 2013. Covers the build tool chain for JavaScript based on grunt et al.

TRANSCRIPT

Page 1: JavaScript toolchain

BUILD JAVASCRIPT!

Dienstag, 11. Februar 14

Page 2: JavaScript toolchain

DEVELOPMENT CYCLE

static code analysis

development

productionalizing

concatenate

minimize

testing

unit test

component tests

findbugs, checkstyle

IDEcompile

testing

jUnit

selenium

JavaScriptJava

Dienstag, 11. Februar 14

Page 3: JavaScript toolchain

Dienstag, 11. Februar 14

Page 4: JavaScript toolchain

DEVELOPMENT CYCLE

grunt jshint

IDE/Editor

productionalizing

cssmin

htmlcompress

testing

jasmine

qunit

uglify

concatenate

Dienstag, 11. Februar 14

Page 5: JavaScript toolchain

Dienstag, 11. Februar 14

Page 6: JavaScript toolchain

GRUNTFILE.JSmodule.exports = function(grunt) { var DOC_ROOT = "public_html", DIST_DIR = "build";

grunt.initConfig({ pkg: grunt.file.readJSON('package.json'), copy: { dist: { files: [ { expand: true, src: [DOC_ROOT + '/**'], dest: DIST_DIR } ] } }, [...] }};

Dienstag, 11. Februar 14

Page 7: JavaScript toolchain

GRUNT: BASE{ "name": "jquery-app", "version": "0.0.0", "devDependencies": { "grunt": "~0.4.1", "grunt-contrib-jshint": "~0.6.0", "grunt-contrib-nodeunit": "~0.2.0", "grunt-contrib-concat": "~0.1.3", "grunt-contrib-uglify": "~0.2.0", "grunt-contrib-copy": "~0.4.1", "grunt-contrib-clean": "~0.4.1", "grunt-contrib-cssmin": "~0.6.1", "grunt-htmlcompressor": "~0.1.8", "grunt-contrib-watch": "~0.3.1", "grunt-regarde": "~0.1.1", "grunt-contrib-connect": "0.1.2", "grunt-contrib-livereload": "0.1.1" "grunt-open": "~0.2.2", "grunt-karma": "~0.6.1", "karma": "~0.10.1", "karma-chrome-launcher": "~0.1.0", "karma-jasmine": "~0.1.0", "karma-qunit": "~0.1.0", "karma-html2js-preprocessor": "~0.1" }}

Dienstag, 11. Februar 14

Page 8: JavaScript toolchain

GRUNT: BASE

jshint

copy

concat

uglify cssmin htmlprocessor

karma

checkstyle !ndbugs

copy web !les to distribution directory

concatenate !le (js, css)

minimize

run tests

Dienstag, 11. Februar 14

Page 9: JavaScript toolchain

GRUNT: BASE

jshint

copy

concat

uglify cssmin htmlprocessor

karma

on local !le change

on push to repository

Dienstag, 11. Februar 14

Page 10: JavaScript toolchain

GRUNT: LIVE RELOAD{ "name": "jquery-app", "version": "0.0.0", "devDependencies": { "grunt": "~0.4.1", "grunt-contrib-jshint": "~0.6.0", "grunt-contrib-nodeunit": "~0.2.0", "grunt-contrib-concat": "~0.1.3", "grunt-contrib-uglify": "~0.2.0", "grunt-contrib-copy": "~0.4.1", "grunt-contrib-clean": "~0.4.1", "grunt-contrib-cssmin": "~0.6.1", "grunt-htmlcompressor": "~0.1.8", "grunt-contrib-watch": "~0.3.1", "grunt-regarde": "~0.1.1", "grunt-contrib-connect": "0.1.2", "grunt-contrib-livereload": "0.1.1" "grunt-open": "~0.2.2", "grunt-karma": "~0.6.1", "karma": "~0.10.1", "karma-chrome-launcher": "~0.1.0", "karma-jasmine": "~0.1.0", "karma-qunit": "~0.1.0", "karma-html2js-preprocessor": "~0.1" }}

Dienstag, 11. Februar 14

Page 11: JavaScript toolchain

GRUNT: LIVE RELOAD---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

*.html *.js *.css

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

Editor

Browser

Dienstag, 11. Februar 14

Page 12: JavaScript toolchain

GRUNT: LIVE RELOAD---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

*.html *.js *.css

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

Editor

Browserwatches1

Dienstag, 11. Februar 14

Page 13: JavaScript toolchain

GRUNT: LIVE RELOAD---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

*.html *.js *.css

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

Editor

Browser

save

2

watches1

Dienstag, 11. Februar 14

Page 14: JavaScript toolchain

GRUNT: LIVE RELOAD---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

*.html *.js *.css

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

Editor

Browser

save

2

watches1

request reload

3

Dienstag, 11. Februar 14

Page 15: JavaScript toolchain

GRUNT: LIVE RELOAD---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

*.html *.js *.css

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

Editor

Browser

save

2

watches1

request reload

3

load

4

Dienstag, 11. Februar 14

Page 16: JavaScript toolchain

GRUNT: KARMA{ "name": "jquery-app", "version": "0.0.0", "devDependencies": { "grunt": "~0.4.1", "grunt-contrib-jshint": "~0.6.0", "grunt-contrib-nodeunit": "~0.2.0", "grunt-contrib-concat": "~0.1.3", "grunt-contrib-uglify": "~0.2.0", "grunt-contrib-copy": "~0.4.1", "grunt-contrib-clean": "~0.4.1", "grunt-contrib-cssmin": "~0.6.1", "grunt-htmlcompressor": "~0.1.8", "grunt-contrib-watch": "~0.3.1", "grunt-regarde": "~0.1.1", "grunt-contrib-connect": "0.1.2", "grunt-contrib-livereload": "0.1.1" "grunt-open": "~0.2.2", "grunt-karma": "~0.6.1", "karma": "~0.10.1", "karma-chrome-launcher": "~0.1.0", "karma-jasmine": "~0.1.0", "karma-qunit": "~0.1.0", "karma-html2js-preprocessor": "~0.1" }}

Dienstag, 11. Februar 14

Page 17: JavaScript toolchain

GRUNT: KARMA---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

*.html *.js *.css

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

fooSpec.jsbarSpec.jsbarSpec.js

Chrome Firefox

Android

iOS

fooSpec.jsbarSpec.jsbarSpec.js

fooSpec.jsbarSpec.jsbarSpec.jsfooSpec.jsbarSpec.jsfooSpec.js

Karma

Dienstag, 11. Februar 14

Page 18: JavaScript toolchain

GRUNT: KARMA---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

*.html *.js *.css

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

fooSpec.jsbarSpec.jsbarSpec.js

Chrome Firefox

Android

iOS

fooSpec.jsbarSpec.jsbarSpec.js

fooSpec.jsbarSpec.jsbarSpec.jsfooSpec.jsbarSpec.jsfooSpec.js

Karma

watches 1

Dienstag, 11. Februar 14

Page 19: JavaScript toolchain

GRUNT: KARMA---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

*.html *.js *.css

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

fooSpec.jsbarSpec.jsbarSpec.js

Chrome Firefox

Android

iOS

fooSpec.jsbarSpec.jsbarSpec.js

fooSpec.jsbarSpec.jsbarSpec.jsfooSpec.jsbarSpec.jsfooSpec.js

Karma

watches 1register

2

Dienstag, 11. Februar 14

Page 20: JavaScript toolchain

GRUNT: KARMA---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

*.html *.js *.css

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

fooSpec.jsbarSpec.jsbarSpec.js

Chrome Firefox

Android

iOS

fooSpec.jsbarSpec.jsbarSpec.js

fooSpec.jsbarSpec.jsbarSpec.jsfooSpec.jsbarSpec.jsfooSpec.js

Karma

watches 1register

2

3changed

Dienstag, 11. Februar 14

Page 21: JavaScript toolchain

GRUNT: KARMA---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

*.html *.js *.css

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

fooSpec.jsbarSpec.jsbarSpec.js

Chrome Firefox

Android

iOS

fooSpec.jsbarSpec.jsbarSpec.js

fooSpec.jsbarSpec.jsbarSpec.jsfooSpec.jsbarSpec.jsfooSpec.js

Karma

watches 1register

2

request rerun 4

3changed

Dienstag, 11. Februar 14

Page 22: JavaScript toolchain

GRUNT: KARMA---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

*.html *.js *.css

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

fooSpec.jsbarSpec.jsbarSpec.js

Chrome Firefox

Android

iOS

fooSpec.jsbarSpec.jsbarSpec.js

fooSpec.jsbarSpec.jsbarSpec.jsfooSpec.jsbarSpec.jsfooSpec.js

Karma

watches 1register

2

request rerun 4

execute5

3changed

Dienstag, 11. Februar 14

Page 23: JavaScript toolchain

GRUNT: KARMA---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

*.html *.js *.css

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

---------------------------------------------------------------------------

fooSpec.jsbarSpec.jsbarSpec.js

Chrome Firefox

Android

iOS

fooSpec.jsbarSpec.jsbarSpec.js

fooSpec.jsbarSpec.jsbarSpec.jsfooSpec.jsbarSpec.jsfooSpec.js

Karma

watches 1register

2

request rerun 4

execute5

test report

6

3changed

Dienstag, 11. Februar 14

Page 24: JavaScript toolchain

RUNNING GRUNT WITH MAVEN

• grunt with maven: https://gist.github.com/nadavdav/5308453

Dienstag, 11. Februar 14

Page 25: JavaScript toolchain

EXERCISES

~/ws/04-Toolchain/tools-grunt-app

Dienstag, 11. Februar 14