3

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

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

请注意,我不想使用 IntelliJ File Watchers。

这是我的 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'])

我的简单 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>

当我使用 File watchers 时, .js 和 .map.js 是 .coffee 文件的子文件,我可以在不使用 File Watchers 的情况下实现相同的行为吗?

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

有人有同样的麻烦吗?

谢谢!

4

1 回答 1

1

当我使用 File watchers 时,.js 和 .map.js 是 .coffee 文件的子文件,我可以在不使用 File Watchers 的情况下实现相同的行为吗?

不,你不能。这是一个文件观察器功能

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

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

于 2013-07-09T10:15:32.790 回答