Your SlideShare is downloading. ×
JavaScript dans l'usine logicielle
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

JavaScript dans l'usine logicielle

935
views

Published on

Slide for my presentation at JugSummerCamp about integration of JavaScript in software factory. First trying to use Java Tools like Maven, then embrassing JavaScript Tools like Grunt and Bower.

Slide for my presentation at JugSummerCamp about integration of JavaScript in software factory. First trying to use Java Tools like Maven, then embrassing JavaScript Tools like Grunt and Bower.

Published in: Technology

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
935
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
13
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Du JavaScript dans votre Usine Logiciel Christophe Jollivet
  • 2. Christophe Jollivet • Neurobiologiste • Informaticien • Communautaire • @jollivetc
  • 3. Usine logicielle • Construire le livrable • compilation / dépendances • packaging • Exécution des tests • Génération de métriques / doc
  • 4. La solution de facilité • drop les fichiers dans webapp • quelques tests Selenium...
  • 5. Intégration • « A la Java » • « A la JavaScript »
  • 6. « A la Java »
  • 7. Jasmine • Framework de Test • TestRunner
  • 8. FeedBack Continue • Testem • capture de navigateur • exécution en continue
  • 9. Testem dans Jenkins
  • 10. Jasmine dans Maven • Jasmine-maven-plugin
  • 11. Maven Tools for JavaScript Developers • http://mojo.codehaus.org/javascript-maventools/ • Fourni • Tests • Minification • JSLint • Archetype
  • 12. <build> <extensions> ! <extension> ! <groupId>org.codehaus.mojo</groupId> ! <artifactId>javascript-maven-plugin</artifactId> ! ! <version>2.0.0-alpha-1</version> ! </extension> </extensions> </build>
  • 13. WebJar • Dépendances transitives des librairies JS • container Servlet3 compatible • compatible SBT, Maven, Gradle, Leiningen
  • 14. WebJar
  • 15. WebJar • Les WebJars sont dans WEB-INF/lib
  • 16. WebJar • Les WebJars sont dans WEB-INF/lib • ce qui est sous META-INF/resources d’un JAR sour WEB-INF/lib est accessible
  • 17. WebJar • avantages • dépendances transitives • pas dans le SCM • Inconvénients • IDE ne fait pas de complétion
  • 18. « A la JavaScript »
  • 19. A la JavaScript • Ecosystème d’outils • NPM, Grunt, Bower
  • 20. A la JavaScript A Ecosystème d’outils FR • E R U • NPM, Grunt, Bower T IN E P E H IC
  • 21. NPM • Node Package Module • installation d’outils et de plugins • Permet l’installation d’outils de façon globale
  • 22. NPM • Installation par • MSI • pkg • make install • Installeur pour Jenkins
  • 23. Grunt • The JavaScript Task Runner • version 0.4.1
  • 24. Installation npm install -g grunt-cli
  • 25. configuration • package.json • Gruntfile.js ou Gruntfile.coffe
  • 26. package.json • project metadata • Grunt plugins as devDependencies
  • 27. package.json { "name": "my-project-name", "version": "0.1.0", "devDependencies": { "grunt": "~0.4.1", "grunt-contrib-jshint": "~0.6.3", "grunt-contrib-nodeunit": "~0.2.0", "grunt-contrib-uglify": "~0.2.2" } }
  • 28. package.json • npm install • npm install <module> --save-dev
  • 29. Gruntfile.js • Il comprend • la fonction wrapper • configuration du projet et tâches • chargement plugins et tâches • tâches personnalisées
  • 30. Gruntfile.js module.exports = function(grunt) { // Project configuration. grunt.initConfig({ pkg: grunt.file.readJSON('package.json'), uglify: { build: { src: 'src/<%= pkg.name %>.js', dest: 'build/<%= pkg.name %>.min.js' } } }); // Load the plugin that provides the "uglify" task. grunt.loadNpmTasks('grunt-contrib-uglify'); // Default task(s). grunt.registerTask('default', ['uglify']); };
  • 31. CLI • grunt <task> • grunt --help
  • 32. Istanbul • Couverture de test
  • 33. Plato • Analyse de source JavaScript
  • 34. JsDuck • Documentation • syntaxe à la JavaDoc • Support de Markdown
  • 35. Yeoman • Yo : scaffolding • Grunt : build, preview, test... • Bower : dependency management
  • 36. Yo • Scaffolding • installation interactive de Generator
  • 37. Bower • package manager for the web
  • 38. installation npm install -g bower
  • 39. Configuration • bower.json • .bowerrc
  • 40. Utilisation • bower install • bower install <package> • bower install <package>#<version>
  • 41. Utilisation • bower list • bower search
  • 42. bower.json
  • 43. Yeoman-maven-plugin • configuration clean et war plugin • Intégration dans le cycle Maven
  • 44. Sonar
  • 45. Sonar • Plugin dans SonarQube • Sonar-runner • sonar-project.properties • Complexe sur des projets mixtes
  • 46. Conclusion • http://addyosmani.com/blog/making-maven-grunt/ • 3 solutions • Code séparé • ignorer outillage moderne • Maven-exec plugin
  • 47. Questions ? https://github.com/jollivetc/JugSummerCamp