2017-03-12 16 views
1

ExternalsセクションをjsDoc出力から正しく除外できますか?jsDoc出力から外部を除外する

私のプロジェクトでは、ナビゲーションパネルには表示したくない外見がたくさんあります。すべてのスペースを占有していて、私たちにとっては役に立たないものです。

ファイルnode_modules\jsdoc\lib\util\templateHelper.jsのコードを変更することで手動でハックすることができましたが、これは私の開発者チームにとって再利用可能な方法ではありません。

ハックは空の配列でmembers.externalsを上書きしていた:

/* 
    members.externals = members.externals.map(function(doclet) { 
     doclet.name = doclet.name.replace(/(^"|"$)/g, ''); 
     return doclet; 
    }); 
*/ 
    members.externals = []; 

答えて

1

残念ながら、jsDocを使用して数年後、私にできることすべてはファイルで、依存関係のすべての更新後に再ハッキング続けることですnode_modules\jsdoc\lib\util\templateHelper.js

// HACK: set Externals to an empty list: 
members.externals = []; /*members.externals.map(function(doclet) { 
    doclet.name = doclet.name.replace(/(^"|"$)/g, ''); 

    return doclet; 
});*/ 
+0

私は現在このハックを使用しています。間違いなく満足している。自分自身を定義していない外部モジュールをどう扱うのですか?私はモジュールに入って@externalでモジュールをハックしなければなりませんでしたが、それはあまり満足できません。 –

0

私は、これははるかに洗練されてわからないんだけど、これは私がやってしまったものです:

幸い、でも現在のバージョン3.5.5で、ハックはまだ同じように動作します。 jsdocのインストールをハックすることなく、すべてのプロジェクトで動作します。

私の問題:インポートされたnode_modulesから派生したクラスがあり、ドキュメントに継承された情報が含まれていたが、基本クラスがサイドバーのナビゲーションを詰まらせたくなかった。

まず、私は(私はそれが-node_modulesをスキップ呼ばれる)私のJSDocのテンプレートにプラグインを追加しました:

exports.handlers = { 
    processingComplete: function (e) 
    { 
     for (let i = 0; i < e.doclets.length; i++) 
     { 
      const doclet = e.doclets[i] 
      if (!doclet.undocumented && doclet.meta && doclet.meta.path.indexOf('node_modules') !== -1) 
      { 
       // hack the name so I can find it in the .tmpl file 
       // I tried to add a new flag to the doclet, but it didn't pass through 
       doclet.longname += '~' 
      } 
     } 
    } 
}; 

それから私はnavigation.tmplにチェックを追加しました:

<ul class="list"> 
<?js 
this.nav.forEach(function (item) { 
?> 
    <?js if (item.longname[item.longname.length - 1] !== '~') { ?> 
    <li class="item" data-name="<?js= item.longname ?>"> 
    ... 
    <? } ?> 

そして、 poof、私のサイドバーにnode_moduleのインポートはもうありません。 (これは、あなたがこれらのクラスにクリックするとサイドバーを表示しないという欠点があります。私はそれを取り除くことができますが、それほど重要なものではありません)。

これを変更して外部シンボルをチェックします。プラグインのconsole.log(e)を使用して、ドックレットが提供するすべての情報を取得し、自分の状況に適したものを探します。