33

Hubot は Github のチャットルーム ロボットです。私たちの会社の誰もCoffeescriptで書きたがらないことを除けば、これは素晴らしいツールです....しかし、普通の古いJavascriptでHubotのスクリプトを書くことはできないようです.
これは本当ですか?私がここに欠けているものはありますか?Coffeescript は「単なる JavaScript」ですが、Javascript を使用することはできませんか?
EDIT
私は2つのとてつもなく単純な間違いを犯していました: -CoffeeScript
コメント構文をJSファイルにコピーしました
-メインプロジェクトの/scripts/ディレクトリのすぐ下ではなく、hubot-scripts node_moduleの下にスクリプトがありました。

今は完璧に動作します。

4

2 に答える 2

32

はい、hubot スクリプトを純粋な JavaScript で記述できます。/scripts/以下は、純粋な JavaScript で記述され、カスタマイズされた hubot のディレクトリの下に置かれた単純な hubot スクリプトです。

// Description:
//   holiday detector script
//
// Dependencies:
//   None
//
// Configuration:
//   None
//
// Commands:
//   hubot is it weekend ?  - returns whether is it weekend or not
//   hubot is it holiday ?  - returns whether is it holiday or not

module.exports = function(robot) {
    robot.respond(/is it (weekend|holiday)\s?\?/i, function(msg){
        var today = new Date();

        msg.reply(today.getDay() === 0 || today.getDay() === 6 ? "YES" : "NO");
    });
}
于 2014-08-06T20:00:06.350 に答える
23

CoffeeScript は JavaScript にコンパイルされますが、JavaScript のスーパーセットではないため、JavaScript コードは必ずしも有効な CoffeeScript コードではありません。

それにもかかわらず、ソースを見ると、 Hubot は両方を受け入れることができるようです:

  # Public: Loads a file in path.
  #
  # path - A String path on the filesystem.
  # file - A String filename in path on the filesystem.
  #
  # Returns nothing.
  loadFile: (path, file) ->
    ext  = Path.extname file
    full = Path.join path, Path.basename(file, ext)
    if ext is '.coffee' or ext is '.js'
      try
        require(full) @
        @parseHelp "#{path}/#{file}"
      catch error
        @logger.error "Unable to load #{full}: #{error.stack}"
        process.exit(1)

このメソッドは によって呼び出されloadHubotScriptsます。

于 2013-03-30T20:34:40.093 に答える