15

有人在这方面取得过成功吗?

4

4 回答 4

13

我认为这或多或少是一个未解决的问题: https ://github.com/jashkenas/coffee-script/issues/2779 。最后一个有意义的评论来自一个月前的 jwalton。

尽管如此,增加对它的支持似乎并不是火箭科学,所以它可能很快就会到来。

Michael Ficarra(CoffeeScript Redux 的创建者)建议使用https://github.com/michaelficarra/commonjs-everywhere

两个警告:

  • 它仅适用于捆绑 CommonJS 模块。
  • 它使用的是仍然处于测试阶段的 CoffeeScript Redux(尽管看起来工作得很好),并且与原始 CoffeeScript 编译器不是 100% 兼容。

因此,这不适用于您特别要求的“连接”。

添加于 4 月 14 日

您可能会很幸运:combine-source-map 和/或generate-sourcemap,两者均由同一作者撰写。

添加于 4 月 26 日

这看起来很简单:https ://npmjs.org/package/mapcat 。您只需将咖啡编译器生成的各个源映射文件提供给它。

5 月 16 日添加

Mariusz Nowak刚刚发布了webmake-coffee。与 CommonJS Everywhere 一样,它需要将代码组织为 CommonJS 模块。与其他地方的 CommonJS 不同,它使用常规的 CoffeeScript。

似乎Grunt Coffee-Script 插件已经有一段时间(两个月)对连接文件的源映射支持,有效地证明了我原来的答案是不正确的。

即将推出的 Snockets 2.0 版也将支持它。

于 2013-04-13T16:12:00.007 回答
2

我需要在缩小之前注释 AngularJS 代码,但grunt-ng-annotate不接受输入源映射,因此我无法使用 CoffeeScript 编译器生成的映射。

显然,使用gulp-sourcemaps这不是问题:

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'))
});

同样的方法也适用于其他情况。就我而言,这是唯一有效的方法。

于 2014-09-04T23:33:37.670 回答
2

我最终使用了browserify,使用coffeeify 作为转换选项,并启用了browserify 的调试选项。我在 main.js 文件的每个请求中捆绑应用程序,并且任何运行时错误都会以相当不错的准确性显示在我的原始源中。

当然,用我的眼球将连接/编译的 js 中的运行时错误映射回咖啡源更胜一筹!

于 2013-04-26T00:09:07.957 回答
1

我写了一个完美的任务。一探究竟

于 2013-08-10T12:56:26.253 回答