読者です 読者をやめる 読者になる 読者になる

すたらブログ

文系Webプログラマの備忘録

GitHubで公開中のjQueryプラグインをCDNで配信するためにjsDelivrへ登録した

GitHub

目次

  1. 必要なもの
  2. 手順
    1. minファイルを作成し、バージョンタグを付ける
    2. jsdelivrをフォークする
    3. info.iniを作成する
    4. update.jsonを作成する
    5. プルリクエストを送る
    6. 完了
  3. うまくいかないときは
  4. 感想

必要なもの

  • *.min.js(最小化されたファイル): 必須。
  • info.ini: 必須。
  • update.json: jsDelivrが自動で登録・更新してくれるので、作ったほうが良い。
  • バージョンタグを付けたリリース: (GitHubで公開している場合)

手順

私の場合、推奨されている「Web Interface (Recommended)」の手順ではどうもうまくいかなかったので、「Advanced」の手順を採りました。


1. minファイルを作成し、バージョンタグを付ける

ファイルの最小化は、下記を利用すればいいと思います。

タグは、GitかGitHubで付けます。

Gitの場合
git tag 1.0.0
git push --tags
GitHubの場合


2. jsdelivrをフォークする

Forkボタンを押すだけで完了です。


3. info.iniを作成する

フォークしたレポジトリのfile/の下に新たにフォルダを作るため、+をクリックします。

パッケージ名の後に/(スラッシュ)を入力すれば、自動で階層化してくれます。

私のinfo.iniは以下のように書きました。

author = "Yuusaku Miyazaki"
github = "https://github.com/sutara79/jquery.add-input-area"
homepage = "http://www.usamimi.info/~sutara/sample/add-input-area"
description = "jQuery plugin for adding or deleting Form elements."
mainfile = "jquery.add-input-area.min.js"

4. update.jsonを作成する

「info.ini」と同じ階層で新たにファイルを作成します。

私のupdate.jsonは以下のように書きました。

{
  "packageManager": "github",
  "name": "jquery.add-input-area",
  "repo": "sutara79/jquery.add-input-area",
  "files": {
    "include": [
      "jquery.add-input-area.min.js"
    ]
  }
}

注意: includeのファイルはプロジェクトのルートからのパスで記述します。
ファイルが全て共通のサブディレクトリ内にあるなら、別途basePathを設定するのも手です。


5. プルリクエストを送る

下記の画像の通りに進めていきます。

本家と比べて、どのファイルをプルリクエストすべきなのかを自動で選んでくれます。


6. 完了

これで完了です。
jsdelivr/files/jquery.add-input-area/には他にバージョン番号が名前となったフォルダがありますが、これはjsDelivrが自動で作成したものです。
登録が完了したら、notifications@github.comから通知が届きます。


うまくいかないときは

登録に失敗した場合も何らかの通知が届きます。
それに従って修正すればいいでしょう。

実は、私はminファイルを作ってコミットしたものの、それにタグを付け忘れていました。
jsDelivrが古いバージョンを登録しようとして、それにはminファイルが含まれていなかったのでエラーとなりました。
新たにタグを付けてそれをjsDelivrに報告したら、あちらの方が手動でマージしてくださったようです。
お手数かけました…orz


感想

自分のミスのせいでかなり時間がかかったものの、手続き自体はとても簡単です。
公式サイトの説明を読むと、どうやら自前でサーバを用意しているわけではなく、有名な既存のCDNをいくつか組み合わせて運営しているようです。
その中にはjQuery本家がCDNの設置先として使っているMaxCDNも含まれていますし、自身のプログラムの配信だけでなく、jsDelivrに登録されている他のパッケージの利用についても安心できそうだと感じました。