我正在开始一个新的 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()
有人有同样的麻烦吗?
谢谢!