如何用JSDoc文件CoffeeScript源代码?

我有一些用CoffeeScript编写的代码,我想用Google Closure Compiler优化生成的JavaScript,所以这些文件需要用JSDoc来logging。

我的问题是,我如何文档* .coffee文件生成包含工作JSDoc为闭包编译器的JavaScript?

还有一个问题:有没有办法在* .coffee中保留单行注释?

我build议反对这个。 JSDoc你所有的代码是一个辛苦的过程,可能会产生Closure编译器没有什么好处。 除了Google本身,几乎没有人会这样做。 CoffeeScripters / JavaScripters通常更喜欢轻量级的文档工具,如docco 。

此外,虽然Closure编译器拥有Google品牌名称,但在许多情况下, UglifyJS已被certificate是更高效的缩小工具。 (jQuery 最近转向它。)

还有一个问题:有没有办法在* .coffee中保留单行注释?

是:

### foo ### 

要么

 `// foo` 

CoffeeScriptinput:

 ### define function variable before block to avoid code being appended to closing part of JSDoc comment ### cube = null ###* * Function to calculate cube of input * @param {number} Number to operate on * @return {number} Cube of input ### cube = (x) -> x*x*x 

来自windows cmd的JavaScript输出提示: coffee -cpb src.coffee

 // Generated by CoffeeScript 1.6.3 /* define function variable before block to avoid code being appended to closing part of JSDoc comment*/ var cube; cube = null; /** * Function to calculate cube of input * @param {number} Number to operate on * @return {number} Cube of input */ cube = function(x) { return x * x * x; }; 

编辑

正如其他答案中所详述的,CoffeeScript 1.7.1有更好的方法来解决这个问题。

由于我无法直接回复上面的Billy,所以似乎CoffeeScript 1.7.1对此有更好的支持:

 ###* # Sets the language and redraws the UI. # @param {object} data Object with `language` property # @param {string} data.language Language code ### handleLanguageSet: (data) -> 

输出

 /** * Sets the language and redraws the UI. * @param {object} data Object with `language` property * @param {string} data.language Language code */ handleLanguageSet: function(data) {} 

你将不得不尝试(很多),但###评论是你的朋友。

coffee-script编译器会保留使用###表单的注释( 这里是 docs)。

我试图在网站上使用'try coffeescript'function为一个函数创build一个非常简单的JsDoc片段:

 ###* Doc for this function.### foo = -> 'bar' 

这给了:

 /** Doc for this function. */ var foo; foo = function() { return 'bar'; }; 

我不是JsDoc专家,但是我正在猜测var foo; 上面的函数声明会造成一个问题。 如果你之前已经申报过了,也许…

听听它是如何发展的。

class有问题

 ###* this is a class ### class hello v: 4 

给出了

 // Generated by CoffeeScript 2.0.0-beta5 /** this is a class */ var hello; hello = (function() { class hello {}; hello.prototype.v = 4; return hello; })(); 

它在JSDoc中是无效的