GitHubで公開中のjQueryプラグインをCDNで配信するためにjsDelivrへ登録した
最終更新:
目次
利用する方法
例: jquery.add-input-area (GitHub, npm)
単体で
<!-- npmに存在するファイルを利用 --> 形式: https://cdn.jsdelivr.net/npm/<パッケージ名>@<バージョン>/<ファイル> <script src="https://cdn.jsdelivr.net/npm/jquery.add-input-area@4.9.1/dist/jquery.add-input-area.min.js"></script> <!-- GitHubに存在するファイルを利用 --> 形式: https://cdn.jsdelivr.net/gh/<ユーザー名>/<リポジトリ名>@<バージョン>/<ファイル> <script src="https://cdn.jsdelivr.net/gh/sutara79/jquery.add-input-area@4.9.1/dist/jquery.add-input-area.min.js"></script>
jQueryと合わせてひとつのHTTPリクエストで
<!-- npm --> <script src="ttps://cdn.jsdelivr.net/combine/npm/jquery@3.2/dist/jquery.min.js,npm/jquery.add-input-area@4.9/dist/jquery.add-input-area.min.js"></script> <!-- GitHub --> <script src="https://cdn.jsdelivr.net/combine/gh/jquery/jquery@3.2/dist/jquery.min.js,gh/sutara79/jquery.add-input-area@4.9/dist/jquery.add-input-area.min.js"></script>
(公式: ひとつのHTTPリクエストにまとめる方法)
登録する方法
2017年5月14日現在、登録はとても簡単になりました。
GitHubまたはnpmで公開しているものなら全てCDNとして利用できます。
ただし、以下のような条件があります。
- セマンティックバージョニングに則ったバージョンを
git tag
でつけること。 - CDNとして提供したいファイルを
package.json
のmain
で指定すること。
main
のファイルがブラウザでは利用できない形式の場合は、代わりにbrowser
、cdn
、jsdelivr
の項目で指定すること。
(私が試した限りではどれも不要でした。後述) min.js
、min.css
などの縮小ファイルを提供する場合はソースマップも含めること。
(私が試した限りではソースマップは不要でした)
縮小ファイルを提供していない場合は、jsDelivrが自動で生成する。
(公式: 登録方法)
バージョンタグを付ける
# タグを付ける git tag v1.0.0 # タグをリモートに送信する git push origin --tags
(参照: Git - タグ)
package.jsonでの指定は不要?
2017年5月14日現在では、main
やbrowser
、cdn
、jsdelivr
で指定しなくても下記のように全てのファイルがCDNから入手できます。
ただ、今後仕様が変わるかもしれないので、きちんと指定したほうがいいと思います。
- リードミー: https://cdn.jsdelivr.net/gh/sutara79/jquery.add-input-area@4.9.1/README.md
- テスト用のページ: https://cdn.jsdelivr.net/gh/sutara79/jquery.add-input-area@4.9.1/test/index.html
縮小ファイルを作成する
ミニファイする方法は色々ありますが、下記のウェブサービスが手軽に利用できます。
古い方法 (2017年5月14日現在)
- 公式マニュアル: jsdelivr/CONTRIBUTING.md
jsdelivrをフォークする
patch-1ブランチへ移動する
フォークしたリポジトリの「Branch:」をクリックして「patch-1」ブランチを選びます。
info.iniを作成する
patch-1ブランチでjsdelivr/files/<プロジェクト名>/info.ini
のパスで作成します。
画面右側にある「Create new file」をクリックします。
パッケージ名の後に/
(スラッシュ)を入力すれば、自動で階層化してくれます。
私のinfo.ini
は以下のように書きました。
author = "Yuusaku Miyazaki" github = "https://github.com/sutara79/jquery.add-input-area" homepage = "https://sutara79.github.io/jquery.add-input-area/" description = "jQuery plugin to add or delete Form elements." mainfile = "jquery.add-input-area.min.js"
- 実際のファイル: info.ini (sutara79/jsdelivr/patch-1)
update.jsonを作成する
「info.ini」と同じ階層で作成します。
(patch-1ブランチのjsdelivr/files/<プロジェクト名>/update.json
)
私のupdate.json
は以下のように書きました。
{ "packageManager": "github", "name": "jquery.add-input-area", "repo": "sutara79/jquery.add-input-area", "files": { "basePath": "dist/", "include": [ "jquery.add-input-area.min.js" ] } }
注意: include
のファイルはプロジェクトのルートからのパスで記述します。
ファイルが全て共通のサブディレクトリ内にあるなら、basePath
を設定するのが便利です。
- 公式マニュアル: update.jsonの書き方
プルリクエストを送る
下記の画像の通りに進めていきます。
本家と比べて、どのファイルをプルリクエストすべきなのかを自動で選んでくれます。
プルリクエストは下記で確認できます。
設定ファイルに誤りがあれば赤い"✕"印で表示されます。
マージされるのを待つ
プルリクエストに問題がなければおよそ半日以内には自動でマージされ、notifications@github.com
からメールが届きます。
これで完了です。
jsdelivr/files/jquery.add-input-area/には他にバージョン番号が名前となったフォルダがありますが、これはjsDelivrが自動で作成したものです。
うまくいかないときは
成功した場合はプルリクエストは「Update project jquery.add-input-area to v4.9.1」のようなタイトルでClosedの状態になっているはずです。
マージされずにプルリクエストがOpenのままということは、何かミスをしていると思います。
たとえば、私はきちんとminファイルを作ってコミットしたものの、それにタグを付け忘れていました。
jsDelivrが古いバージョンを登録しようとして、それにはminファイルが含まれていなかったのでエラーとなりました。
新たにタグを付けてそれをjsDelivrに報告したら、あちらの方が手動でマージしてくださったようです。
お手数かけました…orz