Skip to content

Instantly share code, notes, and snippets.

@kmdsbng
Last active August 29, 2015 14:04
Show Gist options
  • Select an option

  • Save kmdsbng/93ff3f91491f8b3cbc58 to your computer and use it in GitHub Desktop.

Select an option

Save kmdsbng/93ff3f91491f8b3cbc58 to your computer and use it in GitHub Desktop.

Bower概要

Bowerとは?

  • JavaScriptモジュールをダウンロード、管理するプログラム。
  • JavaScript版のBundlerみたいな感じ。
  • node.jsが必要
  • 似たプロダクトの中では、軽量な管理ツールらしい。(競合はComponentやBrowserify)
  • ダウンロードするだけ。モジュールの配備はしない。
  • require() は提供しない。htmlから<script src="bower_component/jquery/dist/jquery.js">みたいにする必要がある。
  • ファイルの配備をしない。bower_component/jquery/dist/jquery.js みたいなファイルにアクセスする必要がある。配備をするには他のツールと連携する必要あり。(grunt-bower-taskを使うなどすればいいらしい。 http://yosuke-furukawa.hatenablog.com/entry/2013/06/04/085537)

何がうれしい?

  • JavaScriptモジュールのバージョン管理を任せられる
  • ダウンロードするのが楽

インストール

  • node.jsインストールしてなかったらインストール
  • npm install -g bower

Hello World

bower init # ウィザード形式で、bower.jsonを作る
bower install vue --save # --saveつけると、bower.jsonに保存する
bower install jquery --save

vim index.html

ダウンロードをしてくれるだけだけど、一からJavaScriptをダウンロードしてたのに比べればだいぶ楽。

cat bower.json
{
  "name": "bower_test",
  "version": "0.0.0",
  "authors": [
    "Yoshihiro Kameda <kameda.sbng@gmail.com>"
  ],
  "license": "MIT",
  "ignore": [
    "**/.*",
    "node_modules",
    "bower_components",
    "test",
    "tests"
  ],
  "dependencies": {
    "vue": "~0.10.6",
    "jquery": "~2.1.1"
  }
}

nodeのhttp-serverを使えば、確認用のweb serverも使えるようになる。

http-server -p 8080

静的サイトの開発環境はこれで整う。かなり楽。

railsと一緒に使う

このサイトのとおりに設定したらOK http://www.iconoclastlabs.com/blog/bower-and-rails-4

ざっくりいうとこういうことを設定してる

  • bowerが管理するモジュールをvendor/assets/components にダウンロードするように
  • bower init を普通に実行
  • config/application.rb に、asset pathにvendor/assets/components を追加
  • bower install xxx を普通に実行
  • application.js に、bowerがダウンロードしたモジュールの require を追加
  • application.css に、bowerがダウンロードしたモジュールの require を追加
  • これで普通に使える

railsとbowerの併用は相性良さそう。 requireはasset pipelineが受け持って、モジュールのダウンロードはbowerが管理するので、住み分けができてる。 browserifyとrailsの併用を試してないけど、browserifyはrequireを提供してるので、おそらくasset pipelineとバッティングして相性悪いはず

@tak-onda
Copy link
Copy Markdown

tak-onda commented Aug 6, 2014

https://github.com/janlelis/rg
Angular 使うなら、これ使うと bower 統合されてます。

browserify が流行ってますが、より高機能でイチオシの webpack
http://webpack.github.io/

他、assets pipeline でできない系

評価中ですが above the fold css 対応してくれるツールの紹介。
PageSpeed web master tool 版がこれに厳しい。
https://github.com/addyosmani/above-the-fold-css-tools

通常用途だと uncss で十分
https://github.com/giakki/uncss

あとは画像を最適化する imagemin
https://github.com/gruntjs/grunt-contrib-imagemin

HTML のコメントや空白で削る htmlmin
https://github.com/gruntjs/grunt-contrib-htmlmin

CSS Sprite の自動化
https://github.com/Ensighten/grunt-spritesmith

など、assets pipeline でできないことを node エコシステムではコマンド一発でビルドできるので、クライアント側ビルドはできれば grunt/gulp に移行して rake 連携などできないか、と考えています。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment