Как документировать исходный код CoffeeScript с помощью JSDoc?

У меня есть код, написанный в CoffeeScript, и я хочу оптимизировать сгенерированный JavaScript с помощью компилятора закрытия Google, поэтому эти файлы должны быть задокументированы с помощью JSDoc.

мой вопрос в том, как я могу документировать *.файлы кофе для генерации javascript, содержащие рабочий JSDoc для компилятора закрытия?

еще один вопрос: есть ли способ, чтобы сохранить однострочный комментарий в *.кофе ?

5 ответов


Я бы не советовал этого делать. JSDoc-ing весь ваш код-трудоемкий процесс, который, вероятно, не принесет никакой пользы от компилятора закрытия. За пределами самого Google, вряд ли кто-то делает это. CoffeeScripters / JavaScripters обычно предпочитают легкие инструменты документации, такие как -- это.

кроме того, в то время как компилятор закрытия имеет фирменное наименование Google за ним,UglifyJS доказывало быть более эффективным инструментом minification в много случаев. (на jQuery недавно перешли к нему.)

еще один вопрос: есть ли способ, чтобы сохранить однострочный комментарий в *.кофе ?

да:

### foo ###

или

`// foo`

Ввод CoffeeScript:

### 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

вывод JavaScript из командной строки Windows cmd для: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 имеет лучший метод для решения этой проблемы.


поскольку я не могу ответить непосредственно Билли выше, кажется, 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 здесь).

Я попытался создать действительно простой JsDoc фрагмент для функции с помощью функции "try coffeescript"на сайте:

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

это дало:

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

Я не эксперт в JsDoc, но я предполагаю, что var foo; оператор над функцией будет создавать проблему. Если бы ты ... --7--> объявлено ранее, maybee..

было бы неплохо послушать, как это происходит.


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