我正在开始一个新的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()
有人有同样的麻烦吗?
谢谢!
答案 0 :(得分:1)
不,你不能。这是一个文件监视器功能当我使用文件观察者时,.js和.map.js是.coffee文件的子文件,我可以在不使用文件监视器的情况下实现相同的行为吗?
如果我在IntelliJ中右键单击/“Debug index.html”,我可以读到“Hello Pierre !!”在我的IntelliJ debuger控制台中,但是在console.log()
上没有破坏脚本
如果我在执行代码后在浏览器中刷新页面,这对我有用。请投票给this ticket