SlideShare une entreprise Scribd logo
1  sur  40
Télécharger pour lire hors ligne
AUTOMATISIERUNG MIT GRUNTAUTOMATISIERUNG MIT GRUNT
Christian Herberger
ÜBER MICHÜBER MICH
Integrator
PHP-Entwickler
FE-Entwickler
PUNKT.DEPUNKT.DE
TYPO3-Komplettpakete in Karlsruhe
~30 Mitarbeiter
DER ROTE FADENDER ROTE FADEN
Was ist Grunt und was kann es?
Workflow für eine Applikation innerhalb einer Website
Tasks installieren und konfigurieren
Task-Kombinationen
Eigene Tasks
Ausführung von Grunt
Ausblick
GRUNTGRUNT
Das nützliche Warzenschwein
WAS IST GRUNTWAS IST GRUNT
The JavaScript Task Runner
Automatisierung von wiederkehrenden Aufgaben
Fertige Plugins für viele Werkzeuge
Task-Abhängigkeiten/Reihenfolgen
Überwachung des Codes auf Änderungen
Eigene Tasks einfach möglich
BENUTZUNGBENUTZUNG
... wird im Rahmen des Beispiels gezeigt
EINFACHER WORKFLOWEINFACHER WORKFLOW
2 Extensions - Sitepackage mit SCSS und Standard-
JavaScript & Extension mit Angular-App
Ziel: Eine CSS-Datei, eine JS-Datei für die App
JavaScript im Footer, Inlinescript muss funktionieren
INSTALLATION DER RELEVANTEN TOOLSINSTALLATION DER RELEVANTEN TOOLS
NPMNPM
Mac: Per Brew, ports, ...
Linux: apt, yum, ...
BSD: pkg, ...
Win: Node und NPM von der Website laden und
installieren (läuft!)
Nur einmal auf dem Rechner notwendig
COMPASSCOMPASS (DER AUFWÄNDIGSTE TEIL)(DER AUFWÄNDIGSTE TEIL)
Ruby installieren
Compass mit gem installieren
Andere Compiler sind möglich, nachher aufpassen
Nur einmal auf dem Rechner notwendig
NPM-PAKETE GLOBALNPM-PAKETE GLOBAL
(sudo) npm install -g grunt-cli
Nur einmal auf dem Rechner notwendig
NPM-PAKETE IM PROJEKTNPM-PAKETE IM PROJEKT
cd /projektverzeichnis/htdocs/typo3conf/ext/pt_site_base && npm init
npm install [paketname]
Einmal pro Projekt notwendig
LISTE DER PAKETE IM PROJEKTLISTE DER PAKETE IM PROJEKT
grunt: Lokale Grunt-Instanz zum Ausführen der Tasks
grunt-contrib-clean: Verzeichnisse leeren
grunt-contrib-compass: Compass aufrufen
grunt-contrib-concat: Dateien zusammenführen, ohne
den Inhalt zu verändern
grunt-contrib-copy: Dateien von A nach B kopieren
grunt-contrib-uglify: JavaScript minifyen
grunt-contrib-watch: Dateien überwachen und Tasks
starten
grunt-ng-annotate: AngularJS-Minify-Hilfe
LISTE DER PAKETE IM PROJEKTLISTE DER PAKETE IM PROJEKT
Wandert alles nach package.json und node_modules/
Nur die package.json muss ins VCS
Andere Entwickler benötigen nur
npm install
WEITERE VORBEREITUNGENWEITERE VORBEREITUNGEN
ORDNER-/DATEISTRUKTURORDNER-/DATEISTRUKTUR
Alle Entwicklungsdateien in Resources/Private
Resources/Public nach .gitignore
Alles SASS (weil Projekt-abhängig und nicht für die
Anwendung) in der base-Extension
JavaScript trennen nach Base, App und JSQueue (für
späteres Ausführen von beliebigem JS)
COMPASS: CONFIG.RBCOMPASS: CONFIG.RB
Eine valide config.rb kann sowohl für Compass selbst als
auch für Grunt verwendet werden
JSQUEUEJSQUEUE
Kleines JavaScript im Header, welches Inline-JavaScript
zur verspäteten Ausführung queuen kann
Kleines JavaScript im Footer, welches die gequeueten
Scripte ausführt und an jQuery weitergibt¡
Anwendung: JavaScript, welches auf Libraries zugreift
(jQuery!!!)
GRUNTFILE.JSGRUNTFILE.JS
Der Schlüssel des Erfolgs
TASKS LADENTASKS LADEN
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-contrib-compass');
grunt.loadNpmTasks('grunt-contrib-copy');
grunt.loadNpmTasks('grunt-contrib-clean');
grunt.loadNpmTasks('grunt-ng-annotate');
ORDNER-/DATEILISTEORDNER-/DATEILISTE
Liste nur einmal definieren und immer wieder verwenden
Alle Pfade relativ zum Gruntfile, werden so geschrieben
dass von ext/ aus geprüft wird
Reihenfolge wird beachtet
Duplikate werden nur einmal (das erste mal) verwendet
CLEANCLEAN
clean: {
options: {
force: true
},
workingDirectory:[
'<%= filePaths.workingDirectory %>'
],
baseJavaScript: [
'<%= filePaths.baseJavaScript.dest %>'
],
siteApp: [
'<%= filePaths.siteApp.dest %>'
]
},
NGANNOTATENGANNOTATE
ngAnnotate: {
options: {
singleQuotes: true
},
siteApp: {
files: {
'<%= filePaths.workingDirectory %>/annotated.js': [
}
}
},
UGLIFYUGLIFY
uglify: {
baseJavaScript: {
files: {
'<%= filePaths.workingDirectory %>/uglify.js': ['<%= filePat
}
},
angularApp: {
files: {
'<%= filePaths.workingDirectory %>/uglify.js': ['<%= filePat
}
}
},
CONCATCONCAT
concat: {
baseJavaScript: {
files: {
'<%= filePaths.workingDirectory %>/base.min.js': [
}
},
angularApp: {
files: {
'<%= filePaths.workingDirectory %>/app.min.js': [
}
},
angularAppDev: {
files: {
'<%= filePaths.workingDirectory %>/app.min.js': [
}
}
},
COPYCOPY
copy: {
baseJavaScript: {
files: [
{
expand: true,
cwd: '<%= filePaths.workingDirectory %>',
src: ['base.min.js'],
dest: '<%= filePaths.baseJavaScript.dest %>'
},
{
expand: true,
cwd: '../../../pt_site_base/Resources/Private/JavaSc
src: ['OnReadyInit.js', 'OnReadyRun.js'],
dest: '<%= filePaths.baseJavaScript.dest %>'
}
]
},
siteApp: {
files: [
{
expand: true,
cwd: '<%= filePaths.workingDirectory %>',
src: ['app.min.js'],
dest: '<%= filePaths.siteApp.dest %>'
}
]
},
COMPASSCOMPASS
compass: {
stylesheets: {
options: {
config: 'config.rb'
}
}
},
WATCHWATCH
watch: {
baseJavaScript: {
files: ['<%= filePaths.baseJavaScript.src %>'],
tasks: 'baseJavaScript'
},
styleheets: {
files: ['<%= filePaths.stylesheets.src %>'],
tasks: 'compass'
},
siteApp: {
files: ['<%= filePaths.siteApp.src %>'],
tasks: 'siteAppDev'
}
}
EIGENE TASKS IN GRUNTEIGENE TASKS IN GRUNT
Tun und lassen, was man will (und braucht)
KOMBINIERTE TASKS MIT ABHÄNGIGKEITKOMBINIERTE TASKS MIT ABHÄNGIGKEIT
grunt.registerTask('baseJavaScript', ['clean:baseJavaScript','clean:workingDirectory
grunt.registerTask('siteApp', 'build production ready app', function(parameter){
grunt.task.run('clean:siteApp');
grunt.task.run('clean:workingDirectory');
grunt.task.run('ngAnnotate:siteApp:' + parameter);
grunt.task.run('uglify:angularApp');
grunt.task.run('concat:angularApp');
grunt.task.run('copy:siteApp');
grunt.task.run('clean:workingDirectory');
});
KOMBINIERTE TASKS MIT ABHÄNGIGKEITKOMBINIERTE TASKS MIT ABHÄNGIGKEIT
(REKURSIV!)(REKURSIV!)
// Default task.
grunt.registerTask('default', 'build everything production ready', function
grunt.task.run('baseJavaScript');
grunt.task.run('siteApp');
});
grunt.registerTask('dev', 'build everything for development', function(){
grunt.task.run('baseJavaScript');
grunt.task.run('siteAppDev');
});
grunt.registerTask('w', ['dev', 'watch']);
EIGENE TASKS MIT PARAMETERNEIGENE TASKS MIT PARAMETERN
grunt.registerTask('helloWorld','',function(name){
grunt.log.write('running hello world with argument: ' + name + 'n'
grunt.file.write('./helloWorld.json', 'alert("Hello ' + name + '");'
});
AUSFÜHRUNG VON GRUNTAUSFÜHRUNG VON GRUNT
Das wichtigste überhaupt!
AUSFÜHREN VON TASKSAUSFÜHREN VON TASKS
grunt -> Default-Task
grunt dev -> Dev-Task
grunt siteApp -> SiteApp-Task
grunt helloWorld:name -> HelloWorld mit Name
Geht auch alles mit -v (verbose)
AUSFÜHREN VON TASKSAUSFÜHREN VON TASKS
Ultimativ: Grunt-Konsole in phpStorm (vielleicht mit grunt-
notify)
AUSBLICKAUSBLICK
Fragen? Antworten! Diskussion?
Vielen Dank für die Aufmerksamkeit!
https://github.com/kabarakh/t3cs15/
http://de.slideshare.net/Kabarakh1/automatisierung-
mit-grunt
https://speakerdeck.com/kabarakh/automatisierung-
mit-grunt

Contenu connexe

Tendances

Building Enterprise Applications with AngularJS (GDG DevFest Karlsruhe 2014)
Building Enterprise Applications with AngularJS (GDG DevFest Karlsruhe 2014)Building Enterprise Applications with AngularJS (GDG DevFest Karlsruhe 2014)
Building Enterprise Applications with AngularJS (GDG DevFest Karlsruhe 2014)Christian Janz
 
Automatischer Build mit Maven
Automatischer Build mit MavenAutomatischer Build mit Maven
Automatischer Build mit MavenStefan Scheidt
 
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET CoreHands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET CoreGregor Biswanger
 
Eine Stunde was mit Api First!
Eine Stunde was mit Api First!Eine Stunde was mit Api First!
Eine Stunde was mit Api First!JanWeinschenker
 
Einführung React Native
Einführung React NativeEinführung React Native
Einführung React NativeMarkus Günther
 
.NET Summit 2016 München: Angular 2 mit TypeScript
.NET Summit 2016 München: Angular 2 mit TypeScript.NET Summit 2016 München: Angular 2 mit TypeScript
.NET Summit 2016 München: Angular 2 mit TypeScriptManfred Steyer
 
.NET Summit 2016 München: EcmaScript 2015+ with TypeScript
.NET Summit 2016 München: EcmaScript 2015+ with TypeScript.NET Summit 2016 München: EcmaScript 2015+ with TypeScript
.NET Summit 2016 München: EcmaScript 2015+ with TypeScriptManfred Steyer
 
Einführung in ASP.NET Core Middlewares
Einführung in ASP.NET Core MiddlewaresEinführung in ASP.NET Core Middlewares
Einführung in ASP.NET Core MiddlewaresMatthias Jauernig
 
LeanIX Swagger REST API @ Open Source Konferenz FrosCon, Sankt Augustin
LeanIX Swagger REST API @ Open Source Konferenz FrosCon, Sankt AugustinLeanIX Swagger REST API @ Open Source Konferenz FrosCon, Sankt Augustin
LeanIX Swagger REST API @ Open Source Konferenz FrosCon, Sankt AugustinLeanIX GmbH
 
Informatik Seminar Groovy Und Grails
Informatik Seminar Groovy Und GrailsInformatik Seminar Groovy Und Grails
Informatik Seminar Groovy Und Grailsschmichri
 

Tendances (14)

Pimcore
PimcorePimcore
Pimcore
 
Building Enterprise Applications with AngularJS (GDG DevFest Karlsruhe 2014)
Building Enterprise Applications with AngularJS (GDG DevFest Karlsruhe 2014)Building Enterprise Applications with AngularJS (GDG DevFest Karlsruhe 2014)
Building Enterprise Applications with AngularJS (GDG DevFest Karlsruhe 2014)
 
Automatischer Build mit Maven
Automatischer Build mit MavenAutomatischer Build mit Maven
Automatischer Build mit Maven
 
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET CoreHands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
 
Eine Stunde was mit Api First!
Eine Stunde was mit Api First!Eine Stunde was mit Api First!
Eine Stunde was mit Api First!
 
Einführung React Native
Einführung React NativeEinführung React Native
Einführung React Native
 
Werkzeugkasten
WerkzeugkastenWerkzeugkasten
Werkzeugkasten
 
.NET Summit 2016 München: Angular 2 mit TypeScript
.NET Summit 2016 München: Angular 2 mit TypeScript.NET Summit 2016 München: Angular 2 mit TypeScript
.NET Summit 2016 München: Angular 2 mit TypeScript
 
.NET Summit 2016 München: EcmaScript 2015+ with TypeScript
.NET Summit 2016 München: EcmaScript 2015+ with TypeScript.NET Summit 2016 München: EcmaScript 2015+ with TypeScript
.NET Summit 2016 München: EcmaScript 2015+ with TypeScript
 
Einführung in ASP.NET Core Middlewares
Einführung in ASP.NET Core MiddlewaresEinführung in ASP.NET Core Middlewares
Einführung in ASP.NET Core Middlewares
 
LeanIX Swagger REST API @ Open Source Konferenz FrosCon, Sankt Augustin
LeanIX Swagger REST API @ Open Source Konferenz FrosCon, Sankt AugustinLeanIX Swagger REST API @ Open Source Konferenz FrosCon, Sankt Augustin
LeanIX Swagger REST API @ Open Source Konferenz FrosCon, Sankt Augustin
 
Informatik Seminar Groovy Und Grails
Informatik Seminar Groovy Und GrailsInformatik Seminar Groovy Und Grails
Informatik Seminar Groovy Und Grails
 
3. Night of the pack
3. Night of the pack3. Night of the pack
3. Night of the pack
 
Testing tools
Testing toolsTesting tools
Testing tools
 

En vedette

ZEMP Elena - ICT and effective disaster management in a changing media world:...
ZEMP Elena - ICT and effective disaster management in a changing media world:...ZEMP Elena - ICT and effective disaster management in a changing media world:...
ZEMP Elena - ICT and effective disaster management in a changing media world:...Global Risk Forum GRFDavos
 
Nbs De Brug Van De Toekomst
Nbs   De Brug Van De ToekomstNbs   De Brug Van De Toekomst
Nbs De Brug Van De Toekomstguest7ebe6b
 
Presentació INS Terra Alta
Presentació INS Terra AltaPresentació INS Terra Alta
Presentació INS Terra Altamaricarme13
 
NavTrack Quick User Guide
NavTrack Quick User GuideNavTrack Quick User Guide
NavTrack Quick User GuideTijdgat
 
Comunicado sintraimagra
Comunicado sintraimagraComunicado sintraimagra
Comunicado sintraimagrafaencomo
 
SuperZoo pet trade show checklst
SuperZoo pet trade show checklstSuperZoo pet trade show checklst
SuperZoo pet trade show checklstWorldPetAssociation
 
Quick Look Report -NATO Urban Project Experiment (Sep 2015 Rome) V 2.0
Quick Look Report -NATO Urban Project Experiment (Sep 2015 Rome) V 2.0Quick Look Report -NATO Urban Project Experiment (Sep 2015 Rome) V 2.0
Quick Look Report -NATO Urban Project Experiment (Sep 2015 Rome) V 2.0Scott Packard
 
What makes a successful venture capitalist
What makes a successful venture capitalistWhat makes a successful venture capitalist
What makes a successful venture capitalistPil Soo Son
 
Bon de commande Hop'Toys 2013/2014
Bon de commande Hop'Toys 2013/2014Bon de commande Hop'Toys 2013/2014
Bon de commande Hop'Toys 2013/2014Hop'Toys
 
La musika
La musikaLa musika
La musikakamiloa
 
Devis j media
Devis j mediaDevis j media
Devis j mediaRegistre
 
La historia de Melburn Mcbroom
La historia de Melburn McbroomLa historia de Melburn Mcbroom
La historia de Melburn McbroomIDPONLINE
 
CONSTRUCTION EQUIPMENTS Attachment Catalog fork bucket OKTAY AYTAC KILIC
CONSTRUCTION EQUIPMENTS Attachment Catalog fork bucket OKTAY AYTAC KILICCONSTRUCTION EQUIPMENTS Attachment Catalog fork bucket OKTAY AYTAC KILIC
CONSTRUCTION EQUIPMENTS Attachment Catalog fork bucket OKTAY AYTAC KILICE TUNÇ
 
Estudio de caso – materia, energía y desarrollo sostenible (meds)
Estudio de caso – materia, energía y desarrollo sostenible (meds)Estudio de caso – materia, energía y desarrollo sostenible (meds)
Estudio de caso – materia, energía y desarrollo sostenible (meds)WINA MAHI
 

En vedette (20)

ZEMP Elena - ICT and effective disaster management in a changing media world:...
ZEMP Elena - ICT and effective disaster management in a changing media world:...ZEMP Elena - ICT and effective disaster management in a changing media world:...
ZEMP Elena - ICT and effective disaster management in a changing media world:...
 
Nbs De Brug Van De Toekomst
Nbs   De Brug Van De ToekomstNbs   De Brug Van De Toekomst
Nbs De Brug Van De Toekomst
 
Presentació INS Terra Alta
Presentació INS Terra AltaPresentació INS Terra Alta
Presentació INS Terra Alta
 
Tipologia
TipologiaTipologia
Tipologia
 
NavTrack Quick User Guide
NavTrack Quick User GuideNavTrack Quick User Guide
NavTrack Quick User Guide
 
Vivarte
VivarteVivarte
Vivarte
 
INLPTA NLP Diploma
INLPTA NLP DiplomaINLPTA NLP Diploma
INLPTA NLP Diploma
 
Comunicado sintraimagra
Comunicado sintraimagraComunicado sintraimagra
Comunicado sintraimagra
 
Animation basics.es
Animation basics.esAnimation basics.es
Animation basics.es
 
SuperZoo pet trade show checklst
SuperZoo pet trade show checklstSuperZoo pet trade show checklst
SuperZoo pet trade show checklst
 
Quick Look Report -NATO Urban Project Experiment (Sep 2015 Rome) V 2.0
Quick Look Report -NATO Urban Project Experiment (Sep 2015 Rome) V 2.0Quick Look Report -NATO Urban Project Experiment (Sep 2015 Rome) V 2.0
Quick Look Report -NATO Urban Project Experiment (Sep 2015 Rome) V 2.0
 
Contactcenter
ContactcenterContactcenter
Contactcenter
 
What makes a successful venture capitalist
What makes a successful venture capitalistWhat makes a successful venture capitalist
What makes a successful venture capitalist
 
Bon de commande Hop'Toys 2013/2014
Bon de commande Hop'Toys 2013/2014Bon de commande Hop'Toys 2013/2014
Bon de commande Hop'Toys 2013/2014
 
La musika
La musikaLa musika
La musika
 
Devis j media
Devis j mediaDevis j media
Devis j media
 
La historia de Melburn Mcbroom
La historia de Melburn McbroomLa historia de Melburn Mcbroom
La historia de Melburn Mcbroom
 
Apicultura
ApiculturaApicultura
Apicultura
 
CONSTRUCTION EQUIPMENTS Attachment Catalog fork bucket OKTAY AYTAC KILIC
CONSTRUCTION EQUIPMENTS Attachment Catalog fork bucket OKTAY AYTAC KILICCONSTRUCTION EQUIPMENTS Attachment Catalog fork bucket OKTAY AYTAC KILIC
CONSTRUCTION EQUIPMENTS Attachment Catalog fork bucket OKTAY AYTAC KILIC
 
Estudio de caso – materia, energía y desarrollo sostenible (meds)
Estudio de caso – materia, energía y desarrollo sostenible (meds)Estudio de caso – materia, energía y desarrollo sostenible (meds)
Estudio de caso – materia, energía y desarrollo sostenible (meds)
 

Similaire à Automatisierung mit grunt

Automatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan ScheidtAutomatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan ScheidtOPITZ CONSULTING Deutschland
 
Einführung Progressive Web App
Einführung Progressive Web AppEinführung Progressive Web App
Einführung Progressive Web AppSebastian Blum
 
Offlinefähige Browseranwendungen: Progressive Web-Apps mit Angular 2
Offlinefähige Browseranwendungen: Progressive Web-Apps mit Angular 2Offlinefähige Browseranwendungen: Progressive Web-Apps mit Angular 2
Offlinefähige Browseranwendungen: Progressive Web-Apps mit Angular 2Manfred Steyer
 
Große Applikationen mit AngularJS
Große Applikationen mit AngularJSGroße Applikationen mit AngularJS
Große Applikationen mit AngularJSSebastian Springer
 
Das dreckige Dutzend - ADF Migration nach 12c in der IKB - DOAG 2014.
Das dreckige Dutzend - ADF Migration nach 12c in der IKB - DOAG 2014.Das dreckige Dutzend - ADF Migration nach 12c in der IKB - DOAG 2014.
Das dreckige Dutzend - ADF Migration nach 12c in der IKB - DOAG 2014.Torsten Kleiber
 
CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...
CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...
CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...LeanIX GmbH
 
.NET Summit 2016 in München: ASP.NET Core 1
.NET Summit 2016 in München: ASP.NET Core 1.NET Summit 2016 in München: ASP.NET Core 1
.NET Summit 2016 in München: ASP.NET Core 1Manfred Steyer
 
JAMstack / Static Site Generators
JAMstack / Static Site GeneratorsJAMstack / Static Site Generators
JAMstack / Static Site GeneratorsDietrichRordorf
 
MongoDB Munich 2012: Spring Data MongoDB
MongoDB Munich 2012: Spring Data MongoDBMongoDB Munich 2012: Spring Data MongoDB
MongoDB Munich 2012: Spring Data MongoDBTobias Trelle
 
Rex Linuxtag 2012
Rex Linuxtag 2012Rex Linuxtag 2012
Rex Linuxtag 2012inovex GmbH
 
Microservices mit Rust
Microservices mit RustMicroservices mit Rust
Microservices mit RustJens Siebert
 
Angular 2 Workshop November 2015 von der w-jax 2015
Angular 2 Workshop November 2015 von der w-jax 2015Angular 2 Workshop November 2015 von der w-jax 2015
Angular 2 Workshop November 2015 von der w-jax 2015Manfred Steyer
 
Angular 2 Workshop Oktober 2015
Angular 2 Workshop Oktober 2015Angular 2 Workshop Oktober 2015
Angular 2 Workshop Oktober 2015Manfred Steyer
 
Ionic 2 - Hybridapps auf Steroiden
Ionic 2 - Hybridapps auf SteroidenIonic 2 - Hybridapps auf Steroiden
Ionic 2 - Hybridapps auf SteroidenHendrik Lösch
 

Similaire à Automatisierung mit grunt (20)

Automatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan ScheidtAutomatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
 
Einführung Progressive Web App
Einführung Progressive Web AppEinführung Progressive Web App
Einführung Progressive Web App
 
Offlinefähige Browseranwendungen: Progressive Web-Apps mit Angular 2
Offlinefähige Browseranwendungen: Progressive Web-Apps mit Angular 2Offlinefähige Browseranwendungen: Progressive Web-Apps mit Angular 2
Offlinefähige Browseranwendungen: Progressive Web-Apps mit Angular 2
 
Große Applikationen mit AngularJS
Große Applikationen mit AngularJSGroße Applikationen mit AngularJS
Große Applikationen mit AngularJS
 
Das dreckige Dutzend - ADF Migration nach 12c in der IKB - DOAG 2014.
Das dreckige Dutzend - ADF Migration nach 12c in der IKB - DOAG 2014.Das dreckige Dutzend - ADF Migration nach 12c in der IKB - DOAG 2014.
Das dreckige Dutzend - ADF Migration nach 12c in der IKB - DOAG 2014.
 
CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...
CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...
CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...
 
.NET Summit 2016 in München: ASP.NET Core 1
.NET Summit 2016 in München: ASP.NET Core 1.NET Summit 2016 in München: ASP.NET Core 1
.NET Summit 2016 in München: ASP.NET Core 1
 
JAMstack / Static Site Generators
JAMstack / Static Site GeneratorsJAMstack / Static Site Generators
JAMstack / Static Site Generators
 
Deployment 2.0
Deployment 2.0Deployment 2.0
Deployment 2.0
 
MongoDB Munich 2012: Spring Data MongoDB
MongoDB Munich 2012: Spring Data MongoDBMongoDB Munich 2012: Spring Data MongoDB
MongoDB Munich 2012: Spring Data MongoDB
 
Einführung in Docker
Einführung in DockerEinführung in Docker
Einführung in Docker
 
Rex Linuxtag 2012
Rex Linuxtag 2012Rex Linuxtag 2012
Rex Linuxtag 2012
 
Workshop Vue js
Workshop Vue jsWorkshop Vue js
Workshop Vue js
 
Microservices mit Rust
Microservices mit RustMicroservices mit Rust
Microservices mit Rust
 
Angular 2 Workshop November 2015 von der w-jax 2015
Angular 2 Workshop November 2015 von der w-jax 2015Angular 2 Workshop November 2015 von der w-jax 2015
Angular 2 Workshop November 2015 von der w-jax 2015
 
Angular 2 Workshop Oktober 2015
Angular 2 Workshop Oktober 2015Angular 2 Workshop Oktober 2015
Angular 2 Workshop Oktober 2015
 
Ionic 3
Ionic 3Ionic 3
Ionic 3
 
AngularJs
AngularJsAngularJs
AngularJs
 
Ionic 2 - Hybridapps auf Steroiden
Ionic 2 - Hybridapps auf SteroidenIonic 2 - Hybridapps auf Steroiden
Ionic 2 - Hybridapps auf Steroiden
 
Node.js
Node.jsNode.js
Node.js
 

Automatisierung mit grunt