Génération de cartes source pour plusieurs fichiers javascript concaténés compilés à partir de Coffeescript

Quelqu'un a-t-il eu du succès?

Je pense que c'est plus ou moins un problème non résolu: https://github.com/jashkenas/coffee-script/issues/2779 . Le dernier commentaire méchant a été de jwalton, il y a un mois.

Pourtant, il ne semble pas que la science de la fusée apporte un support pour cela, alors il viendra probablement bientôt.

Michael Ficarra (créateur de CoffeeScript Redux) a suggéré d'utiliser https://github.com/michaelficarra/commonjs-heverywhere .

Deux mises en garde:

  • Cela ne fonctionne que pour le regroupement de modules CommonJS.
  • Il utilise CoffeeScript Redux, qui est toujours en version bêta (bien qu'il fonctionne assez bien, semble-t-il) et ne soit pas compatible avec 100% avec le compilateur CoffeeScript d'origine.

Donc, cela ne fonctionne pas pour ce que vous demandez spécifiquement, "concaténation".

Ajouté le 14 avril

Vous pourriez avoir de la chance avec ceci: combine-source-map et / ou generate-sourcemap , tous deux par le même auteur.

Ajouté le 26 avril

Cela semble très simple: https://npmjs.org/package/mapcat . Il vous suffit de l'alimenter avec les fichiers de carte source individuels générés par le compilateur de café.

Ajouté le 16 mai

Mariusz Nowak vient de publier le webmake-coffee . Comme CommonJS Everywhere, il faut que le code soit organisé sous forme de modules CommonJS. Contrairement à CommonJS partout, il utilise régulièrement CoffeeScript.

Il semble également que le plugin Grunt Coffee-Script ait reçu un support de carte source pour les fichiers concaténés pendant un bon moment (deux mois), ce qui prouve efficacement que ma réponse initiale est incorrecte.

La prochaine version 2.0 de Snockets sera également prise en charge.

J'ai fini par naviguer en utilisant le menuiser comme option de transformation et en activant l'option de débogage de navigateur. Je regroupe l'application sur chaque demande pour mon fichier main.js, et toutes les erreurs d'exécution apparaissent dans ma source d'origine avec une précision assez décente.

Bien sûr, battre les erreurs d'exécution dans les js concaténés / compilés vers la source de café avec mes globes oculaires!

J'avais besoin d'annoter le code AngularJS avant la minification, mais grunt-ng-annotate n'a pas accepté les cartes source d'entrée, donc je ne serais pas en mesure d'utiliser les cartes générées par le compilateur CoffeeScript.

Apparemment, avec des problèmes de gulp ce n'est pas un problème:

 var gulp = require('gulp'); var $ = require('gulp-load-plugins')(); // loading gulp plugins lazily // remember to include them in the package.json gulp.task('appJS', function() { // concatenate compiled .coffee files and js files into build/app.js gulp.src(['./app/**/*.js','./app/**/*.coffee']) .pipe($.sourcemaps.init()) .pipe($['if'](/[.]coffee$/, $.coffee({bare: true}).on('error', $.util.log))) .pipe($.concat('app.js')) .pipe($.ngAnnotate()) .pipe($.uglify()) .pipe($.sourcemaps.write()) .pipe(gulp.dest('./build')) }); 

La même approche fonctionne également dans d'autres situations. Dans mon cas, c'est la seule approche qui a fonctionné.

J'ai écrit une tâche grincheuse qui le rend impeccable. Vérifiez-le