web-dev-qa-db-fra.com

Comment lier des fichiers directement à partir de Github (raw.github.com)

Sommes-nous autorisés à lier des fichiers directement à partir de Github?

<link rel="stylesheet" href="https://raw.github.com/username/project/master/style.css"/>
<script src="https://raw.github.com/username/project/master/script.js"></script>

Je sais que cela est autorisé sur Google Code. De cette façon, je n'ai pas à m'inquiéter de la mise à jour d'un fichier local.

48
anjanesh

bien sûr pourquoi pas? Il est même mis à jour sauf si quelqu'un change l'historique dans git et force un Push.

1
three

Vous pouvez utiliser un serveur externe rawgithub.com. Supprimez simplement un point entre les mots 'raw' et 'github' https://raw.github.com/ .. => https://rawgithub.com/ et utilisez-le. Plus d'informations que vous trouverez dans cette question.

42
AuthorProxy

Le grand service RawGit a déjà été mentionné, mais je vais en lancer un autre: GitCDN.link

Avantages: 

  • Vous permet de créer des liens vers des commits spécifiques, ainsi que d’obtenir automatiquement la dernière (aka maître)
  • Ne subit aucun dommage en raison des volumes de trafic élevés; RawGit demande que ses liens dev.rawgit.com ne soient utilisés que pendant le développement, où GitCDN vous donne accès à la dernière version sans risque d'explosion des serveurs
  • Donnez-vous la possibilité de personnaliser automatiquement votre HTML, CSS et JavaScript, ou de le servir comme écrit ( https://min.gitcdn.link ).
  • Ajoute la compression (GZip)
  • Ajoute tous les en-têtes appropriés (type de contenu, contrôle de cache, balise électronique, etc.)

Divulgation complète, je suis responsable de projet sur GitCDN.link

41
Shane Gadsby

Vous devez effectuer les étapes suivantes

  1. Obtenez l'URL brute du fichier auprès de github. Ce qui est quelque chose comme https://raw.githubusercontent.com/username/folder/example.css

  2. Visitez http://rawgit.com/ . Collez l'URL git ci-dessus dans la zone de saisie. Il générera deux URL, une pour le développement et l'autre pour la production.

  3. Copiez n'importe lequel d'entre eux et vous avez terminé.

Le fichier agira comme un CDN. Vous pouvez également utiliser des urls Gist.

13
Nitesh

Vous pouvez créer un lien direct vers des fichiers bruts, mais il est préférable de ne pas le faire car les fichiers bruts sont toujours envoyés avec un en-tête texte/texte et peuvent entraîner des problèmes de chargement.

12
Benjamin Intal

Branchez votre projet en utilisant le nom "gh-pages", puis vous pourrez (peu après la création de branche) utiliser une URL directe telle que https://username.github.com/project/master/style.css (en utilisant votre URL et en supposant que "style.css" est un fichier du dossier "master" de la racine de votre référentiel "project" ... et que votre compte Github est "username").

6
Jeff Warren

Pages GitHub: https://yourusername.github.io/script.js
Fichiers bruts de repo GitHub: https://github.com/yourusername/yourusername.github.io/blob/master/script.js

Utilisez GitHub Pages, NE PAS utiliser des fichiers bruts.

Raison: Les pages GitHub sont basées sur un CDN, pas les fichiers bruts. L'accès aux fichiers bruts se fera directement sur les serveurs GitHub et augmentera la charge du serveur.

1
Sista Fiolen

Après avoir recherché cette même fonctionnalité, j'ai fini par écrire mon propre script PHP pour agir en tant que proxy. Le problème que je rencontrais toujours est que même lorsque vous obtenez la version/le lien RAW de Github et le lien vers votre page, l'en-tête envoyé était 'text/plain' et Chrome n'exécutait pas mon fichier JavaScript de Github. Je n'ai pas non plus aimé les autres liens publiés sur l'utilisation de services tiers en raison des problèmes évidents de sécurité/altération possibles.

Donc, en utilisant ce script, je peux passer le lien RAW de Github, lui demander de définir les en-têtes appropriés, puis de générer le fichier comme s'il venait de mon propre serveur. Ce script peut également être utilisé avec une application sécurisée pour extraire des scripts non sécurisés sans générer d'erreurs SSL, mettant en garde de "Liens non sécurisés utilisés".

Mise en relation:

<script src = "proxy.php? link = https://raw.githubusercontent.com/NomUtilisateur/repo/master/my_script.js "> </ script>

proxy.php

<?php
###################################################################################################################
# 
# This script can take two URL variables
# 
# "type"
#   OPTIONAL
#   STRING
#   Sets the type of file that is output
# 
# "link"
#   REQUIRED
#   STRING
#   The link to grab and output through this proxy script
# 
###################################################################################################################



# First we need to set the headers for the output file
# So check to see if the type is specified first and if so, then set according to what is being requested
if(isset($_GET['type']) && $_GET['type'] != ''){
    switch($_GET['type']){
        case 'css':
            header('Content-Type: text/css');
            break;

        case 'js':
            header('Content-Type: text/javascript');
            break;

        case 'json':
            header('Content-Type: application/json');
            break;

        case 'rss':
            header('Content-Type: application/rss+xml; charset=ISO-8859-1');
            break;

        case 'xml':
            header('Content-Type: text/xml');
            break;

        default:
            header('Content-Type: text/plain');
            break;
    }

# Otherwise, try and determine what file type should be output by the file extension from the link
}else{
    # See if we can find a file type in the link specified and set the headers accordingly

    # If css file extension is found, then set the headers to css format
    if(strstr($_GET['link'], '.css') != FALSE){
        header('Content-Type: text/css');

    # If javascript file extension is found, then set the headers to javascript format
    }elseif(strstr($_GET['link'], '.js') != FALSE){
        header('Content-Type: text/javascript');

    # If json file extension is found, then set the headers to json format
    }elseif(strstr($_GET['link'], '.json') != FALSE){
        header('Content-Type: application/json');

    # If rss file extension is found, then set the headers to rss format
    }elseif(strstr($_GET['link'], '.rss') != FALSE){
        header('Content-Type: application/rss+xml; charset=ISO-8859-1');

    # If css xml extension is found, then set the headers to xml format
    }elseif(strstr($_GET['link'], '.xml') != FALSE){
        header('Content-Type: text/xml');

    # If we still haven't found a suitable file extension, then just set the headers to plain text format
    }else{
        header('Content-Type: text/plain');
    }
}

# Now get the contents of our page we're wanting
$contents = file_get_contents($_GET['link']);

# And finally, spit everything out
echo $contents;
?>

Si allow_url_include est activé sur votre serveur Web, GitHub servant les fichiers en tant que texte brut/texte n'est pas un problème, car vous pouvez d'abord inclure le fichier dans un script PHP et modifier ses en-têtes dans le type MIME approprié.

0
Khayri R.R. Woulfe