JavaScript dans l'usine logicielle

  • 864 views
Uploaded 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.

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
864
On Slideshare
0
From Embeds
0
Number of Embeds
2

Actions

Shares
Downloads
12
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