Fork me on GitHub

(code "liquidz.uo")

個人用メモ。今回は moment.js を使う方法。

2014/01/20: node.jsのpath.joinではなくlt.objs.files/joinを使うよう修正

2014/01/24: lt.objs.plugins/find-plugin の補足を追加

package.json の用意

project.clj, plugin.json と同じディレクトリに作成する

npm init
vim package.json

moment.js を dependencies に追加

"dependencies": {
    "moment": "~2.5.0"
}

moment.js をインストール

npm install

ラグイン内で moment.js を利用する

(ns lt.plugins.foo
  (:require
    [clojure.string :as string]
    [lt.objs.files :as files]
    [lt.objs.plugins :as plugins]))

;; プラグイン名。あとで使う
(def PLUGIN_NAME "foo")

;; ユーザプラグインのディレクトリは lt.objs.plugins/user_plugins_dir から取得
;; TODO: PLUGIN_NAME を使わないようにしたい。。
(def moment
  (js/require
    (files/join plugins/user_plugins_dir PLUGIN_NAME "node_modules" "moment")))

(defn foo-task
  []
  (println (.format (moment) "YYYY-MM-DD HH:mm:ss")))

ソース内のコメントにも書いた通り、ユーザプラグインのディレクトリまでは取れるけれども、作っているプラグインのディレクトリまでは取得できないため、プラグイン名を定数としてもたざるを得ず気持ち悪いこと。良い解決策を知っている方がいれば教えていただけると助かります!

[2014.01.24 追記] Light Table 0.6.1 からは lt.objs.plugins/find-plugin が追加され、プラグイン名を渡せばプラグインのディレクトリが取れるようになりました。結局プラグイン名は必要ですが。。

(plugins/find-plugin PLUGIN_NAME) ; => (files/join plugins/user_plugins_dir PLUGIN_NAME) と同じ

» Go page top

blog comments powered by Disqus