アセットパイプラインがv4で削除されたので、jsのbuildはbrowserifyにお願いしてみる。
config.rb に以下のように追記をした。
activate :external_pipeline,
name: :browserify,
command: build? ? "npm run build":"npm run watch",
source: "./.tmp/"
bundle exec middleman build
した際には、npm run build
が実行され、
それ以外のbundle exec middleman server
とかでは最初にnpm run watch
が実行される。
name
は適当。
source
で指定したディレクトリ以下が、buildした際のルートディレクトリに追加される。
なので、package.jsonで
"scripts": {
"build": "browserify js-source/main.js > ./.tmp/javascripts/all.js",
"watch": "watch 'npm run build' js-source/ -du"
}
みたいな感じで.tmp/以下にjsをビルドさせた。そうすると、
にマッピングしてくれる。(sourceディレクトリ内のjavascripts/ は消しておいた)
コード書いてる時はnpm run watch
がjsを監視・ビルドして、吐き出されたファイルをmiddleman-livereloadが監視してブラウザreloadっていう感じになった。
そのせいかreloadが数回走ったり、遅かったりするけど、なんとか使えてる。
ドキュメントなさすぎで、以下の設定画面が一番役に立ったかも。
external_pipelineの定義を見てみる
:external_pipeline
:command = "npm run watch"
The command to initialize
###:disable_background_execution = false
Don't run the command in a separate background thread
###:latency = 0.25
Latency between refreshes of source
###:name = :browserify
The name of the pipeline
###:source = "./.tmp/"
Path to merge into sitemap