web-dev-qa-db-ja.com

raw.github.comからのjsを含める

https://raw.github.com/.../master/.../file.jsにリンクしているgithub.comデモページがあるので、変更するたびに、常に.jsファイルをgh-pagesブランチにコピーする必要はありません。これは、IEを除くすべてのブラウザで機能します。

SEC7112: https://raw.github.com/cwolves/jQuery-iMask/master/dist/jquery-imask-min.js からのスクリプトは、MIMEタイプの不一致によりブロックされました

この不満は、ファイルが次のように転送されたという事実から生じています。

X-Content-Type-Options: nosniff
Content-Type: text/plain

変更できません。

誰もがこれと同じことを達成する方法を考えていますか?どういうわけか、常にgh-pagesブランチにプッシュする必要なく、masterブランチ内のファイルにリンクすることができますか?

実際のページ: http://cwolves.github.com/jQuery-iMask/

(マイナーアップデート-この正確なインスタンスでgh-pagesを変更して.jsファイルを含めたので、IEはもう壊れていませんが、フィードバックが必要です:))

55
Mark Kahn

私はIEをだますのを手伝うことはできません、そして私はその角度からあなたが探しているものは不可能だと思います(そしてそれはGithubの生のURLの目的ではないのでお勧めしません)。

ただし、gh-pagesへの変更のコミットとプッシュを自動化して、作業を簡単にすることができます。 post-commit hookを使用すると、gh-pagesブランチの関連ファイルを自動的に更新できます。特定のファイルへの変更を監視し、それらを別のブランチにコミットするようなpost-commitスクリプトを作成しました。

#!/bin/sh

WATCH_BRANCH="master"
WATCH_FILES="jquery-imask-min.js"
DEST_BRANCH="gh-pages"

# bail out if this commit wasn't made in the watched branch
THIS_BRANCH=$(git branch --no-color | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/');
if [ "$THIS_BRANCH" != "$WATCH_BRANCH" ]; then
  exit 0
fi

# only update if watched files have changed in the latest commit
CHANGED_FILES=$(git show --pretty="format:" --name-only $WATCH_BRANCH)
if $(echo "$CHANGED_FILES" | grep "^$WATCH_FILES$" -q); then
  # checkout destination branch, then
  # checkout latest version of each watched file and add to index
  git checkout -q $DEST_BRANCH
  git pull -q
  SAVEIFS=$IFS
  IFS=$(echo -n "|")
  for file in $WATCH_FILES; do
    git checkout $WATCH_BRANCH -- $file
    git add $file > /dev/null
  done
  IFS=$SAVEIFS
  # commit with a chance to edit the message, then go back to watched branch
  LATEST_COMMIT=$(git rev-parse $WATCH_BRANCH)
  git commit -m "Also including changes from $WATCH_BRANCH's $LATEST_COMMIT"
  git Push Origin $DEST_BRANCH
  git checkout -q $WATCH_BRANCH
fi

これは一般的なスクリプトですが、目的のために上部に構成変数を指定しています。 $WATCH_FILESは、|のように、中括弧index.html|js/jquery.jsで区切られたファイルのリストに設定できます。リポジトリのルートからの相対パスを指定する必要があります。

ご不明な点がありましたら、またスクリプトが役に立ちますか?

14
shelhamer

https://rawgit.com/ サービスを使用してみてください。 raw.github.comをrawgit.comに置き換えるだけです

[〜#〜]更新[〜#〜]

Rawgitサービス(以前のRawgithub)はシャットダウンされました。

RawGitの耐用年数が終了しました2018年10月8日

先月中にRawGitを介してコンテンツを提供したGitHubリポジトリは、少なくとも2019年10月まで提供され続けます。他のリポジトリのURLは提供されなくなります。

現在RawGitを使用している場合は、できるだけ早く使用を中止してください。

62
H Sampat

raw.githack.com を見てください。このサービスのアイデアは、rawgit.comから発想を得たものです。リクエストプロキシのような単純なものにフレームワーク全体(node.js + express.js)を使用するのはやり過ぎであり、nginxのみを使用して同じものを作成することに気づきました。

Github/Gist URLの「githubusercontent」ドメイン名チャンクを「githack」に置き換えれば完了です。

さらに、それは bitbucket.com をサポートします-bitbucketドメイン全体をbb.githack.com

7
neoascetic

Githubの未加工URLは、一般的なWebホストとして設計されていません。たとえば、pages.github.comのように、これらを適切なホストにプッシュします。

6
Tekkub

私もこれを達成しようとしています。しかし、@ shelhamerからコードベースで機能するようにソリューションを取得できないようです。以下は、私がそれを機能させるために使用した更新後のコミットフックスクリプトです。

#!/bin/sh

WATCH_BRANCH="master"
WATCH_FILES="jquery-imask-min.js"
DEST_BRANCH="gh-pages"

# bail out if this commit wasn't made in the watched branch
THIS_BRANCH=$(git branch --no-color | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/');
if [ "$THIS_BRANCH" != "$WATCH_BRANCH" ]; then
  exit 0
fi

# only update if watched files have changed in the latest commit
CHANGED_FILES=$(git show --pretty="format:" --name-only $WATCH_BRANCH)
if $(echo "$CHANGED_FILES" | grep "^$WATCH_FILES$" -q); then
  # checkout destination branch, then
  # checkout latest version of each watched file and add to index
  git checkout -q $DEST_BRANCH
  git pull -q
  SAVEIFS=$IFS
  IFS=$(echo -n "|")
  for file in $WATCH_FILES; do
    git checkout $WATCH_BRANCH -- $file
    git add $file > /dev/null
  done
  IFS=$SAVEIFS
  # commit with a chance to edit the message, then go back to watched branch
  LATEST_COMMIT=$(git rev-parse $WATCH_BRANCH)
  git commit -m "Also including changes from $WATCH_BRANCH's $LATEST_COMMIT"
  git Push Origin $DEST_BRANCH
  git checkout -q $WATCH_BRANCH
fi

正規表現を正常に一致させるには、grepの使用を更新する必要がありました(-Pは、Git Bash Shell for Windowsに含まれるgrep実装のオプションではありませんでした)、git pullgit Push Origin $DEST_BRANCHを追加します。ああ、私はディレクトリとファイルの空のシェルを事前に追加する必要がありました(おそらくディレクトリだけで十分でしょうか?)。

これは実際にはプッシュを実行しているので、このスクリプトをポストコミットではなくポスト受信スクリプトに切り替える方が良いと思います。それ以外の場合は、マスターにしたことのないghページにコードをプッシュする可能性があります(プッシュしないことを選択した場合)。

0
James M. Greene