bower.json の 仕様 (日本語)

0 件のコメント

( この記事は bower/specjson.md をベースに作成しています。 bower.json を作成する際、その 書き方 の 参考 になればと思います。 )

bower.json は 作成しようとしているパッケージが他のパッケージとどのような依存関係にあるかを設定するものです。 これは Node.js の package.json、 Ruby の Gemfile と似ています。

bower.json は bower init コマンドを利用することで ウィザード に従って作成することができます。

{
  "name": "blue-leaf",
  "description": "Physics-like animations for pretty particles",
  "main": [
    "js/motion.js",
    "sass/motion.scss"
  ],
  "dependencies": {
    "get-size": "~1.2.2",
    "eventEmitter": "~4.2.11"
  },
  "devDependencies": {
    "qunit": "~1.16.0"
  },
  "moduleType": [
    "amd",
    "globals",
    "node"
  ],
  "keywords": [
    "motion",
    "physics",
    "particles"
  ],
  "authors": [
    "Betty Beta <bbeta@example.com>"
  ],
  "license": "MIT",
  "ignore": [
    "**/.*",
    "node_modules",
    "bower_components",
    "test",
    "tests"
  ],
  "homepage": "http://betty.github.io/blue-leaf/index.html",
  "repository": {
   "type": "git",
    "url": "git://github.com/betty/blue-leaf.git"
  },
  "resolutions": {
    "angular": "1.3.0-beta.16"
  },
  "private": true
}
プロパティ名 説明
name string

必須

Bower リポジトリ に登録するパッケージ名。

  • ユニークな名前であること。
  • シンプルさ、一貫性、互換性のために、分かりやすい名前であること。
  • 小文字の "a-z"、数字 "0-9"が含められる。
    ダッシュ "-"、ドット "." も利用できるが最初と最後には使えない。
  • 連続したダッシュ "-" 、ドット "." は利用できない。
  • 50文字未満であること。
description string

推奨

140文字までの任意の文字列。

簡単な説明を付けることで作成したパッケージを検索および特定しやすくします。 パッケージがどう作られているかではなく、どのようなものかを記載します。 CLIで検索した結果やWebサイトのパッケージ検索結果に表示されます。

main string / string[]

推奨

パッケージを利用する際に必要となるエントリーポイントファイルを記載します。 ファイルタイプごとに1ファイルずつ指定できます。

エントリーポイントファイルでは モジュール の エクスポート や インポート があります。 Bower では 直接 main ファイルを利用しませんが、bower list --jsonbower list --paths コマンドを使用するときリストアップを行います。

例えば以下のようなパッケージを準備していたとします。

package
  js/
    motion.js
    run.js
    walk.js
  sass/
    motion.scss
    run.scss
    walk.scss
  img/
    motion.png
    walk.png
    run.png
  fonts/
    icons.woff2
    icons.woff
  dist/
    movement.js
    movement.min.js
    movement.css
    movement.min.css

motion.jsrun.jswalk.js をインポートするモジュールで、motion.scssrun.scsswalk.scss をインポートしているモジュールの場合、main は次のようになります。

"main": [
  "js/motion.js",
  "sass/motion.scss",
]

画像およびフォントファイルも JS や Sass ファイルの中で参照されているかもしれませんが、エントリーポイントではないため main ファイルではありません。

  • ビルド前の配布ファイルを指定してください。
  • 縮小ファイルは含めないでください。
  • 画像、フォント、音声、動画といったリソースファイルは含めないでください。
  • ファイル名にバージョンを含めないでください。(悪い例:package.1.1.0.js;良い例:package.js
  • js/*.js といったワイルドカードは使えません。
dependencies object

dependencies は パッケージ名 と 単純なハッシュ

  • キーは有効なパッケージ名でなくてはなりません。
  • バリューは有効な semver範囲、Git URL、URL (tarball や zipball を含む)でなければなりません。
  • Git URL は末尾にハッシュ"#"を付けて参照 (リビジョンを示す SHA、ブランチ、タグ)に制限を付けることができます。
    例:https://github.com/owner/package.git#branch
  • バリューは owner/package という短縮表記が利用できます。 デフォルトでは短縮形は GitHub の git://github.com/%owner%/%package%.git を参照します。 この設定は .bowerrcshorthand_resolver で変更することもできます。
  • ローカルパスはローカル開発のための値として使われますが、Bowerリポジトリへ登録する際は許可されません。
devDependencies object

dependencies を同じルールです。

テストフレームワークやビルドドキュメントといった開発時でしか利用しないパッケージを記載します。

moduleType string / string[]

推奨

main JavaScriptファイル で定義されるモジュールの種別を記載します。 以下の種別から1つないし複数指定できます。

globals window.namespacethis.namespace を利用してグローバル名前空間に公開される JavaScriptモジュール。
amd define() を利用するRequireJS のような AMD 互換する JavaScript モジュール。
node module.exports で公開する node や CommonJS 互換の JavaScriptモジュール。
es6 exportimport を利用する ECMAScript6 互換の JavaScriptモジュール。
yui YUI.add() を利用する YUI Modules 互換の JavaScriptモジュール。
keywords string[]

推奨

"name" と同じフォーマットで指定します。

キーワード検索で使われます。 パッケージ名が分からなくても簡単にパッケージを検索できるようにします。

authors string[] / object[]

パッケージを作成している著者のリストを指定します。 以下のどちらかのフォーマットで指定します。

"authors": [
  "John Doe",
  "John Doe <john@doe.com>",
  "John Doe <john@doe.com> (http://johndoe.com)"
]
"authors": [
  { "name": "John Doe" },
  { "name": "John Doe", "email": "john@doe.com" },
  { "name": "John Doe", "email": "john@doe.com", "homepage": "http://johndoe.com" }
]
license string / string[]

推奨

SPDX ライセンス リスト の 識別子 (Identifier) または ライセンスへの パス か URL を指定します。

ignore string[]

推奨

あなたのパッケージをインストールする際、Bower が 無視するファイルのリストを指定します。

(*) シンボリックリンクは常に無視されますが、bower.json は無視されません。

無視するルールは gitignore pattern spec と同じルールに従います。

homepage string パッケージに関する情報があるURLを記載します。 指定がない場合、GitHubプロジェクトにフォールバックします。
repository object

ソースコードがあるリポジトリを指定します。

resolutions object

パッケージ間で競合が発生した場合に自動解決させる依存バージョンを指定します。

private boolean true に設定した場合、 Bower はパッケージの公開を拒否します。 これは間違ってプライベートリポジトリを公開することを防ぐために利用します。