SlideShare a Scribd company logo
BUILD JAVASCRIPT!

Dienstag, 11. Februar 14
DEVELOPMENT CYCLE
ript
aSc

Jav

ava
J
findbugs, checkstyle

static code analysis

productionalizing
concatenate

development

compile

minimize

testing
unit test
component tests

Dienstag, 11. Februar 14

testing
jUnit
selenium

IDE
Dienstag, 11. Februar 14
DEVELOPMENT CYCLE
grunt jshint

productionalizing
concatenate

cssmin

uglify

htmlcompress

testing
jasmine
qunit

Dienstag, 11. Februar 14

IDE/Editor
Dienstag, 11. Februar 14
GRUNTFILE.JS
module.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
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
GRUNT: BASE

copy web files to distribution directory

copy

concatenate file (js, css)

concat

uglify

cssmin

karma

Dienstag, 11. Februar 14

findbugs

checkstyle

jshint

htmlprocessor

minimize

run tests
GRUNT: BASE
jshint

on local file change

copy

concat

on push to repository

uglify

cssmin

karma

Dienstag, 11. Februar 14

htmlprocessor
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
GRUNT: LIVE RELOAD
r

Edito

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

*.html

r
rowse
B

Dienstag, 11. Februar 14

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

*.js

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

*.css
GRUNT: LIVE RELOAD
r

Edito

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

*.html

r
rowse
B

Dienstag, 11. Februar 14

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

*.js

1

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

*.css
watches
GRUNT: LIVE RELOAD
r

Edito

2
save

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

*.html

r
rowse
B

Dienstag, 11. Februar 14

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

*.js

1

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

*.css
watches
GRUNT: LIVE RELOAD
r

Edito

2
save

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

*.html

r
rowse
B

*.js

1
3
request reload

Dienstag, 11. Februar 14

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

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

*.css
watches
GRUNT: LIVE RELOAD
r

Edito

2

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

save

4
r
rowse
B

*.html

*.js

load

1
3
request reload

Dienstag, 11. Februar 14

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

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

*.css
watches
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
GRUNT: KARMA
fooSpec.js
barSpec.js
barSpec.js
fooSpec.js
barSpec.js
barSpec.js

fooSpec.js
barSpec.js
barSpec.js
fooSpec.js
barSpec.js
fooSpec.js

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

*.html

Chrome

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

*.js

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

*.css

Firefox

Android
iOS
Karma
Dienstag, 11. Februar 14
GRUNT: KARMA
fooSpec.js
barSpec.js
barSpec.js
fooSpec.js
barSpec.js
barSpec.js

fooSpec.js
barSpec.js
barSpec.js
fooSpec.js
barSpec.js
fooSpec.js

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

*.html

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

*.js

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

*.css
watches

Chrome

1

Firefox

Android
iOS
Karma
Dienstag, 11. Februar 14
GRUNT: KARMA
fooSpec.js
barSpec.js
barSpec.js
fooSpec.js
barSpec.js
barSpec.js

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

fooSpec.js
barSpec.js
barSpec.js
fooSpec.js
barSpec.js
fooSpec.js

*.html

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

*.js

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

*.css
watches

register

Chrome

1

2

Firefox

Android
iOS
Karma
Dienstag, 11. Februar 14
GRUNT: KARMA
fooSpec.js
barSpec.js
barSpec.js
fooSpec.js
barSpec.js
barSpec.js

fooSpec.js
barSpec.js
barSpec.js
fooSpec.js
barSpec.js
fooSpec.js

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

changed

3

*.html

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

*.js

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

*.css
watches

register

Chrome

1

2

Firefox

Android
iOS
Karma
Dienstag, 11. Februar 14
GRUNT: KARMA
fooSpec.js
barSpec.js
barSpec.js
fooSpec.js
barSpec.js
barSpec.js

fooSpec.js
barSpec.js
barSpec.js
fooSpec.js
barSpec.js
fooSpec.js

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

changed

3

*.html

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

*.js

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

*.css
watches

register

Chrome

1

2

Firefox

Android

request rerun

4

iOS
Karma
Dienstag, 11. Februar 14
GRUNT: KARMA
fooSpec.js
barSpec.js
barSpec.js
fooSpec.js
barSpec.js
barSpec.js

fooSpec.js
barSpec.js
barSpec.js
fooSpec.js
barSpec.js
fooSpec.js

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

changed

3

*.html

5

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

*.js

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

*.css

execute
watches
register

Chrome

1

2

Firefox

Android

request rerun

4

iOS
Karma
Dienstag, 11. Februar 14
GRUNT: KARMA
fooSpec.js
barSpec.js
barSpec.js
fooSpec.js
barSpec.js
barSpec.js

fooSpec.js
barSpec.js
barSpec.js
fooSpec.js
barSpec.js
fooSpec.js

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

changed

3

*.html

5

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

*.js

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

*.css

execute
watches
register

Chrome

2

Firefox

Android
iOS

request rerun

6
test report

Dienstag, 11. Februar 14

1

4
Karma
RUNNING GRUNT WITH
MAVEN

• grunt

Dienstag, 11. Februar 14

with maven: https://gist.github.com/nadavdav/5308453
EXERCISES

tools-grunt-app
/ws/04-Toolchain/
~
Dienstag, 11. Februar 14

More Related Content

KEY
うさぎ組 in G* WorkShop -うさみみの日常-
PDF
Hands on the Gradle
PDF
Jenkinsプラグインの作り方
PDF
Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010
PDF
Stupid Buildout Tricks
PDF
淺談 Groovy 與 AWS 雲端應用開發整合
PDF
Javascript as a target language - GWT KickOff - Part 2/2
PDF
How to setup unit testing in Android Studio
うさぎ組 in G* WorkShop -うさみみの日常-
Hands on the Gradle
Jenkinsプラグインの作り方
Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010
Stupid Buildout Tricks
淺談 Groovy 與 AWS 雲端應用開發整合
Javascript as a target language - GWT KickOff - Part 2/2
How to setup unit testing in Android Studio

What's hot (20)

PDF
NetBeans Support for EcmaScript 6
PDF
How QCLean Works? Introduction to Browser Extensions
PDF
行動應用開發實務 - Gradle 介紹
PDF
Introduction to zc.buildout
PDF
Django & Buildout (en)
PPTX
PDF
Scripting Support in GFv3 Prelude - Full Version
PDF
Acceptance tests
PDF
GWT- Google Web Toolkit
PPTX
Maven
PDF
Devenv command line
PPTX
From Ant to Maven to Gradle a tale of CI tools for JVM
PDF
Gwt Presentation
PDF
Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w...
PDF
html5 & phonegap
KEY
Jenkins導入事例
PDF
Capistrano deploy Magento project in an efficient way
ODP
Unit Test Android Without Going Bald
PDF
Alpes Jug (29th March, 2010) - Apache Maven
PDF
Geneva Jug (30th March, 2010) - Maven
NetBeans Support for EcmaScript 6
How QCLean Works? Introduction to Browser Extensions
行動應用開發實務 - Gradle 介紹
Introduction to zc.buildout
Django & Buildout (en)
Scripting Support in GFv3 Prelude - Full Version
Acceptance tests
GWT- Google Web Toolkit
Maven
Devenv command line
From Ant to Maven to Gradle a tale of CI tools for JVM
Gwt Presentation
Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w...
html5 & phonegap
Jenkins導入事例
Capistrano deploy Magento project in an efficient way
Unit Test Android Without Going Bald
Alpes Jug (29th March, 2010) - Apache Maven
Geneva Jug (30th March, 2010) - Maven
Ad

More from Marc Bächinger (9)

PDF
Introduction to web components
PDF
High-Quality JavaScript
PDF
HTML5 unplugged
PDF
Modern web application network architecture
PDF
JQuery primer
PDF
With your bare hands
PDF
Architecting non-trivial browser applications (Jazoon 2012)
ODP
Jax-rs-js Tutorial
PPTX
Html5 communication
Introduction to web components
High-Quality JavaScript
HTML5 unplugged
Modern web application network architecture
JQuery primer
With your bare hands
Architecting non-trivial browser applications (Jazoon 2012)
Jax-rs-js Tutorial
Html5 communication
Ad

Recently uploaded (20)

PDF
Approach and Philosophy of On baking technology
PPTX
Big Data Technologies - Introduction.pptx
PDF
Encapsulation theory and applications.pdf
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PPTX
sap open course for s4hana steps from ECC to s4
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Encapsulation_ Review paper, used for researhc scholars
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PDF
Empathic Computing: Creating Shared Understanding
PPTX
Spectroscopy.pptx food analysis technology
PDF
Spectral efficient network and resource selection model in 5G networks
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PPTX
Machine Learning_overview_presentation.pptx
Approach and Philosophy of On baking technology
Big Data Technologies - Introduction.pptx
Encapsulation theory and applications.pdf
Dropbox Q2 2025 Financial Results & Investor Presentation
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Reach Out and Touch Someone: Haptics and Empathic Computing
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
sap open course for s4hana steps from ECC to s4
Diabetes mellitus diagnosis method based random forest with bat algorithm
Encapsulation_ Review paper, used for researhc scholars
MYSQL Presentation for SQL database connectivity
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Advanced methodologies resolving dimensionality complications for autism neur...
Assigned Numbers - 2025 - Bluetooth® Document
Empathic Computing: Creating Shared Understanding
Spectroscopy.pptx food analysis technology
Spectral efficient network and resource selection model in 5G networks
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
Machine Learning_overview_presentation.pptx

JavaScript toolchain