LoginSignup
0
0

More than 5 years have passed since last update.

【メモ】middleman4でbuild時にjsを1枚にまとめる

Last updated at Posted at 2017-11-20

middleman3のようにbuildでjsファイルをまとめてくれないため、
gulpを利用してbuildしたときにjsファイルを1枚にまとめてついでにminifyする方法の私的メモ。
layoutごとに異なるJSを読み込んでいる場合はオススメしません。
node.jsやnpmが使える前提です。

執筆時のバージョン
・node v8.9.1
・npm v5.5.1
・gulp CLI version 3.9.1 Local varsion 3.9.1

使用するプラグインは
・gulp-concat2.6.1
・gulp-uglify3.0.0

まずはmiddlemanのプロジェクトへ移動し以下を実行

npm init

enter連打でOK
rootディレクトリにpackage.jsonが生成される。
続いて作業環境にもGulpをインストールするため以下のコマンドを実行

npm i -D gulp

rootディレクトリにmnode_mmodulesが生成される
さらに今回使用するプラグインをインストールするため以下のコマンドを実行

npm i -D gulp-concat gulp-uglify

rootディレクトリにgulpfile.jsを作り、以下の内容を入力

gulpfile.js
var gulp = require('gulp');
var concat = require('gulp-concat');
var uglify = require('gulp-uglify')

gulp.task('build.js', function(){
  gulp.src('source/assets/javascripts/**/*.js')
  .pipe(concat('site.js'))
  .pipe(uglify())
  .pipe(gulp.dest('build/assets/javascripts'))
});

gulp.task('default', ['build.js']);

元になるjs、出力先のディレクトリなどは適宜環境に合わせてください。

config.rbに以下の内容を記述
簡単に説明すると、通常のbuild時にjsファイルは除外してgulpにbuildさせる。

config.rb
configure :build do
  ignore 'assets/javascripts/*'
  after_build do
    system('gulp')
  end
end

gulpfile.jsの最下行に設定したデフォルトタスクが「build.js」なので、結果的に1枚にまとめてminifyしたものがbuildされる。

では早速buildしてみましょう!

[16:18:00] Using gulpfile ~/Sites/mysites/middleman4/gulpfile.js
[16:18:00] Starting 'build.js'...
[16:18:00] Finished 'build.js' after 5.92 ms
[16:18:00] Starting 'default'...
[16:18:00] Finished 'default' after 14 μs
Project built successfully.

こんな感じのログが流れればOK。
全てのJSをまとめてminifyされているかsite.jsを確認してください。

開発環境でJSが動かない系の応急措置

layout.erb
<% if development? %>
  開発環境で使うJSを全部読み込む
<% end %>

page speed insight的にjsファイルは1枚にしたいため

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0