メモ帳

やったこととかちまちまと書く 需要のない記事を生成している

ClojureScriptの環境構築

Homebrew編*1 -ビルドツール使わないやり方

clojurescriptを入れる。

brew install clojurescript 

必要なディレクトリ、ファイルを作成する。

mkdir -p src/hello_world;touch src/hello_world/core.cljs;touch build.clj

Clojureはcljだけど、ClojureScriptだとcljsらしい。

core.cljsの中身

(ns hello-world.core)
(enable-console-print!)
(println "Hello world!")

build.cljの中身

(require 'cljs.build.api)
(cljs.build.api/build "src" {:output-to "out/main.js"})

必要なものは揃ったので

cljsc build.clj

をしたらoutディレクトリが作成されて、その下にJsファイル等が入ってる。

実際に動くか試してみる。

<html>
    <body>
        <script type="text/javascript" src="out/goog/base.js"></script>
        <script type="text/javascript" src="out/main.js"></script>
        <script type="text/javascript">
            goog.require("hello_world.core");
        </script>
    </body>
</html>

参照

github.com

Leiningen編

テンプレートを使わないやり方
まずLeiningen(ビルドツール)を入れて、プロジェクトを作成する。

brew install leiningen
lein new cljs-test

src/cljs/core.cljの拡張子を.cljsに変更して、内容を変更する。

(ns cljs-test.core)
(enable-console-print!)
(println "Hello world!")

project.cljを書き換える。

(defproject cljs-test "0.1.0-SNAPSHOT"
  :dependencies [ [org.clojure/clojure "1.8.0"]
                  [org.clojure/clojurescript "1.8.51"]])
  :plugins [[lein-cljsbuild "1.1.4"]]
  :cljsbuild {
    :builds [{
        :source-paths ["src"]
        :compiler {
          :output-to "out/main.js"
          :output-dir "out"
          :optimizations :none
          :pretty-print true}}]}  

ビルドしたら終わり

lein cljsbuild once

実際に動くか試してみる。

<html>
    <body>
        <script type="text/javascript" src="./out/goog/base.js"></script>
        <script type="text/javascript" src="./out/main.js"></script>
        <script type="text/javascript">
            goog.require("cljs-test.core");
        </script>
    </body>
</html>

二種類の方法を書いた理由

始めLeiningenを使ってやってみたが動かなくて、次にHomebrewを使ってやったら一発で成功した。
そのあと、もう一度Leiningenを使ってやってみたら動いたから、メモとして一応書いた。

*1:わざわざHomebrew使わずともできる(Clojure Scriptを使ってみる | Developers.IO)