web-dev-qa-db-ja.com

JSDocでCoffeeScriptソースコードを文書化する方法

CoffeeScriptで書かれたコードがあり、生成されたJavaScriptをGoogle Closure Compilerで最適化したいので、これらのファイルはJSDocで文書化する必要があります。

私の質問は、どのように* .coffeeファイルを文書化して、クロージャーコンパイラー用の動作するJSDocを含むjavascriptを生成することができるでしょうか?

もう1つの質問:1行のコメントを* .coffeeに保持する方法はありますか?

45
aztack

これはお勧めしません。すべてのコードをJSDoc処理するのは面倒なプロセスであり、Closure Compilerのメリットはほとんどないか、まったくありません。 Google以外では、だれもこれを行うことはほとんどありません。 CoffeeScripters/JavaScriptersは一般に docco のような軽量のドキュメントツールを好みます。

また、Closure Compilerの背後にはGoogleのブランド名がありますが、多くの場合、 glifyJS がより効率的な縮小ツールであることが証明されています。 (jQuery 最近切り替わった それに。)

もう1つの質問:1行のコメントを* .coffeeに保持する方法はありますか?

はい:

### foo ###

または

`// foo`
3
Trevor Burnham

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

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にはこの問題を解決するためのより良い方法があります。

78
Billy Moon

上記の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) {}
34
mike wyatt

いろいろ試してみる必要がありますが、###コメントはあなたの友達です。

Coffee-scriptコンパイラーは、###形式(docs here )を使用するコメントを保持します。

私はサイトで「コーヒースクリプトを試す」機能を使用して、関数の本当にシンプルなJsDocフラグメントを作成しようとしました:

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

これは与えました:

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

私はJsDocの専門家ではありませんが、関数の上にあるvar foo;ステートメントが問題を引き起こすと思います。以前にfooを宣言したことがある場合は、maybee ..

それがどうなるか聞いてよかったです。

6
Jacob Oscarson

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では無効です

0
Li Hanyuan