とりあえず関東最速でElm+JSなアプリを作るためのレシピです
parcel
Webpackで設定ファイルを弄っていると一生終わりません。最速で作るにはparcel一択です。
$ mkdir yourapp
$ npm init
$ npm install -D parcel-bundler
npmで公開しなければ以下のように private フラグを true にしておくとフィールドが減らせて楽です
{
"private": true,
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"devDependencies": {
"parcel-bundler": "^1.11.0"
}
}
Elm実装
先に簡単なElmアプリを実装します。src ディレクトリを切って App.elm を作ります。ここでは0.19を使うこととします。
module App exposing (..)
import Browser
import Html exposing (Html, div, input, text)
import Html.Events exposing (onInput)
main =
Browser.sandbox { init = init, update = update, view = view }
-- MODEL
type alias Model =
{ value : String
}
init : Model
init =
{ value = "type something below"
}
-- UPDATE
type Msg
= UpdateModel String
update : Msg -> Model -> Model
update msg model =
case msg of
UpdateModel value ->
{ model | value = value }
-- VIEW
view : Model -> Html Msg
view model =
div []
[ div [] [ text model.value ]
, input [ onInput UpdateModel ] []
]
JS実装
index.js を作って下さい。 parcelを使っているのでJS側から直接Elmをrequireできます。
const { Elm } = require("./src/App.elm")
const app = Elm.App.init({
node: document.getElementById('main')
})
HTML実装
最後にHTMLを作ります。
index.js と同じ階層に index.html を以下の内容で置きましょう。
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>YourApp</title>
</head>
<body>
<div id="main"></div>
<script src="./index.js"></script>
</body>
</html>
起動
start と build をコマンドとして追加しておきます。
test は一旦いらないので消してしまいましょう。
{
"private": true,
"scripts": {
- "test": "echo \"Error: no test specified\" && exit 1",
+ "start": "parcel index.html --out-dir dist",
+ "build": "parcel build index.html --out-dir dist"
},
"devDependencies": {
"parcel-bundler": "^1.11.0"
}
}
あとは以下を実行すると起動できます。
起動と同時に node-elm-compiler のインストールが実行されます。
$ npm start
デフォルト設定であれば localhost:1234 にアクセスすると以下の画面が見れるはずです。
