使用IntelliJ调试CoffeeScript

时间:2013-07-08 22:48:10

标签: intellij-idea coffeescript gruntjs

我正在开始一个新的Web项目,我的配置的最后一部分是为我的CoffeeScripts文件启用调试。

整个项目是使用Grunt任务构建的,该任务将coffee编译为js并生成正确的map文件,但我无法在IntelliJ中进行Coffeescript调试。

请注意,我不想使用IntelliJ文件监视器。

这是我的Gruntfile:

module.exports = (grunt) ->
  grunt.initConfig
    pkg: grunt.file.readJSON('package.json')
    coffee:
      options:
        sourceMap: true
      files:
        expand: true
        flatten: true
        cwd: 'src/'
        src: ['**/*.coffee']
        dest: 'src/'
        ext: '.js'
    concat:
      option:
        separator: ';'
      dist:
        src: ['src/**/*.js']
        dest: 'dist/<%= pkg.name%>.js'
    uglify:
      options:
        banner: '/*! <%= pkg.name %> v<%= pkg.version%> by Pierre Degand <%= grunt.template.today("dd-mm-yyyy") %> */\n'
      dist:
        files:
          'lib/<%= pkg.name%>.min.js': ['<%= concat.dist.dest %>']
    watch:
      files: ['<%= coffee.files.src %>']
      tasks: ['coffee', 'concat', 'uglify']

  grunt.loadNpmTasks('grunt-contrib-concat')
  grunt.loadNpmTasks('grunt-contrib-uglify')
  grunt.loadNpmTasks('grunt-contrib-coffee')
  grunt.loadNpmTasks('grunt-contrib-watch')

  grunt.registerTask('default', ['coffee', 'concat', 'uglify'])

My Simple CoffeeScript文件(断点位于IntelliJ的第2行):

name = 'Pierre'
console.log "Hello #{name} !"

Grunt生成的JS文件:

(function() {
  var name;

  name = 'Pierre';

  console.log("Hello " + name + " !!");

}).call(this);

/*
//@ sourceMappingURL=app.js.map
*/

源地图

{
  "version": 3,
  "file": "app.js",
  "sourceRoot": "",
  "sources": [
    "app.coffee"
  ],
  "names": [],
  "mappings": "AAAA;CAAA,GAAA,EAAA;;CAAA,CAAA,CAAO,CAAP,IAAA;;CAAA,CACA,CAAA,CAAa,CAAb,EAAO,CAAM;CADb"
}

最后我用来测试的HTML

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>

<script type="text/javascript" src="src/app.js"></script>
</body>
</html>

当我使用文件观察者时,.js和.map.js是.coffee文件的子文件,我可以在不使用文件监视器的情况下实现相同的行为吗?

如果我在IntelliJ中右键单击/“Debug index.html”,我可以读到“Hello Pierre !!”在我的IntelliJ debuger控制台中,但脚本没有在console.log()

上中断

有人有同样的麻烦吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

  

当我使用文件观察者时,.js和.map.js是.coffee文件的子文件,我可以在不使用文件监视器的情况下实现相同的行为吗?

不,你不能。这是一个文件监视器功能

  

如果我在IntelliJ中右键单击/“Debug index.html”,我可以读到“Hello Pierre !!”在我的IntelliJ debuger控制台中,但是在console.log()

上没有破坏脚本

如果我在执行代码后在浏览器中刷新页面,这对我有用。请投票给this ticket