HubotはGithubのチャットルームロボットです。弊社の誰もCoffeescriptで書きたくないことを除けば、これは素晴らしいツールです。しかし、Hubotのスクリプトを昔ながらのJavascriptで書くことはできないようです。
これは本当ですか?ここに欠けているものはありますか? Coffeescriptは「単なるjavascript」ですが、Javascriptを使用できませんか?
[〜#〜]編集[〜#〜]
私は2つのばかげて単純な間違いを犯していました:
-CoffeeScriptコメント構文をJSファイルにコピーしました
-メインプロジェクトの/ scripts /ディレクトリのすぐ下ではなく、hubot-scriptsnode_moduleの下にスクリプトがありました。
今は完璧に動作します。
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
によって呼び出されます。
はい、純粋なJavaScriptでhubotスクリプトを書くことができます。以下は、純粋なJavaScriptで記述され、カスタマイズしたhubotの/scripts/
ディレクトリに配置された単純な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");
});
}