GitHub Pages ist die offizielle Lösung von GitHub für dieses Problem.
raw.githubusercontent
sorgt dafür, dass alle Dateien den MIME-Typ text/plain
verwenden, auch wenn es sich um eine CSS- oder JavaScript-Datei handelt. Wenn Sie also zu https://raw.githubusercontent.com/‹user›/‹repo›/‹branch›/‹filepath›
gehen, handelt es sich nicht um den richtigen MIME-Typ, sondern um eine Klartextdatei, und das Verlinken über oder funktioniert nicht - das CSS wird nicht angewendet / das JS wird nicht ausgeführt.
GitHub Pages hostet Ihr Repo unter einer speziellen URL, sodass Sie nur Ihre Dateien einchecken und pushen müssen. Beachten Sie, dass Github Pages in den meisten Fällen erfordert, dass Sie sich auf einen speziellen Branch, gh-pages
, festlegen.
Auf Ihrer neuen Website, die normalerweise https://‹user›.github.io/‹repo›
ist, wird jede in den gh-pages
-Branch eingecheckte Datei (der aktuellste Commit) unter dieser URL angezeigt. Sie können also Ihre JS-Datei über verlinken, und dies wird der richtige MIME-Typ sein.
Haben Sie Build-Dateien?
Persönlich empfehle ich, diesen Branch parallel zu master
laufen zu lassen. Im gh-pages
-Branch können Sie Ihre .gitignore
-Datei bearbeiten, um alle Dist-/Build-Dateien einzuchecken, die Sie für Ihre Website benötigen (z.B. wenn Sie irgendwelche minifizierten/kompilierten Dateien haben), während Sie sie auf Ihrem master
-Branch weiterhin ignorieren. Dies ist nützlich, da Sie in der Regel keine Änderungen an Build-Dateien in Ihrem regulären Repo verfolgen möchten. Jedes Mal, wenn Sie Ihre gehosteten Dateien aktualisieren möchten, mergen Sie einfach master
in gh-pages
, bauen, commiten und pushen dann.
(Profi-Tipp: Sie können mergen und neu aufbauen in demselben Commit mit folgenden Schritten:)
$ git checkout gh-pages
$ git merge --no-ff --no-commit master # Bereiten Sie den Merge vor, commiten Sie ihn aber nicht (als ob es einen Merge-Konflikt gäbe)
$ npm run build # (oder was auch immer Ihr Build-Prozess ist)
$ git add . # Stagen der neu erstellten Dateien
$ git merge --continue # Commit des Merges
$ git push origin gh-pages